diff --git a/.github/ISSUE_TEMPLATE/release-free-plugin.md b/.github/ISSUE_TEMPLATE/release-free-plugin.md index 79d55ddc0..f06c81bb5 100644 --- a/.github/ISSUE_TEMPLATE/release-free-plugin.md +++ b/.github/ISSUE_TEMPLATE/release-free-plugin.md @@ -10,20 +10,20 @@ To release the Free plugin, ensure you complete all the tasks below. ### Pre-release Checklist -- [ ] Create the release branch as `release-` based on the development branch. -- [ ] Review and merge all the relevant Pull Requests into the release branch. -- [ ] Update the version number in the main plugin file and `readme.txt`, adhering to specifications from our [tech documentation](https://rambleventures.slab.com/posts/version-numbers-58nmrk4b), and commit to the release branch. +- [ ] Create the release branch as `release-` from the development branch. +- [ ] Review and merge all relevant Pull Requests into the release branch. +- [ ] Update the version number in the main plugin file and `readme.txt` (stable version) per [tech documentation](https://rambleventures.slab.com/posts/version-numbers-58nmrk4b), and commit to the release branch. - [ ] Start a dev-workspace session. -- [ ] Run `composer update` (updating the root and lib vendors). -- [ ] Review the updated packages. Mention any production library updates in the changelog. -- [ ] Inspect GitHub's Dependabot warnings or Pull Requests for relevant issues. Resolve any false positives first, then fix and commit the remaining issues. -- [ ] If necessary, build JS files for production using `composer build:js` and commit the changes. +- [ ] Run `composer update` (updating root and lib vendors). +- [ ] Review updated packages and mention any production library updates in the changelog. +- [ ] Inspect GitHub’s Dependabot warnings or Pull Requests. Resolve any false positives, then fix and commit the remaining issues. +- [ ] If needed, build JS files for production using `composer build:js` and commit changes. +- [ ] Run `composer build:dir` to prepare the plugin for quality checks. - [ ] Run a WP VIP scan with `composer check:phpcs` to ensure no warnings or errors greater than 5 exist. -- [ ] Update the `.pot` file executing `composer gen:pot` and include a note in the changelog. -- [ ] Update the `.mo` files executing `composer gen:mo` and include a note in the changelog. -- [ ] Especially for minor and patch releases, maintain backward compatibility for changes like renamed or moved classes, namespaces, functions, etc. Include deprecation comments and mention this in the changelog. Major releases may remove deprecated code, but always note this in the changelog. -- [ ] Update the changelog - make sure all the changes are there with a user-friendly description and that the release date is correct. -- [ ] Revise the changelog to include all changes with user-friendly descriptions and ensure the release date is accurate. +- [ ] Update the language files with `composer gen:lang` and note this in the changelog. +- [ ] For minor and patch releases, maintain backward compatibility (e.g., renamed or moved classes, namespaces, functions). Include deprecation comments and note this in the changelog. Major releases may remove deprecated code; always note this in the changelog. +- [ ] Update the changelog in `/CHANGELOG.md` with a user-friendly description and correct release date. +- [ ] Update the changelog in `readme.txt`, maintaining records of the last 4-5 releases only. - [ ] Confirm there are no uncommitted changes. - [ ] Build the zip package with `composer build`, creating a new package in the `./dist` directory. - [ ] Distribute the new package to the team for testing. diff --git a/.github/ISSUE_TEMPLATE/release-pro-plugin.md b/.github/ISSUE_TEMPLATE/release-pro-plugin.md index 4561e5a9d..9ab48a8eb 100644 --- a/.github/ISSUE_TEMPLATE/release-pro-plugin.md +++ b/.github/ISSUE_TEMPLATE/release-pro-plugin.md @@ -10,21 +10,23 @@ To release the Pro plugin, ensure you complete all the tasks below. ### Pre-release Checklist -- [ ] Create a release branch named `release-` from the development branch. +- [ ] Create the release branch as `release-` from the development branch. - [ ] Review and merge all relevant Pull Requests into the release branch. -- [ ] Start a dev-workspace session. +- [ ] Update the version number in the main plugin file and `readme.txt` (stable version) per [tech documentation](https://rambleventures.slab.com/posts/version-numbers-58nmrk4b), and commit to the release branch. - [ ] Verify the correct version of the free plugin is referenced in the `lib/composer.json` file. Prefer stable versions. -- [ ] Execute `composer update` to update the root and lib vendors. -- [ ] Review the updated packages and mention any production library updates in the changelog. +- [ ] Start a dev-workspace session. +- [ ] Run `composer update` (updating root and lib vendors). +- [ ] Review updated packages and mention any production library updates in the changelog. - [ ] Check if all dependencies are synced from Free into the Pro plugin with `composer check:deps`. If required, merge dependencies using `composer fix:deps` and run `composer update` again. - [ ] Check if the free plugin uses Composer's autoload and copy the autoload definition from the free plugin to the pro plugin refactoring the relative paths, on `/lib/composer.json`. Execute `composer dumpautoload` to update the autoload files. Commit the changes. -- [ ] Inspect GitHub's Dependabot warnings or Pull Requests for relevant issues. Resolve any false positives first, then fix and commit the remaining issues. -- [ ] If necessary, build JS files for production using `composer build:js` and commit the changes. +- [ ] Inspect GitHub’s Dependabot warnings or Pull Requests. Resolve any false positives, then fix and commit the remaining issues. +- [ ] If needed, build JS files for production using `composer build:js` and commit changes. +- [ ] Run `composer build:dir` to prepare the plugin for quality checks. - [ ] Run a WP VIP scan with `composer check:phpcs` to ensure no warnings or errors greater than 5 exist. -- [ ] Update the `.pot` file executing `composer gen:pot` and include a note in the changelog. -- [ ] Especially for minor and patch releases, maintain backward compatibility for changes like renamed or moved classes, namespaces, functions, etc. Include deprecation comments and mention this in the changelog. Major releases may remove deprecated code, but always note this in the changelog. -- [ ] Revise the changelog to include all changes with user-friendly descriptions and ensure the release date is accurate. -- [ ] Update the version number in the main plugin file and `readme.txt`, adhering to specifications from our [tech documentation](https://rambleventures.slab.com/posts/version-numbers-58nmrk4b), and commit to the release branch. +- [ ] Update the language files with `composer gen:lang` and note this in the changelog. +- [ ] For minor and patch releases, maintain backward compatibility (e.g., renamed or moved classes, namespaces, functions). Include deprecation comments and note this in the changelog. Major releases may remove deprecated code; always note this in the changelog. +- [ ] Update the changelog in `/CHANGELOG.md` with a user-friendly description and correct release date. +- [ ] Update the changelog in `readme.txt`, maintaining records of the last 4-5 releases only. - [ ] Confirm there are no uncommitted changes. - [ ] Build the zip package with `composer build`, creating a new package in the `./dist` directory. - [ ] Distribute the new package to the team for testing. diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c5aaf606..7ed807fbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,27 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). += [3.4.0] - 20 Jun, 2024 = + +* ADDED: In the JS context, implemented a way to extend the future action panel using SlotFill `FutureActionPanelAfterActionField` and setting extra fields to the panel, right after the action field; +* ADDED: Add a new filter to allow filtering the options of the future action being scheduled: `publishpressfuture_prepare_post_expiration_opts`; +* ADDED: Add method `scheduleRecurringAction` to the `CronToWooActionSchedulerAdapter` to schedule recurring action; +* ADDED: Add method `scheduleAsyncAction` to the `CronToWooActionSchedulerAdapter` to schedule async action; +* ADDED: In the JS context, added the slot `FutureActionPanelTop` to the beginning of the future panel; +* CHANGED: Added `$unique` and `$priority` arguments to the `scheduleSingleAction` method in the `CronToWooActionSchedulerAdapter` class; +* CHANGED: Method `scheduleRecurringAction` renamed to `scheduleRecurringActionInSeconds` in the `CronToWooActionSchedulerAdapter` class; +* CHANGED: Added argument `$clearOnlyPendingActions` to the method signature `clearScheduledAction` to the `CronInterface` interface; +* CHANGED: Changed the method `clearScheduledAction` in the class `CronToWooActionSchedulerAdapter` adding new argument `$clearOnlyPendingActions`, allowing to remove running actions; +* CHANGED: The plugin activation and deactivation callback functions were moved from the main file to independent files; +* CHANGED: Change the admin menu names for clarity; +* CHANGED: Update the promo sidebar for mentioning the Actions Workflow feature; +* FIXED: Fix error when quick-edit data is not available, #730; +* FIXED: Fix dependency of the enqueued scripts for the future action box. Add 'wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities', 'wp-plugins' as dependencies; +* FIXED: Updated ES, FR and IT translations, #698; +* FIXED: Redirects to the settings page after activating the plugin, #764; +* FIXED: Fix access to the View Debug settings tab when debug is disabled; +* FIXED: Fix the position of the "Upgrade to Pro" and "Settings" menu items in the admin bar; + = [3.3.1] - 19 Mar, 2024 = * ADDED: Add validation for the date and time offset in the settings page, #683; diff --git a/assets/js/block-editor.js b/assets/js/block-editor.js index ee7a82e5e..cc01463e5 100644 --- a/assets/js/block-editor.js +++ b/assets/js/block-editor.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t,n,a,r,o,i={694:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},561:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(610),r=n(537);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},730:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(500),r=n(537);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},409:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(37),i=n(76),l=wp.components,u=l.PanelRow,s=l.CheckboxControl,c=l.SelectControl,m=l.FormTokenField,d=l.Spinner,p=l.BaseControl,f=wp.element,y=f.Fragment,g=f.useEffect,b=f.useState,v=wp.htmlEntities.decodeEntities,S=wp.url.addQueryArgs,E=wp.data,h=E.useSelect,_=E.useDispatch,T=wp.apiFetch;t.FutureActionPanel=function(e){var t=h((function(t){return t(e.storeName).getAction()}),[]),n=h((function(t){return t(e.storeName).getDate()}),[]),l=h((function(t){return t(e.storeName).getEnabled()}),[]),f=h((function(t){return t(e.storeName).getTerms()}),[]),E=h((function(t){return t(e.storeName).getTaxonomy()}),[]),x=h((function(t){return t(e.storeName).getTaxonomyName()}),[]),N=h((function(t){return t(e.storeName).getTermsListByName()}),[]),R=h((function(t){return t(e.storeName).getTermsListById()}),[]),C=h((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),w=h((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),O=h((function(t){return t(e.storeName).getHasValidData()}),[]),P=h((function(t){return t(e.storeName).getNewStatus()}),[]),A=b(""),D=r(A,2),k=D[0],I=D[1],F=_(e.storeName),j=F.setAction,B=F.setDate,L=F.setEnabled,M=F.setTerms,V=F.setTaxonomy,H=F.setTermsListByName,W=F.setTermsListById,U=F.setTaxonomyName,Q=F.setIsFetchingTerms,q=F.setCalendarIsVisible,Y=F.setHasValidData,z=F.setNewStatus,G=function(e){N[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:E},R[e]=e,H(N),W(R),M([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&R&&($=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return R[e]}))}(f)),"string"==typeof $&&($=[]));var ee=[];"object"===(void 0===N?"undefined":a(N))&&null!==N&&(ee=Object.keys(N));var te,ne=w?"future-action-panel":"future-action-panel hidden-calendar",ae=w?"future-action-panel-content":"future-action-panel-content hidden-calendar",re=w?"future-action-date-panel":"future-action-date-panel hidden-calendar";te="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var oe=e.actionsSelectOptions;e.taxonomy||(oe=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var ie=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var s,c=a[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var m=s.value.split("}"),d=r(m,2),p=d[0],f=d[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&c.return&&c.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),le=String(t).includes("category")&&"category-remove-all"!==t,ue=x;switch(t){case"category":ue=e.strings.newTerms.replace("%s",x);break;case"category-remove":ue=e.strings.removeTerms.replace("%s",x);break;case"category-add":ue=e.strings.addTerms.replace("%s",x)}return g((function(){if(!l)return Y(!0),void I("");Y(function(){var a=!0;if(!l)return I(""),!0;t||(I(e.strings.errorActionRequired),a=!1),n||(I(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),s=o("core/editor"),c=s.lockPostSaving,m=s.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var s=i.value,c=a(s,2),m=c[0],d=c[1];t.publishpress_future_action[m]=d}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){m("future-action")},onDataIsInvalid:function(){c("future-action")}})))}},27:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(37);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,s=n((function(t){return t(e.storeName).getDate()}),[]),c=n((function(t){return t(e.storeName).getEnabled()}),[]),m=n((function(t){return t(e.storeName).getAction()}),[]),d=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=p;"object"===(void 0===p?"undefined":a(p))&&(v=p.join(","));var S=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:S,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:m,newStatus:d,date:s,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:c?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:s}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},21:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(352),r=n(284);n(610),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},990:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(284);n(610),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),s=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),c=l;return"object"===(void 0===l?"undefined":a(l))&&(c=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:s,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},549:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(610);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},406:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352),o=n(610),i=n(368),l=n(882),u=n(998),s=wp.components,c=s.PanelRow,m=s.BaseControl,d=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),s=a(n,2),p=s[0],f=s[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],S=(0,o.useState)(!1),E=a(S,2),h=E[0],_=E[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],C=(0,o.useState)(e.settings.howToExpire),w=a(C,2),O=w[0],P=w[1],A=(0,o.useState)(e.settings.active),D=a(A,2),k=D[0],I=D[1],F=(0,o.useState)(e.settings.defaultExpireOffset),j=a(F,2),B=j[0],L=j[1],M=(0,o.useState)(e.settings.emailNotification),V=a(M,2),H=V[0],W=V[1],U=(0,o.useState)(e.settings.autoEnabled),Q=a(U,2),q=Q[0],Y=Q[1],z=(0,o.useState)(!1),G=a(z,2),X=G[0],J=G[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],se=(0,o.useState)(e.settings.newStatus),ce=a(se,2),me=ce[0],de=ce[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],be=(0,o.useState)(""),ve=a(be,2),Se=ve[0],Ee=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){J(function(){if(!k)return ee(""),!0;if(B){d&&d.abort();var e=(d="undefined"==typeof AbortController?void 0:new AbortController)?d.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Ee(e.preview):Ee("")}))}return ee(""),!0}())}),[k,p,N,O,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){X&&e.onDataIsValid&&e.onDataIsValid(e.postType),!X&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[X]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:k||!1,label:e.text.fieldActiveLabel,onChange:function(e){I(e)}}))];return k&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){Y(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:O,onChange:function(e){P(e)}}),"change-status"===O&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:me,onChange:de}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(O)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){L(e)}}),Se&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Se)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,k,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!X&&React.createElement(c,null,React.createElement(m,{className:"notice notice-error"},React.createElement("div",null,$))))}},438:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,c=a(s,2),m=c[0],d=c[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:d.label,text:e.text,postType:m,settings:d,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[m],statusesList:e.statusesList[m],key:m+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},182:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(610),r=n(537);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},97:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(610),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},248:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},65:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},56:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(610);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},181:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},774:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},236:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(610),r=n(537),o=n(352);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},28:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(537);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},76:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(28),r=n(730),o=n(610);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,s=e.is12Hour,c=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:s,startOfWeek:c}))}},303:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(610),o=n(537);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},366:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},352:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(694);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(409);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(738);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(21);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(990);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(27);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var s=n(406);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return s.PostTypeSettingsPanel}});var c=n(438);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return c.PostTypesSettingsPanels}});var m=n(97);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return m.SettingRow}});var d=n(248);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return d.SettingsFieldset}});var p=n(65);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(56);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(54);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(774);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(561);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(182);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var S=n(236);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return S.TextControl}});var E=n(303);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return E.TokensControl}});var h=n(549);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(366);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(181);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},91:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,n=arguments[1];switch(n.type){case"SET_ACTION":return a({},e,{action:n.action});case"SET_NEW_STATUS":return a({},e,{newStatus:n.newStatus});case"SET_DATE":return"number"!=typeof n.date&&(0,o.isNumber)(n.date)&&(n.date=parseInt(n.date)),"string"==typeof n.date&&(n.date=new Date(n.date).getTime()),n.date=(0,r.normalizeUnixTimeToSeconds)(n.date),n.date=(0,r.formatUnixTimeToTimestamp)(n.date),a({},e,{date:n.date});case"SET_ENABLED":return a({},e,{enabled:n.enabled});case"SET_TERMS":return a({},e,{terms:n.terms});case"SET_TAXONOMY":return a({},e,{taxonomy:n.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},e,{termsListByName:n.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},e,{termsListById:n.termsListById});case"SET_TAXONOMY_NAME":return a({},e,{taxonomyName:n.taxonomyName});case"SET_CHANGE_ACTION":return a({},e,{changeAction:n.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},e,{calendarIsVisible:n.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},e,{hasValidData:n.hasValidData})}return e},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData}}});return(0,i.register)(n),n}},500:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},37:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=publishpressFutureBlockEditorConfig},998:e=>{e.exports=wp},537:e=>{e.exports=wp.components},284:e=>{e.exports=wp.data},610:e=>{e.exports=wp.element},882:e=>{e.exports=wp.hooks},398:e=>{e.exports=wp.plugins},368:e=>{e.exports=wp.url}},l={};function u(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}};return i[e](n,n.exports,u),n.exports}e=u(91),t=u(352),n=u(284),a=u(398),r=u(613),o="publishpress-future/future-action",(0,e.createStore)({name:o,defaultState:{autoEnable:r.postTypeDefaultConfig.autoEnable,action:r.postTypeDefaultConfig.expireType,newStatus:r.postTypeDefaultConfig.newStatus,date:r.defaultDate,taxonomy:r.postTypeDefaultConfig.taxonomy,terms:r.postTypeDefaultConfig.terms}}),(0,a.registerPlugin)("publishpress-future-action",{render:function(){return React.createElement(t.FutureActionPanelBlockEditor,{postType:(0,n.select)("core/editor").getCurrentPostType(),isCleanNewPost:(0,n.select)("core/editor").isCleanNewPost(),actionsSelectOptions:r.actionsSelectOptions,statusesSelectOptions:r.statusesSelectOptions,is12Hour:r.is12Hour,timeFormat:r.timeFormat,startOfWeek:r.startOfWeek,storeName:o,strings:r.strings,taxonomyName:r.taxonomyName,postTypeDefaultConfig:r.postTypeDefaultConfig})}})})(); +(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},311:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(386),r=n(214);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},620:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(39),r=n(214);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},418:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(409),i=n(873),l=n(986),u=n(214),c=n(61),s=n(625),m=wp.components,d=m.PanelRow,f=m.CheckboxControl,p=m.SelectControl,y=m.FormTokenField,g=m.Spinner,b=m.BaseControl,v=wp.element,E=v.Fragment,S=v.useEffect,h=v.useState,_=wp.htmlEntities.decodeEntities,T=wp.url.addQueryArgs,x=wp.data,N=x.useSelect,R=x.useDispatch,A=wp.apiFetch;t.FutureActionPanel=function(e){var t=N((function(t){return t(e.storeName).getAction()}),[]),n=N((function(t){return t(e.storeName).getDate()}),[]),m=N((function(t){return t(e.storeName).getEnabled()}),[]),v=N((function(t){return t(e.storeName).getTerms()}),[]),x=N((function(t){return t(e.storeName).getTaxonomy()}),[]),C=N((function(t){return t(e.storeName).getTaxonomyName()}),[]),P=N((function(t){return t(e.storeName).getTermsListByName()}),[]),w=N((function(t){return t(e.storeName).getTermsListById()}),[]),O=N((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),D=N((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),F=N((function(t){return t(e.storeName).getHasValidData()}),[]),k=N((function(t){return t(e.storeName).getNewStatus()}),[]),I=h(""),j=r(I,2),B=j[0],M=j[1],L=R(e.storeName),V=L.setAction,H=L.setDate,W=L.setEnabled,U=L.setTerms,Q=L.setTaxonomy,Y=L.setTermsListByName,q=L.setTermsListById,X=L.setTaxonomyName,z=L.setIsFetchingTerms,G=L.setCalendarIsVisible,J=L.setHasValidData,K=L.setNewStatus,Z=function(e){P[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:x},w[e]=e,Y(P),q(w),U([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&w&&(ae=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return w[e]}))}(v)),"string"==typeof ae&&(ae=[]));var re=[];"object"===(void 0===P?"undefined":a(P))&&null!==P&&(re=Object.keys(P));var oe,ie=D?"future-action-panel":"future-action-panel hidden-calendar",le=D?"future-action-panel-content":"future-action-panel-content hidden-calendar",ue=D?"future-action-date-panel":"future-action-date-panel hidden-calendar";oe="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var ce=e.actionsSelectOptions;e.taxonomy||(ce=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var se=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var c,s=a[Symbol.iterator]();!(i=(c=s.next()).done);i=!0){var m=c.value.split("}"),d=r(m,2),f=d[0],p=d[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},f)),o.push(p)}}catch(e){l=!0,u=e}finally{try{!i&&s.return&&s.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),me=String(t).includes("category")&&"category-remove-all"!==t,de=C;switch(t){case"category":de=e.strings.newTerms.replace("%s",C);break;case"category-remove":de=e.strings.removeTerms.replace("%s",C);break;case"category-add":de=e.strings.addTerms.replace("%s",C)}return S((function(){if(!m)return J(!0),void M("");J(function(){var a=!0;if(!m)return M(""),!0;t||(M(e.strings.errorActionRequired),a=!1),n||(M(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelAfterActionField=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),c=o("core/editor"),s=c.lockPostSaving,m=c.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy(),o.extraData=r.getExtraData()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var c=i.value,s=a(c,2),m=s[0],d=s[1];t.publishpress_future_action[m]=d}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){m("future-action")},onDataIsInvalid:function(){s("future-action")}})))}},94:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(409);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,c=n((function(t){return t(e.storeName).getDate()}),[]),s=n((function(t){return t(e.storeName).getEnabled()}),[]),m=n((function(t){return t(e.storeName).getAction()}),[]),d=n((function(t){return t(e.storeName).getNewStatus()}),[]),f=n((function(t){return t(e.storeName).getTerms()}),[]),p=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=f;"object"===(void 0===f?"undefined":a(f))&&(v=f.join(","));var E=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:E,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:m,newStatus:d,date:c,terms:f,taxonomy:p,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:s?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:c}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:p}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},571:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(57),r=n(562);n(386),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},437:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(562);n(386),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),c=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),s=l;return"object"===(void 0===l?"undefined":a(l))&&(s=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:c,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},625:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelTop=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(386);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},239:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57),o=n(386),i=n(11),l=n(566),u=n(244),c=wp.components,s=c.PanelRow,m=c.BaseControl,d=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),c=a(n,2),f=c[0],p=c[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],E=(0,o.useState)(!1),S=a(E,2),h=S[0],_=S[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],A=(0,o.useState)(e.settings.howToExpire),C=a(A,2),P=C[0],w=C[1],O=(0,o.useState)(e.settings.active),D=a(O,2),F=D[0],k=D[1],I=(0,o.useState)(e.settings.defaultExpireOffset),j=a(I,2),B=j[0],M=j[1],L=(0,o.useState)(e.settings.emailNotification),V=a(L,2),H=V[0],W=V[1],U=(0,o.useState)(e.settings.autoEnabled),Q=a(U,2),Y=Q[0],q=Q[1],X=(0,o.useState)(!1),z=a(X,2),G=z[0],J=z[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],ce=(0,o.useState)(e.settings.newStatus),se=a(ce,2),me=se[0],de=se[1],fe=(0,o.useState)(!1),pe=a(fe,2),ye=pe[0],ge=pe[1],be=(0,o.useState)(""),ve=a(be,2),Ee=ve[0],Se=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){f&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+f)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),f===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===f&&re(e.label)})))}),[f]),(0,o.useEffect)((function(){J(function(){if(!F)return ee(""),!0;if(B){d&&d.abort();var e=(d="undefined"==typeof AbortController?void 0:new AbortController)?d.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Se(e.preview):Se("")}))}return ee(""),!0}())}),[F,f,N,P,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){G&&e.onDataIsValid&&e.onDataIsValid(e.postType),!G&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[G]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:F||!1,label:e.text.fieldActiveLabel,onChange:function(e){k(e)}}))];return F&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:Y||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){q(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:f,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){p(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:P,onChange:function(e){w(e)}}),"change-status"===P&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:me,onChange:de}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(P)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){M(e)}}),Ee&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Ee)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,F,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!G&&React.createElement(s,null,React.createElement(m,{className:"notice notice-error"},React.createElement("div",null,$))))}},138:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var c=l.value,s=a(c,2),m=s[0],d=s[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:d.label,text:e.text,postType:m,settings:d,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[m],statusesList:e.statusesList[m],key:m+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},858:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(386),r=n(214);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},5:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(386),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},786:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},892:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},681:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(386);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},772:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},242:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},438:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},301:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(386),r=n(214),o=n(57);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(214);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},873:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(190),r=n(620),o=n(386);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,c=e.is12Hour,s=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:c,startOfWeek:s}))}},948:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(386),o=n(214);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},57:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(442);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(418);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(864);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(571);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(437);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(94);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var c=n(239);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return c.PostTypeSettingsPanel}});var s=n(138);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return s.PostTypesSettingsPanels}});var m=n(5);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return m.SettingRow}});var d=n(786);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return d.SettingsFieldset}});var f=n(892);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return f.SettingsForm}});var p=n(681);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return p.SettingsSection}});var y=n(772);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(438);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(311);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(858);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var E=n(301);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return E.TextControl}});var S=n(948);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return S.TokensControl}});var h=n(13);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(225);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(242);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},480:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,u=arguments[1];switch(u.type){case"SET_ACTION":return a({},l,{action:u.action});case"SET_NEW_STATUS":return a({},l,{newStatus:u.newStatus});case"SET_DATE":return"number"!=typeof u.date&&(0,o.isNumber)(u.date)&&(u.date=parseInt(u.date)),"string"==typeof u.date&&(u.date=new Date(u.date).getTime()),u.date=(0,r.normalizeUnixTimeToSeconds)(u.date),u.date=(0,r.formatUnixTimeToTimestamp)(u.date),a({},l,{date:u.date});case"SET_ENABLED":return a({},l,{enabled:u.enabled});case"SET_TERMS":return a({},l,{terms:u.terms});case"SET_TAXONOMY":return a({},l,{taxonomy:u.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},l,{termsListByName:u.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},l,{termsListById:u.termsListById});case"SET_TAXONOMY_NAME":return a({},l,{taxonomyName:u.taxonomyName});case"SET_CHANGE_ACTION":return a({},l,{changeAction:u.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},l,{calendarIsVisible:u.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},l,{hasValidData:u.hasValidData});case"SET_EXTRA_DATA":return a({},l,{extraData:a({},u.extraData)});case"SET_EXTRA_DATA_BY_NAME":var c=a({},l.extraData,(e={},n=u.name,i=u.value,n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e));return a({},l,{extraData:a({},c)})}return l},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}},setExtraData:function(e){return{type:"SET_EXTRA_DATA",extraData:e}},setExtraDataByName:function(e,t){return{type:"SET_EXTRA_DATA_BY_NAME",name:e,value:t}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData},getExtraData:function(e){return e.extraData},getExtraDataByName:function(e,t){return e.extraData[t]||null}}});return(0,i.register)(n),n}},39:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=publishpressFutureBlockEditorConfig},244:e=>{e.exports=wp},214:e=>{e.exports=wp.components},562:e=>{e.exports=wp.data},386:e=>{e.exports=wp.element},566:e=>{e.exports=wp.hooks},986:e=>{e.exports=wp.plugins},11:e=>{e.exports=wp.url}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var a=n(480),r=n(57),o=n(562),i=n(986),l=n(788),u="publishpress-future/future-action";(0,a.createStore)({name:u,defaultState:{autoEnable:l.postTypeDefaultConfig.autoEnable,action:l.postTypeDefaultConfig.expireType,newStatus:l.postTypeDefaultConfig.newStatus,date:l.defaultDate,taxonomy:l.postTypeDefaultConfig.taxonomy,terms:l.postTypeDefaultConfig.terms}}),(0,i.registerPlugin)("publishpress-future-action",{render:function(){return React.createElement(r.FutureActionPanelBlockEditor,{postType:(0,o.select)("core/editor").getCurrentPostType(),isCleanNewPost:(0,o.select)("core/editor").isCleanNewPost(),actionsSelectOptions:l.actionsSelectOptions,statusesSelectOptions:l.statusesSelectOptions,is12Hour:l.is12Hour,timeFormat:l.timeFormat,startOfWeek:l.startOfWeek,storeName:u,strings:l.strings,taxonomyName:l.taxonomyName,postTypeDefaultConfig:l.postTypeDefaultConfig})}})})(); //# sourceMappingURL=block-editor.js.map \ No newline at end of file diff --git a/assets/js/block-editor.js.map b/assets/js/block-editor.js.map index fdda3af0e..9e18c33f4 100644 --- a/assets/js/block-editor.js.map +++ b/assets/js/block-editor.js.map @@ -1 +1 @@ -{"version":3,"file":"block-editor.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/block-editor.jsx","webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"publishpressFutureBlockEditorConfig\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.plugins\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap"],"sourcesContent":["import { createStore } from './data';\nimport { FutureActionPanelBlockEditor } from './components';\nimport { select } from '&wp.data';\nimport { registerPlugin } from '&wp.plugins';\nimport {\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n postTypeDefaultConfig,\n defaultDate,\n statusesSelectOptions\n} from \"&config.block-editor\";\n\nconst storeName = 'publishpress-future/future-action';\n\ncreateStore({\n name: storeName,\n defaultState: {\n autoEnable: postTypeDefaultConfig.autoEnable,\n action: postTypeDefaultConfig.expireType,\n newStatus: postTypeDefaultConfig.newStatus,\n date: defaultDate,\n taxonomy: postTypeDefaultConfig.taxonomy,\n terms: postTypeDefaultConfig.terms,\n }\n});\n\nconst BlockEditorFutureActionPlugin = () => {\n return (\n \n );\n}\n\nregisterPlugin('publishpress-future-action', {\n render: BlockEditorFutureActionPlugin\n});\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"&wp.element\";\nimport { CheckboxControl as WPCheckboxControl } from \"&wp.components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"&wp.components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = {id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy};\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (! hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = ! props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (! props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (! enabled) {\n setValidationError('');\n return true;\n }\n\n if (! action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (! date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (! enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n {! props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n );\n};\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"&wp.data\";\nimport { useEffect } from \"&wp.element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '&wp.data';\nimport { useEffect } from '&wp.element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '&wp.element';\nimport { addQueryArgs } from '&wp.url';\nimport { applyFilters } from '&wp.hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { SelectControl as WPSelectControl } from \"&wp.components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { TextControl as WPTextControl } from \"&wp.components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '&wp.components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"&wp.element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"&wp.element\";\nimport { FormTokenField } from \"&wp.components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '&wp.data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = publishpressFutureBlockEditorConfig;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.plugins;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["storeName","ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","type","enablePostExpiration","options","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","scope","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","selectors","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","publishpressFutureBlockEditorConfig","hooks","plugins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defaultDate","registerPlugin","render","getCurrentPostType"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"block-editor.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelAfterActionField.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelTop.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"publishpressFutureBlockEditorConfig\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.plugins\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap","webpack://post-expirator/./assets/jsx/block-editor.jsx"],"sourcesContent":["/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { CheckboxControl as WPCheckboxControl } from \"@wordpress/components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"@wordpress/components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\nimport { PluginArea } from '@wordpress/plugins';\nimport { Fill, Slot, SlotFillProvider } from '@wordpress/components';\nimport { FutureActionPanelAfterActionField } from './FutureActionPanelAfterActionField';\nimport { FutureActionPanelTop } from './FutureActionPanelTop';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = { id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy };\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = !props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (!props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (!enabled) {\n setValidationError('');\n return true;\n }\n\n if (!action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (!date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (!enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n \n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n \n\n {!props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {!hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelAfterActionField = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelAfterActionFieldSlot = (props) => (\n \n);\n\nFutureActionPanelAfterActionField.Slot = FutureActionPanelAfterActionFieldSlot;\n\nexport default FutureActionPanelAfterActionField;\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n newAttribute['extraData'] = store.getExtraData();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"@wordpress/data\";\nimport { useEffect } from \"@wordpress/element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelTop = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelTopSlot = (props) => (\n \n);\n\nFutureActionPanelTop.Slot = FutureActionPanelTopSlot;\n\nexport default FutureActionPanelTop;\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { applyFilters } from '@wordpress/hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { SelectControl as WPSelectControl } from \"@wordpress/components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { TextControl as WPTextControl } from \"@wordpress/components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '@wordpress/components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"@wordpress/element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"@wordpress/element\";\nimport { FormTokenField } from \"@wordpress/components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '@wordpress/data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n extraData: props.defaultState.extraData ? props.defaultState.extraData : {},\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n\n case 'SET_EXTRA_DATA':\n return {\n ...state,\n extraData: {\n ...action.extraData,\n }\n }\n\n case 'SET_EXTRA_DATA_BY_NAME':\n const extraData = {\n ...state.extraData,\n [action.name]: action.value\n };\n\n return {\n ...state,\n extraData: {...extraData}\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n },\n setExtraData(extraData) {\n return {\n type: 'SET_EXTRA_DATA',\n extraData: extraData\n }\n },\n setExtraDataByName(name, value) {\n return {\n type: 'SET_EXTRA_DATA_BY_NAME',\n name: name,\n value: value\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n getExtraData(state) {\n return state.extraData;\n },\n getExtraDataByName(state, name) {\n return state.extraData[name] || null;\n }\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n if (!columnData) {\n return {};\n }\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = publishpressFutureBlockEditorConfig;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.plugins;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { createStore } from './data';\nimport { FutureActionPanelBlockEditor } from './components';\nimport { select } from '@wordpress/data';\nimport { registerPlugin } from '@wordpress/plugins';\nimport {\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n postTypeDefaultConfig,\n defaultDate,\n statusesSelectOptions\n} from \"&config.block-editor\";\n\nconst storeName = 'publishpress-future/future-action';\n\ncreateStore({\n name: storeName,\n defaultState: {\n autoEnable: postTypeDefaultConfig.autoEnable,\n action: postTypeDefaultConfig.expireType,\n newStatus: postTypeDefaultConfig.newStatus,\n date: defaultDate,\n taxonomy: postTypeDefaultConfig.taxonomy,\n terms: postTypeDefaultConfig.terms,\n }\n});\n\nconst BlockEditorFutureActionPlugin = () => {\n return (\n \n );\n}\n\nregisterPlugin('publishpress-future-action', {\n render: BlockEditorFutureActionPlugin\n});\n"],"names":["ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","SlotFillProvider","type","FutureActionPanelTop","Slot","fillProps","enablePostExpiration","options","FutureActionPanelAfterActionField","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","PluginArea","scope","Fill","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","getExtraData","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","extraData","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","setExtraData","setExtraDataByName","selectors","getExtraDataByName","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","publishpressFutureBlockEditorConfig","hooks","plugins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defaultDate","registerPlugin","render","getCurrentPostType"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/bulk-edit.js b/assets/js/bulk-edit.js index 96924b26d..a70a36db0 100644 --- a/assets/js/bulk-edit.js +++ b/assets/js/bulk-edit.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t,n,a,r,o,i,l,u,s={694:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},561:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(610),r=n(537);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},730:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(500),r=n(537);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},409:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(37),i=n(76),l=wp.components,u=l.PanelRow,s=l.CheckboxControl,c=l.SelectControl,d=l.FormTokenField,m=l.Spinner,p=l.BaseControl,f=wp.element,y=f.Fragment,g=f.useEffect,b=f.useState,v=wp.htmlEntities.decodeEntities,S=wp.url.addQueryArgs,E=wp.data,h=E.useSelect,_=E.useDispatch,T=wp.apiFetch;t.FutureActionPanel=function(e){var t=h((function(t){return t(e.storeName).getAction()}),[]),n=h((function(t){return t(e.storeName).getDate()}),[]),l=h((function(t){return t(e.storeName).getEnabled()}),[]),f=h((function(t){return t(e.storeName).getTerms()}),[]),E=h((function(t){return t(e.storeName).getTaxonomy()}),[]),x=h((function(t){return t(e.storeName).getTaxonomyName()}),[]),N=h((function(t){return t(e.storeName).getTermsListByName()}),[]),R=h((function(t){return t(e.storeName).getTermsListById()}),[]),C=h((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),w=h((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),O=h((function(t){return t(e.storeName).getHasValidData()}),[]),P=h((function(t){return t(e.storeName).getNewStatus()}),[]),A=b(""),D=r(A,2),k=D[0],I=D[1],F=_(e.storeName),j=F.setAction,B=F.setDate,L=F.setEnabled,M=F.setTerms,V=F.setTaxonomy,H=F.setTermsListByName,W=F.setTermsListById,U=F.setTaxonomyName,Q=F.setIsFetchingTerms,q=F.setCalendarIsVisible,Y=F.setHasValidData,z=F.setNewStatus,G=function(e){N[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:E},R[e]=e,H(N),W(R),M([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&R&&($=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return R[e]}))}(f)),"string"==typeof $&&($=[]));var ee=[];"object"===(void 0===N?"undefined":a(N))&&null!==N&&(ee=Object.keys(N));var te,ne=w?"future-action-panel":"future-action-panel hidden-calendar",ae=w?"future-action-panel-content":"future-action-panel-content hidden-calendar",re=w?"future-action-date-panel":"future-action-date-panel hidden-calendar";te="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var oe=e.actionsSelectOptions;e.taxonomy||(oe=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var ie=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var s,c=a[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var d=s.value.split("}"),m=r(d,2),p=m[0],f=m[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&c.return&&c.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),le=String(t).includes("category")&&"category-remove-all"!==t,ue=x;switch(t){case"category":ue=e.strings.newTerms.replace("%s",x);break;case"category-remove":ue=e.strings.removeTerms.replace("%s",x);break;case"category-add":ue=e.strings.addTerms.replace("%s",x)}return g((function(){if(!l)return Y(!0),void I("");Y(function(){var a=!0;if(!l)return I(""),!0;t||(I(e.strings.errorActionRequired),a=!1),n||(I(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),s=o("core/editor"),c=s.lockPostSaving,d=s.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var s=i.value,c=a(s,2),d=c[0],m=c[1];t.publishpress_future_action[d]=m}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){d("future-action")},onDataIsInvalid:function(){c("future-action")}})))}},27:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(37);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,s=n((function(t){return t(e.storeName).getDate()}),[]),c=n((function(t){return t(e.storeName).getEnabled()}),[]),d=n((function(t){return t(e.storeName).getAction()}),[]),m=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=p;"object"===(void 0===p?"undefined":a(p))&&(v=p.join(","));var S=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:S,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:d,newStatus:m,date:s,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:c?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:s}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},21:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(352),r=n(284);n(610),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},990:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(284);n(610),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),s=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),c=l;return"object"===(void 0===l?"undefined":a(l))&&(c=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:s,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},549:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(610);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},406:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352),o=n(610),i=n(368),l=n(882),u=n(998),s=wp.components,c=s.PanelRow,d=s.BaseControl,m=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),s=a(n,2),p=s[0],f=s[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],S=(0,o.useState)(!1),E=a(S,2),h=E[0],_=E[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],C=(0,o.useState)(e.settings.howToExpire),w=a(C,2),O=w[0],P=w[1],A=(0,o.useState)(e.settings.active),D=a(A,2),k=D[0],I=D[1],F=(0,o.useState)(e.settings.defaultExpireOffset),j=a(F,2),B=j[0],L=j[1],M=(0,o.useState)(e.settings.emailNotification),V=a(M,2),H=V[0],W=V[1],U=(0,o.useState)(e.settings.autoEnabled),Q=a(U,2),q=Q[0],Y=Q[1],z=(0,o.useState)(!1),G=a(z,2),X=G[0],J=G[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],se=(0,o.useState)(e.settings.newStatus),ce=a(se,2),de=ce[0],me=ce[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],be=(0,o.useState)(""),ve=a(be,2),Se=ve[0],Ee=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){J(function(){if(!k)return ee(""),!0;if(B){m&&m.abort();var e=(m="undefined"==typeof AbortController?void 0:new AbortController)?m.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Ee(e.preview):Ee("")}))}return ee(""),!0}())}),[k,p,N,O,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){X&&e.onDataIsValid&&e.onDataIsValid(e.postType),!X&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[X]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:k||!1,label:e.text.fieldActiveLabel,onChange:function(e){I(e)}}))];return k&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){Y(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:O,onChange:function(e){P(e)}}),"change-status"===O&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:de,onChange:me}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(O)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){L(e)}}),Se&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Se)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,k,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!X&&React.createElement(c,null,React.createElement(d,{className:"notice notice-error"},React.createElement("div",null,$))))}},438:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,c=a(s,2),d=c[0],m=c[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:m.label,text:e.text,postType:d,settings:m,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[d],statusesList:e.statusesList[d],key:d+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},182:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(610),r=n(537);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},97:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(610),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},248:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},65:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},56:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(610);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},181:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},774:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},236:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(610),r=n(537),o=n(352);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},28:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(537);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},76:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(28),r=n(730),o=n(610);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,s=e.is12Hour,c=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:s,startOfWeek:c}))}},303:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(610),o=n(537);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},366:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},352:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(694);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(409);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(738);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(21);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(990);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(27);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var s=n(406);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return s.PostTypeSettingsPanel}});var c=n(438);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return c.PostTypesSettingsPanels}});var d=n(97);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return d.SettingRow}});var m=n(248);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return m.SettingsFieldset}});var p=n(65);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(56);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(54);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(774);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(561);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(182);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var S=n(236);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return S.TextControl}});var E=n(303);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return E.TokensControl}});var h=n(549);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(366);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(181);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},91:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,n=arguments[1];switch(n.type){case"SET_ACTION":return a({},e,{action:n.action});case"SET_NEW_STATUS":return a({},e,{newStatus:n.newStatus});case"SET_DATE":return"number"!=typeof n.date&&(0,o.isNumber)(n.date)&&(n.date=parseInt(n.date)),"string"==typeof n.date&&(n.date=new Date(n.date).getTime()),n.date=(0,r.normalizeUnixTimeToSeconds)(n.date),n.date=(0,r.formatUnixTimeToTimestamp)(n.date),a({},e,{date:n.date});case"SET_ENABLED":return a({},e,{enabled:n.enabled});case"SET_TERMS":return a({},e,{terms:n.terms});case"SET_TAXONOMY":return a({},e,{taxonomy:n.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},e,{termsListByName:n.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},e,{termsListById:n.termsListById});case"SET_TAXONOMY_NAME":return a({},e,{taxonomyName:n.taxonomyName});case"SET_CHANGE_ACTION":return a({},e,{changeAction:n.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},e,{calendarIsVisible:n.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},e,{hasValidData:n.hasValidData})}return e},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData}}});return(0,i.register)(n),n}},500:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},37:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=publishpressFutureBulkEditConfig},885:e=>{e.exports=window},998:e=>{e.exports=wp},537:e=>{e.exports=wp.components},284:e=>{e.exports=wp.data},610:e=>{e.exports=wp.element},882:e=>{e.exports=wp.hooks},368:e=>{e.exports=wp.url}},c={};function d(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return s[e](n,n.exports,d),n.exports}e=d(352),t=d(91),n=d(610),a=d(284),r=d(885),o=d(319),i="publishpress-future/future-action-bulk-edit",l=r.inlineEditPost.setBulk,u=r.inlineEditPost.revert,r.inlineEditPost.setBulk=function(s){l.apply(this,arguments),(0,a.select)(i)?((0,a.dispatch)(i).setAction(o.postTypeDefaultConfig.expireType),(0,a.dispatch)(i).setDate(o.postTypeDefaultConfig.defaultDate),(0,a.dispatch)(i).setTaxonomy(o.postTypeDefaultConfig.taxonomy),(0,a.dispatch)(i).setTerms(o.postTypeDefaultConfig.terms),(0,a.dispatch)(i).setChangeAction("no-change")):(0,t.createStore)({name:i,defaultState:{action:o.postTypeDefaultConfig.expireType,newStatus:o.postTypeDefaultConfig.newStatus,date:o.defaultDate,taxonomy:o.postTypeDefaultConfig.taxonomy,terms:o.postTypeDefaultConfig.terms,changeAction:"no-change"}});var c=document.getElementById("publishpress-future-bulk-edit"),d=(0,n.createRoot)(c),m=document.querySelector("#bulk_edit");m&&(m.onclick=function(){setTimeout((function(){d.unmount()}),1e3)});var p=React.createElement(e.FutureActionPanelBulkEdit,{storeName:i,postType:o.postType,isNewPost:o.isNewPost,actionsSelectOptions:o.actionsSelectOptions,statusesSelectOptions:o.statusesSelectOptions,is12Hour:o.is12Hour,timeFormat:o.timeFormat,startOfWeek:o.startOfWeek,strings:o.strings,taxonomyName:o.taxonomyName,nonce:o.nonce});d.render(p),r.inlineEditPost.revert=function(){d.unmount(),u.apply(this,arguments)}}})(); +(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},311:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(386),r=n(214);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},620:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(39),r=n(214);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},418:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(409),i=n(873),l=n(986),u=n(214),c=n(61),s=n(625),m=wp.components,d=m.PanelRow,p=m.CheckboxControl,f=m.SelectControl,y=m.FormTokenField,g=m.Spinner,b=m.BaseControl,v=wp.element,E=v.Fragment,S=v.useEffect,h=v.useState,_=wp.htmlEntities.decodeEntities,T=wp.url.addQueryArgs,x=wp.data,N=x.useSelect,R=x.useDispatch,A=wp.apiFetch;t.FutureActionPanel=function(e){var t=N((function(t){return t(e.storeName).getAction()}),[]),n=N((function(t){return t(e.storeName).getDate()}),[]),m=N((function(t){return t(e.storeName).getEnabled()}),[]),v=N((function(t){return t(e.storeName).getTerms()}),[]),x=N((function(t){return t(e.storeName).getTaxonomy()}),[]),C=N((function(t){return t(e.storeName).getTaxonomyName()}),[]),P=N((function(t){return t(e.storeName).getTermsListByName()}),[]),w=N((function(t){return t(e.storeName).getTermsListById()}),[]),O=N((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),D=N((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),F=N((function(t){return t(e.storeName).getHasValidData()}),[]),k=N((function(t){return t(e.storeName).getNewStatus()}),[]),I=h(""),j=r(I,2),B=j[0],M=j[1],L=R(e.storeName),V=L.setAction,H=L.setDate,W=L.setEnabled,U=L.setTerms,Q=L.setTaxonomy,Y=L.setTermsListByName,q=L.setTermsListById,X=L.setTaxonomyName,z=L.setIsFetchingTerms,G=L.setCalendarIsVisible,J=L.setHasValidData,K=L.setNewStatus,Z=function(e){P[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:x},w[e]=e,Y(P),q(w),U([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&w&&(ae=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return w[e]}))}(v)),"string"==typeof ae&&(ae=[]));var re=[];"object"===(void 0===P?"undefined":a(P))&&null!==P&&(re=Object.keys(P));var oe,ie=D?"future-action-panel":"future-action-panel hidden-calendar",le=D?"future-action-panel-content":"future-action-panel-content hidden-calendar",ue=D?"future-action-date-panel":"future-action-date-panel hidden-calendar";oe="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var ce=e.actionsSelectOptions;e.taxonomy||(ce=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var se=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var c,s=a[Symbol.iterator]();!(i=(c=s.next()).done);i=!0){var m=c.value.split("}"),d=r(m,2),p=d[0],f=d[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&s.return&&s.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),me=String(t).includes("category")&&"category-remove-all"!==t,de=C;switch(t){case"category":de=e.strings.newTerms.replace("%s",C);break;case"category-remove":de=e.strings.removeTerms.replace("%s",C);break;case"category-add":de=e.strings.addTerms.replace("%s",C)}return S((function(){if(!m)return J(!0),void M("");J(function(){var a=!0;if(!m)return M(""),!0;t||(M(e.strings.errorActionRequired),a=!1),n||(M(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelAfterActionField=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),c=o("core/editor"),s=c.lockPostSaving,m=c.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy(),o.extraData=r.getExtraData()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var c=i.value,s=a(c,2),m=s[0],d=s[1];t.publishpress_future_action[m]=d}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){m("future-action")},onDataIsInvalid:function(){s("future-action")}})))}},94:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(409);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,c=n((function(t){return t(e.storeName).getDate()}),[]),s=n((function(t){return t(e.storeName).getEnabled()}),[]),m=n((function(t){return t(e.storeName).getAction()}),[]),d=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=p;"object"===(void 0===p?"undefined":a(p))&&(v=p.join(","));var E=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:E,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:m,newStatus:d,date:c,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:s?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:c}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},571:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(57),r=n(562);n(386),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},437:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(562);n(386),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),c=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),s=l;return"object"===(void 0===l?"undefined":a(l))&&(s=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:c,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},625:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelTop=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(386);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},239:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57),o=n(386),i=n(11),l=n(566),u=n(244),c=wp.components,s=c.PanelRow,m=c.BaseControl,d=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),c=a(n,2),p=c[0],f=c[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],E=(0,o.useState)(!1),S=a(E,2),h=S[0],_=S[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],A=(0,o.useState)(e.settings.howToExpire),C=a(A,2),P=C[0],w=C[1],O=(0,o.useState)(e.settings.active),D=a(O,2),F=D[0],k=D[1],I=(0,o.useState)(e.settings.defaultExpireOffset),j=a(I,2),B=j[0],M=j[1],L=(0,o.useState)(e.settings.emailNotification),V=a(L,2),H=V[0],W=V[1],U=(0,o.useState)(e.settings.autoEnabled),Q=a(U,2),Y=Q[0],q=Q[1],X=(0,o.useState)(!1),z=a(X,2),G=z[0],J=z[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],ce=(0,o.useState)(e.settings.newStatus),se=a(ce,2),me=se[0],de=se[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],be=(0,o.useState)(""),ve=a(be,2),Ee=ve[0],Se=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){J(function(){if(!F)return ee(""),!0;if(B){d&&d.abort();var e=(d="undefined"==typeof AbortController?void 0:new AbortController)?d.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Se(e.preview):Se("")}))}return ee(""),!0}())}),[F,p,N,P,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){G&&e.onDataIsValid&&e.onDataIsValid(e.postType),!G&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[G]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:F||!1,label:e.text.fieldActiveLabel,onChange:function(e){k(e)}}))];return F&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:Y||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){q(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:P,onChange:function(e){w(e)}}),"change-status"===P&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:me,onChange:de}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(P)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){M(e)}}),Ee&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Ee)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,F,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!G&&React.createElement(s,null,React.createElement(m,{className:"notice notice-error"},React.createElement("div",null,$))))}},138:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var c=l.value,s=a(c,2),m=s[0],d=s[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:d.label,text:e.text,postType:m,settings:d,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[m],statusesList:e.statusesList[m],key:m+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},858:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(386),r=n(214);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},5:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(386),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},786:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},892:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},681:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(386);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},772:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},242:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},438:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},301:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(386),r=n(214),o=n(57);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(214);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},873:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(190),r=n(620),o=n(386);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,c=e.is12Hour,s=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:c,startOfWeek:s}))}},948:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(386),o=n(214);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},57:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(442);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(418);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(864);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(571);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(437);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(94);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var c=n(239);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return c.PostTypeSettingsPanel}});var s=n(138);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return s.PostTypesSettingsPanels}});var m=n(5);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return m.SettingRow}});var d=n(786);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return d.SettingsFieldset}});var p=n(892);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(681);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(772);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(438);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(311);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(858);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var E=n(301);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return E.TextControl}});var S=n(948);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return S.TokensControl}});var h=n(13);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(225);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(242);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},480:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,u=arguments[1];switch(u.type){case"SET_ACTION":return a({},l,{action:u.action});case"SET_NEW_STATUS":return a({},l,{newStatus:u.newStatus});case"SET_DATE":return"number"!=typeof u.date&&(0,o.isNumber)(u.date)&&(u.date=parseInt(u.date)),"string"==typeof u.date&&(u.date=new Date(u.date).getTime()),u.date=(0,r.normalizeUnixTimeToSeconds)(u.date),u.date=(0,r.formatUnixTimeToTimestamp)(u.date),a({},l,{date:u.date});case"SET_ENABLED":return a({},l,{enabled:u.enabled});case"SET_TERMS":return a({},l,{terms:u.terms});case"SET_TAXONOMY":return a({},l,{taxonomy:u.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},l,{termsListByName:u.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},l,{termsListById:u.termsListById});case"SET_TAXONOMY_NAME":return a({},l,{taxonomyName:u.taxonomyName});case"SET_CHANGE_ACTION":return a({},l,{changeAction:u.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},l,{calendarIsVisible:u.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},l,{hasValidData:u.hasValidData});case"SET_EXTRA_DATA":return a({},l,{extraData:a({},u.extraData)});case"SET_EXTRA_DATA_BY_NAME":var c=a({},l.extraData,(e={},n=u.name,i=u.value,n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e));return a({},l,{extraData:a({},c)})}return l},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}},setExtraData:function(e){return{type:"SET_EXTRA_DATA",extraData:e}},setExtraDataByName:function(e,t){return{type:"SET_EXTRA_DATA_BY_NAME",name:e,value:t}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData},getExtraData:function(e){return e.extraData},getExtraDataByName:function(e,t){return e.extraData[t]||null}}});return(0,i.register)(n),n}},39:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=publishpressFutureBulkEditConfig},643:e=>{e.exports=window},244:e=>{e.exports=wp},214:e=>{e.exports=wp.components},562:e=>{e.exports=wp.data},386:e=>{e.exports=wp.element},566:e=>{e.exports=wp.hooks},986:e=>{e.exports=wp.plugins},11:e=>{e.exports=wp.url}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var a=n(57),r=n(480),o=n(386),i=n(562),l=n(643),u=n(384),c="publishpress-future/future-action-bulk-edit",s=l.inlineEditPost.setBulk,m=l.inlineEditPost.revert;l.inlineEditPost.setBulk=function(e){s.apply(this,arguments),(0,i.select)(c)?((0,i.dispatch)(c).setAction(u.postTypeDefaultConfig.expireType),(0,i.dispatch)(c).setDate(u.postTypeDefaultConfig.defaultDate),(0,i.dispatch)(c).setTaxonomy(u.postTypeDefaultConfig.taxonomy),(0,i.dispatch)(c).setTerms(u.postTypeDefaultConfig.terms),(0,i.dispatch)(c).setChangeAction("no-change")):(0,r.createStore)({name:c,defaultState:{action:u.postTypeDefaultConfig.expireType,newStatus:u.postTypeDefaultConfig.newStatus,date:u.defaultDate,taxonomy:u.postTypeDefaultConfig.taxonomy,terms:u.postTypeDefaultConfig.terms,changeAction:"no-change"}});var t=document.getElementById("publishpress-future-bulk-edit"),n=(0,o.createRoot)(t),d=document.querySelector("#bulk_edit");d&&(d.onclick=function(){setTimeout((function(){n.unmount()}),1e3)});var p=React.createElement(a.FutureActionPanelBulkEdit,{storeName:c,postType:u.postType,isNewPost:u.isNewPost,actionsSelectOptions:u.actionsSelectOptions,statusesSelectOptions:u.statusesSelectOptions,is12Hour:u.is12Hour,timeFormat:u.timeFormat,startOfWeek:u.startOfWeek,strings:u.strings,taxonomyName:u.taxonomyName,nonce:u.nonce});n.render(p),l.inlineEditPost.revert=function(){n.unmount(),m.apply(this,arguments)}}})(); //# sourceMappingURL=bulk-edit.js.map \ No newline at end of file diff --git a/assets/js/bulk-edit.js.map b/assets/js/bulk-edit.js.map index 6db160c84..89238af76 100644 --- a/assets/js/bulk-edit.js.map +++ b/assets/js/bulk-edit.js.map @@ -1 +1 @@ -{"version":3,"file":"bulk-edit.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/bulk-edit.jsx","webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"publishpressFutureBulkEditConfig\"","webpack://post-expirator/external var \"window\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap"],"sourcesContent":["import { FutureActionPanelBulkEdit } from './components';\nimport { createStore } from './data';\nimport { createRoot } from '&wp.element';\nimport { select, dispatch } from '&wp.data';\nimport { inlineEditPost } from \"&window\";\nimport {\n postTypeDefaultConfig,\n defaultDate,\n postType,\n isNewPost,\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n nonce,\n statusesSelectOptions\n} from \"&config.bulk-edit\";\n\nconst storeName = 'publishpress-future/future-action-bulk-edit';\nconst delayToUnmountAfterSaving = 1000;\n\n// We create a copy of the WP inline set bulk function\nconst wpInlineSetBulk = inlineEditPost.setBulk;\nconst wpInlineEditRevert = inlineEditPost.revert;\n\nconst getPostId = (id) => {\n // If id is a string or a number, return it directly\n if (typeof id === 'string' || typeof id === 'number') {\n return id;\n }\n\n // Otherwise, assume it's an HTML element and extract the post ID\n const trElement = id.closest('tr');\n const trId = trElement.id;\n const postId = trId.split('-')[1];\n\n return postId;\n}\n\n/**\n * We override the function with our own code so we can detect when\n * the inline edit row is displayed to recreate the React component.\n */\ninlineEditPost.setBulk = function (id) {\n // Call the original WP edit function.\n wpInlineSetBulk.apply(this, arguments);\n\n if (select(storeName)) {\n dispatch(storeName).setAction(postTypeDefaultConfig.expireType);\n dispatch(storeName).setDate(postTypeDefaultConfig.defaultDate);\n dispatch(storeName).setTaxonomy(postTypeDefaultConfig.taxonomy);\n dispatch(storeName).setTerms(postTypeDefaultConfig.terms);\n dispatch(storeName).setChangeAction('no-change');\n } else {\n createStore({\n name: storeName,\n defaultState: {\n action: postTypeDefaultConfig.expireType,\n newStatus: postTypeDefaultConfig.newStatus,\n date: defaultDate,\n taxonomy: postTypeDefaultConfig.taxonomy,\n terms: postTypeDefaultConfig.terms,\n changeAction: 'no-change',\n }\n });\n }\n\n const container = document.getElementById(\"publishpress-future-bulk-edit\");\n const root = createRoot(container);\n\n const saveButton = document.querySelector('#bulk_edit');\n if (saveButton) {\n saveButton.onclick = function() {\n setTimeout(() => {\n root.unmount();\n }, delayToUnmountAfterSaving);\n };\n }\n\n const component = (\n \n );\n\n root.render(component);\n\n inlineEditPost.revert = function () {\n root.unmount();\n\n // Call the original WP revert function.\n wpInlineEditRevert.apply(this, arguments);\n };\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"&wp.element\";\nimport { CheckboxControl as WPCheckboxControl } from \"&wp.components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"&wp.components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = {id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy};\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (! hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = ! props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (! props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (! enabled) {\n setValidationError('');\n return true;\n }\n\n if (! action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (! date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (! enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n {! props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n );\n};\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"&wp.data\";\nimport { useEffect } from \"&wp.element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '&wp.data';\nimport { useEffect } from '&wp.element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '&wp.element';\nimport { addQueryArgs } from '&wp.url';\nimport { applyFilters } from '&wp.hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { SelectControl as WPSelectControl } from \"&wp.components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { TextControl as WPTextControl } from \"&wp.components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '&wp.components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"&wp.element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"&wp.element\";\nimport { FormTokenField } from \"&wp.components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '&wp.data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = publishpressFutureBulkEditConfig;","module.exports = window;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["storeName","wpInlineSetBulk","wpInlineEditRevert","ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","type","enablePostExpiration","options","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","scope","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","selectors","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","publishpressFutureBulkEditConfig","window","hooks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","inlineEditPost","setBulk","revert","apply","this","arguments","dispatch","defaultDate","container","getElementById","root","createRoot","saveButton","onclick","setTimeout","unmount","component","render"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"bulk-edit.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelAfterActionField.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelTop.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"publishpressFutureBulkEditConfig\"","webpack://post-expirator/external var \"window\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.plugins\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap","webpack://post-expirator/./assets/jsx/bulk-edit.jsx"],"sourcesContent":["/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { CheckboxControl as WPCheckboxControl } from \"@wordpress/components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"@wordpress/components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\nimport { PluginArea } from '@wordpress/plugins';\nimport { Fill, Slot, SlotFillProvider } from '@wordpress/components';\nimport { FutureActionPanelAfterActionField } from './FutureActionPanelAfterActionField';\nimport { FutureActionPanelTop } from './FutureActionPanelTop';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = { id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy };\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = !props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (!props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (!enabled) {\n setValidationError('');\n return true;\n }\n\n if (!action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (!date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (!enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n \n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n \n\n {!props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {!hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelAfterActionField = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelAfterActionFieldSlot = (props) => (\n \n);\n\nFutureActionPanelAfterActionField.Slot = FutureActionPanelAfterActionFieldSlot;\n\nexport default FutureActionPanelAfterActionField;\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n newAttribute['extraData'] = store.getExtraData();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"@wordpress/data\";\nimport { useEffect } from \"@wordpress/element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelTop = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelTopSlot = (props) => (\n \n);\n\nFutureActionPanelTop.Slot = FutureActionPanelTopSlot;\n\nexport default FutureActionPanelTop;\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { applyFilters } from '@wordpress/hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { SelectControl as WPSelectControl } from \"@wordpress/components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { TextControl as WPTextControl } from \"@wordpress/components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '@wordpress/components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"@wordpress/element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"@wordpress/element\";\nimport { FormTokenField } from \"@wordpress/components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '@wordpress/data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n extraData: props.defaultState.extraData ? props.defaultState.extraData : {},\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n\n case 'SET_EXTRA_DATA':\n return {\n ...state,\n extraData: {\n ...action.extraData,\n }\n }\n\n case 'SET_EXTRA_DATA_BY_NAME':\n const extraData = {\n ...state.extraData,\n [action.name]: action.value\n };\n\n return {\n ...state,\n extraData: {...extraData}\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n },\n setExtraData(extraData) {\n return {\n type: 'SET_EXTRA_DATA',\n extraData: extraData\n }\n },\n setExtraDataByName(name, value) {\n return {\n type: 'SET_EXTRA_DATA_BY_NAME',\n name: name,\n value: value\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n getExtraData(state) {\n return state.extraData;\n },\n getExtraDataByName(state, name) {\n return state.extraData[name] || null;\n }\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n if (!columnData) {\n return {};\n }\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = publishpressFutureBulkEditConfig;","module.exports = window;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.plugins;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { FutureActionPanelBulkEdit } from './components';\nimport { createStore } from './data';\nimport { createRoot } from '@wordpress/element';\nimport { select, dispatch } from '@wordpress/data';\nimport { inlineEditPost } from \"&window\";\nimport {\n postTypeDefaultConfig,\n defaultDate,\n postType,\n isNewPost,\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n nonce,\n statusesSelectOptions\n} from \"&config.bulk-edit\";\n\nconst storeName = 'publishpress-future/future-action-bulk-edit';\nconst delayToUnmountAfterSaving = 1000;\n\n// We create a copy of the WP inline set bulk function\nconst wpInlineSetBulk = inlineEditPost.setBulk;\nconst wpInlineEditRevert = inlineEditPost.revert;\n\nconst getPostId = (id) => {\n // If id is a string or a number, return it directly\n if (typeof id === 'string' || typeof id === 'number') {\n return id;\n }\n\n // Otherwise, assume it's an HTML element and extract the post ID\n const trElement = id.closest('tr');\n const trId = trElement.id;\n const postId = trId.split('-')[1];\n\n return postId;\n}\n\n/**\n * We override the function with our own code so we can detect when\n * the inline edit row is displayed to recreate the React component.\n */\ninlineEditPost.setBulk = function (id) {\n // Call the original WP edit function.\n wpInlineSetBulk.apply(this, arguments);\n\n if (select(storeName)) {\n dispatch(storeName).setAction(postTypeDefaultConfig.expireType);\n dispatch(storeName).setDate(postTypeDefaultConfig.defaultDate);\n dispatch(storeName).setTaxonomy(postTypeDefaultConfig.taxonomy);\n dispatch(storeName).setTerms(postTypeDefaultConfig.terms);\n dispatch(storeName).setChangeAction('no-change');\n } else {\n createStore({\n name: storeName,\n defaultState: {\n action: postTypeDefaultConfig.expireType,\n newStatus: postTypeDefaultConfig.newStatus,\n date: defaultDate,\n taxonomy: postTypeDefaultConfig.taxonomy,\n terms: postTypeDefaultConfig.terms,\n changeAction: 'no-change',\n }\n });\n }\n\n const container = document.getElementById(\"publishpress-future-bulk-edit\");\n const root = createRoot(container);\n\n const saveButton = document.querySelector('#bulk_edit');\n if (saveButton) {\n saveButton.onclick = function() {\n setTimeout(() => {\n root.unmount();\n }, delayToUnmountAfterSaving);\n };\n }\n\n const component = (\n \n );\n\n root.render(component);\n\n inlineEditPost.revert = function () {\n root.unmount();\n\n // Call the original WP revert function.\n wpInlineEditRevert.apply(this, arguments);\n };\n};\n"],"names":["ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","SlotFillProvider","type","FutureActionPanelTop","Slot","fillProps","enablePostExpiration","options","FutureActionPanelAfterActionField","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","PluginArea","scope","Fill","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","getExtraData","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","extraData","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","setExtraData","setExtraDataByName","selectors","getExtraDataByName","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","publishpressFutureBulkEditConfig","window","hooks","plugins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","wpInlineSetBulk","inlineEditPost","setBulk","wpInlineEditRevert","revert","apply","this","arguments","dispatch","defaultDate","container","getElementById","root","createRoot","saveButton","onclick","setTimeout","unmount","component","render"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/classic-editor.js b/assets/js/classic-editor.js index 69dccf102..c66451fd6 100644 --- a/assets/js/classic-editor.js +++ b/assets/js/classic-editor.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e={694:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},561:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(610),r=n(537);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},730:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(500),r=n(537);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},409:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(37),i=n(76),l=wp.components,u=l.PanelRow,s=l.CheckboxControl,c=l.SelectControl,m=l.FormTokenField,d=l.Spinner,p=l.BaseControl,f=wp.element,y=f.Fragment,g=f.useEffect,b=f.useState,v=wp.htmlEntities.decodeEntities,S=wp.url.addQueryArgs,E=wp.data,h=E.useSelect,_=E.useDispatch,T=wp.apiFetch;t.FutureActionPanel=function(e){var t=h((function(t){return t(e.storeName).getAction()}),[]),n=h((function(t){return t(e.storeName).getDate()}),[]),l=h((function(t){return t(e.storeName).getEnabled()}),[]),f=h((function(t){return t(e.storeName).getTerms()}),[]),E=h((function(t){return t(e.storeName).getTaxonomy()}),[]),x=h((function(t){return t(e.storeName).getTaxonomyName()}),[]),N=h((function(t){return t(e.storeName).getTermsListByName()}),[]),R=h((function(t){return t(e.storeName).getTermsListById()}),[]),C=h((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),w=h((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),O=h((function(t){return t(e.storeName).getHasValidData()}),[]),A=h((function(t){return t(e.storeName).getNewStatus()}),[]),P=b(""),D=r(P,2),I=D[0],k=D[1],F=_(e.storeName),j=F.setAction,B=F.setDate,L=F.setEnabled,M=F.setTerms,V=F.setTaxonomy,H=F.setTermsListByName,W=F.setTermsListById,U=F.setTaxonomyName,Q=F.setIsFetchingTerms,q=F.setCalendarIsVisible,Y=F.setHasValidData,z=F.setNewStatus,G=function(e){N[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:E},R[e]=e,H(N),W(R),M([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&R&&($=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return R[e]}))}(f)),"string"==typeof $&&($=[]));var ee=[];"object"===(void 0===N?"undefined":a(N))&&null!==N&&(ee=Object.keys(N));var te,ne=w?"future-action-panel":"future-action-panel hidden-calendar",ae=w?"future-action-panel-content":"future-action-panel-content hidden-calendar",re=w?"future-action-date-panel":"future-action-date-panel hidden-calendar";te="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var oe=e.actionsSelectOptions;e.taxonomy||(oe=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var ie=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var s,c=a[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var m=s.value.split("}"),d=r(m,2),p=d[0],f=d[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&c.return&&c.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),le=String(t).includes("category")&&"category-remove-all"!==t,ue=x;switch(t){case"category":ue=e.strings.newTerms.replace("%s",x);break;case"category-remove":ue=e.strings.removeTerms.replace("%s",x);break;case"category-add":ue=e.strings.addTerms.replace("%s",x)}return g((function(){if(!l)return Y(!0),void k("");Y(function(){var a=!0;if(!l)return k(""),!0;t||(k(e.strings.errorActionRequired),a=!1),n||(k(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),s=o("core/editor"),c=s.lockPostSaving,m=s.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var s=i.value,c=a(s,2),m=c[0],d=c[1];t.publishpress_future_action[m]=d}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){m("future-action")},onDataIsInvalid:function(){c("future-action")}})))}},27:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(37);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,s=n((function(t){return t(e.storeName).getDate()}),[]),c=n((function(t){return t(e.storeName).getEnabled()}),[]),m=n((function(t){return t(e.storeName).getAction()}),[]),d=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=p;"object"===(void 0===p?"undefined":a(p))&&(v=p.join(","));var S=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:S,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:m,newStatus:d,date:s,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:c?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:s}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},21:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(352),r=n(284);n(610),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},990:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(284);n(610),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),s=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),c=l;return"object"===(void 0===l?"undefined":a(l))&&(c=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:s,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},549:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(610);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},406:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352),o=n(610),i=n(368),l=n(882),u=n(998),s=wp.components,c=s.PanelRow,m=s.BaseControl,d=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),s=a(n,2),p=s[0],f=s[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],S=(0,o.useState)(!1),E=a(S,2),h=E[0],_=E[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],C=(0,o.useState)(e.settings.howToExpire),w=a(C,2),O=w[0],A=w[1],P=(0,o.useState)(e.settings.active),D=a(P,2),I=D[0],k=D[1],F=(0,o.useState)(e.settings.defaultExpireOffset),j=a(F,2),B=j[0],L=j[1],M=(0,o.useState)(e.settings.emailNotification),V=a(M,2),H=V[0],W=V[1],U=(0,o.useState)(e.settings.autoEnabled),Q=a(U,2),q=Q[0],Y=Q[1],z=(0,o.useState)(!1),G=a(z,2),X=G[0],J=G[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],se=(0,o.useState)(e.settings.newStatus),ce=a(se,2),me=ce[0],de=ce[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],be=(0,o.useState)(""),ve=a(be,2),Se=ve[0],Ee=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){J(function(){if(!I)return ee(""),!0;if(B){d&&d.abort();var e=(d="undefined"==typeof AbortController?void 0:new AbortController)?d.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Ee(e.preview):Ee("")}))}return ee(""),!0}())}),[I,p,N,O,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){X&&e.onDataIsValid&&e.onDataIsValid(e.postType),!X&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[X]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:I||!1,label:e.text.fieldActiveLabel,onChange:function(e){k(e)}}))];return I&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){Y(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:O,onChange:function(e){A(e)}}),"change-status"===O&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:me,onChange:de}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(O)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){L(e)}}),Se&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Se)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,I,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!X&&React.createElement(c,null,React.createElement(m,{className:"notice notice-error"},React.createElement("div",null,$))))}},438:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,c=a(s,2),m=c[0],d=c[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:d.label,text:e.text,postType:m,settings:d,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[m],statusesList:e.statusesList[m],key:m+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},182:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(610),r=n(537);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},97:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(610),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},248:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},65:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},56:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(610);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},181:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},774:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},236:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(610),r=n(537),o=n(352);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},28:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(537);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},76:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(28),r=n(730),o=n(610);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,s=e.is12Hour,c=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:s,startOfWeek:c}))}},303:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(610),o=n(537);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},366:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},352:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(694);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(409);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(738);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(21);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(990);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(27);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var s=n(406);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return s.PostTypeSettingsPanel}});var c=n(438);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return c.PostTypesSettingsPanels}});var m=n(97);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return m.SettingRow}});var d=n(248);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return d.SettingsFieldset}});var p=n(65);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(56);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(54);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(774);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(561);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(182);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var S=n(236);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return S.TextControl}});var E=n(303);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return E.TokensControl}});var h=n(549);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(366);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(181);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},91:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,n=arguments[1];switch(n.type){case"SET_ACTION":return a({},e,{action:n.action});case"SET_NEW_STATUS":return a({},e,{newStatus:n.newStatus});case"SET_DATE":return"number"!=typeof n.date&&(0,o.isNumber)(n.date)&&(n.date=parseInt(n.date)),"string"==typeof n.date&&(n.date=new Date(n.date).getTime()),n.date=(0,r.normalizeUnixTimeToSeconds)(n.date),n.date=(0,r.formatUnixTimeToTimestamp)(n.date),a({},e,{date:n.date});case"SET_ENABLED":return a({},e,{enabled:n.enabled});case"SET_TERMS":return a({},e,{terms:n.terms});case"SET_TAXONOMY":return a({},e,{taxonomy:n.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},e,{termsListByName:n.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},e,{termsListById:n.termsListById});case"SET_TAXONOMY_NAME":return a({},e,{taxonomyName:n.taxonomyName});case"SET_CHANGE_ACTION":return a({},e,{changeAction:n.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},e,{calendarIsVisible:n.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},e,{hasValidData:n.hasValidData})}return e},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData}}});return(0,i.register)(n),n}},500:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},37:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=ReactDOM},598:e=>{e.exports=publishpressFutureClassicEditorConfig},998:e=>{e.exports=wp},537:e=>{e.exports=wp.components},284:e=>{e.exports=wp.data},610:e=>{e.exports=wp.element},882:e=>{e.exports=wp.hooks},368:e=>{e.exports=wp.url}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}(()=>{var e=n(352),t=n(91),a=n(37),r=n(610),o=n(284),i=n(598);if(n(533),!(0,a.isGutenbergEnabled)()){var l="publishpress-future/future-action";(0,o.select)(l)||(0,t.createStore)({name:l,defaultState:{autoEnable:i.postTypeDefaultConfig.autoEnable,action:i.postTypeDefaultConfig.expireType,newStatus:i.postTypeDefaultConfig.newStatus,date:i.defaultDate,taxonomy:i.postTypeDefaultConfig.taxonomy,terms:i.postTypeDefaultConfig.terms}});var u=document.getElementById("publishpress-future-classic-editor"),s=React.createElement(e.FutureActionPanelClassicEditor,{storeName:l,postType:i.postType,isNewPost:i.isNewPost,actionsSelectOptions:i.actionsSelectOptions,statusesSelectOptions:i.statusesSelectOptions,is12Hour:i.is12Hour,timeFormat:i.timeFormat,startOfWeek:i.startOfWeek,strings:i.strings,taxonomyName:i.taxonomyName});(0,r.createRoot)(u).render(s)}})()})(); +(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},311:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(386),r=n(214);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},620:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(39),r=n(214);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},418:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(409),i=n(873),l=n(986),u=n(214),c=n(61),s=n(625),m=wp.components,d=m.PanelRow,f=m.CheckboxControl,p=m.SelectControl,y=m.FormTokenField,g=m.Spinner,b=m.BaseControl,v=wp.element,E=v.Fragment,S=v.useEffect,h=v.useState,_=wp.htmlEntities.decodeEntities,T=wp.url.addQueryArgs,x=wp.data,N=x.useSelect,R=x.useDispatch,A=wp.apiFetch;t.FutureActionPanel=function(e){var t=N((function(t){return t(e.storeName).getAction()}),[]),n=N((function(t){return t(e.storeName).getDate()}),[]),m=N((function(t){return t(e.storeName).getEnabled()}),[]),v=N((function(t){return t(e.storeName).getTerms()}),[]),x=N((function(t){return t(e.storeName).getTaxonomy()}),[]),C=N((function(t){return t(e.storeName).getTaxonomyName()}),[]),P=N((function(t){return t(e.storeName).getTermsListByName()}),[]),w=N((function(t){return t(e.storeName).getTermsListById()}),[]),O=N((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),D=N((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),F=N((function(t){return t(e.storeName).getHasValidData()}),[]),I=N((function(t){return t(e.storeName).getNewStatus()}),[]),k=h(""),j=r(k,2),B=j[0],M=j[1],L=R(e.storeName),V=L.setAction,H=L.setDate,W=L.setEnabled,U=L.setTerms,Q=L.setTaxonomy,Y=L.setTermsListByName,q=L.setTermsListById,X=L.setTaxonomyName,z=L.setIsFetchingTerms,G=L.setCalendarIsVisible,J=L.setHasValidData,K=L.setNewStatus,Z=function(e){P[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:x},w[e]=e,Y(P),q(w),U([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&w&&(ae=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return w[e]}))}(v)),"string"==typeof ae&&(ae=[]));var re=[];"object"===(void 0===P?"undefined":a(P))&&null!==P&&(re=Object.keys(P));var oe,ie=D?"future-action-panel":"future-action-panel hidden-calendar",le=D?"future-action-panel-content":"future-action-panel-content hidden-calendar",ue=D?"future-action-date-panel":"future-action-date-panel hidden-calendar";oe="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var ce=e.actionsSelectOptions;e.taxonomy||(ce=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var se=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var c,s=a[Symbol.iterator]();!(i=(c=s.next()).done);i=!0){var m=c.value.split("}"),d=r(m,2),f=d[0],p=d[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},f)),o.push(p)}}catch(e){l=!0,u=e}finally{try{!i&&s.return&&s.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),me=String(t).includes("category")&&"category-remove-all"!==t,de=C;switch(t){case"category":de=e.strings.newTerms.replace("%s",C);break;case"category-remove":de=e.strings.removeTerms.replace("%s",C);break;case"category-add":de=e.strings.addTerms.replace("%s",C)}return S((function(){if(!m)return J(!0),void M("");J(function(){var a=!0;if(!m)return M(""),!0;t||(M(e.strings.errorActionRequired),a=!1),n||(M(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelAfterActionField=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),c=o("core/editor"),s=c.lockPostSaving,m=c.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy(),o.extraData=r.getExtraData()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var c=i.value,s=a(c,2),m=s[0],d=s[1];t.publishpress_future_action[m]=d}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){m("future-action")},onDataIsInvalid:function(){s("future-action")}})))}},94:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(409);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,c=n((function(t){return t(e.storeName).getDate()}),[]),s=n((function(t){return t(e.storeName).getEnabled()}),[]),m=n((function(t){return t(e.storeName).getAction()}),[]),d=n((function(t){return t(e.storeName).getNewStatus()}),[]),f=n((function(t){return t(e.storeName).getTerms()}),[]),p=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=f;"object"===(void 0===f?"undefined":a(f))&&(v=f.join(","));var E=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:E,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:m,newStatus:d,date:c,terms:f,taxonomy:p,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:s?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:c}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:p}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},571:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(57),r=n(562);n(386),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},437:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(562);n(386),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),c=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),s=l;return"object"===(void 0===l?"undefined":a(l))&&(s=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:c,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},625:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelTop=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(386);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},239:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57),o=n(386),i=n(11),l=n(566),u=n(244),c=wp.components,s=c.PanelRow,m=c.BaseControl,d=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),c=a(n,2),f=c[0],p=c[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],E=(0,o.useState)(!1),S=a(E,2),h=S[0],_=S[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],A=(0,o.useState)(e.settings.howToExpire),C=a(A,2),P=C[0],w=C[1],O=(0,o.useState)(e.settings.active),D=a(O,2),F=D[0],I=D[1],k=(0,o.useState)(e.settings.defaultExpireOffset),j=a(k,2),B=j[0],M=j[1],L=(0,o.useState)(e.settings.emailNotification),V=a(L,2),H=V[0],W=V[1],U=(0,o.useState)(e.settings.autoEnabled),Q=a(U,2),Y=Q[0],q=Q[1],X=(0,o.useState)(!1),z=a(X,2),G=z[0],J=z[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],ce=(0,o.useState)(e.settings.newStatus),se=a(ce,2),me=se[0],de=se[1],fe=(0,o.useState)(!1),pe=a(fe,2),ye=pe[0],ge=pe[1],be=(0,o.useState)(""),ve=a(be,2),Ee=ve[0],Se=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){f&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+f)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),f===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===f&&re(e.label)})))}),[f]),(0,o.useEffect)((function(){J(function(){if(!F)return ee(""),!0;if(B){d&&d.abort();var e=(d="undefined"==typeof AbortController?void 0:new AbortController)?d.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Se(e.preview):Se("")}))}return ee(""),!0}())}),[F,f,N,P,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){G&&e.onDataIsValid&&e.onDataIsValid(e.postType),!G&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[G]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:F||!1,label:e.text.fieldActiveLabel,onChange:function(e){I(e)}}))];return F&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:Y||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){q(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:f,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){p(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:P,onChange:function(e){w(e)}}),"change-status"===P&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:me,onChange:de}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(P)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){M(e)}}),Ee&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Ee)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,F,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!G&&React.createElement(s,null,React.createElement(m,{className:"notice notice-error"},React.createElement("div",null,$))))}},138:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var c=l.value,s=a(c,2),m=s[0],d=s[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:d.label,text:e.text,postType:m,settings:d,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[m],statusesList:e.statusesList[m],key:m+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},858:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(386),r=n(214);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},5:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(386),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},786:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},892:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},681:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(386);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},772:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},242:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},438:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},301:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(386),r=n(214),o=n(57);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(214);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},873:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(190),r=n(620),o=n(386);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,c=e.is12Hour,s=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:c,startOfWeek:s}))}},948:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(386),o=n(214);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},57:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(442);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(418);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(864);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(571);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(437);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(94);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var c=n(239);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return c.PostTypeSettingsPanel}});var s=n(138);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return s.PostTypesSettingsPanels}});var m=n(5);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return m.SettingRow}});var d=n(786);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return d.SettingsFieldset}});var f=n(892);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return f.SettingsForm}});var p=n(681);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return p.SettingsSection}});var y=n(772);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(438);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(311);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(858);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var E=n(301);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return E.TextControl}});var S=n(948);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return S.TokensControl}});var h=n(13);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(225);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(242);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},480:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,u=arguments[1];switch(u.type){case"SET_ACTION":return a({},l,{action:u.action});case"SET_NEW_STATUS":return a({},l,{newStatus:u.newStatus});case"SET_DATE":return"number"!=typeof u.date&&(0,o.isNumber)(u.date)&&(u.date=parseInt(u.date)),"string"==typeof u.date&&(u.date=new Date(u.date).getTime()),u.date=(0,r.normalizeUnixTimeToSeconds)(u.date),u.date=(0,r.formatUnixTimeToTimestamp)(u.date),a({},l,{date:u.date});case"SET_ENABLED":return a({},l,{enabled:u.enabled});case"SET_TERMS":return a({},l,{terms:u.terms});case"SET_TAXONOMY":return a({},l,{taxonomy:u.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},l,{termsListByName:u.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},l,{termsListById:u.termsListById});case"SET_TAXONOMY_NAME":return a({},l,{taxonomyName:u.taxonomyName});case"SET_CHANGE_ACTION":return a({},l,{changeAction:u.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},l,{calendarIsVisible:u.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},l,{hasValidData:u.hasValidData});case"SET_EXTRA_DATA":return a({},l,{extraData:a({},u.extraData)});case"SET_EXTRA_DATA_BY_NAME":var c=a({},l.extraData,(e={},n=u.name,i=u.value,n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e));return a({},l,{extraData:a({},c)})}return l},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}},setExtraData:function(e){return{type:"SET_EXTRA_DATA",extraData:e}},setExtraDataByName:function(e,t){return{type:"SET_EXTRA_DATA_BY_NAME",name:e,value:t}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData},getExtraData:function(e){return e.extraData},getExtraDataByName:function(e,t){return e.extraData[t]||null}}});return(0,i.register)(n),n}},39:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=ReactDOM},477:e=>{e.exports=publishpressFutureClassicEditorConfig},244:e=>{e.exports=wp},214:e=>{e.exports=wp.components},562:e=>{e.exports=wp.data},386:e=>{e.exports=wp.element},566:e=>{e.exports=wp.hooks},986:e=>{e.exports=wp.plugins},11:e=>{e.exports=wp.url}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var a=n(57),r=n(480),o=n(409),i=n(386),l=n(562),u=n(477);if(n(206),!(0,o.isGutenbergEnabled)()){var c="publishpress-future/future-action";(0,l.select)(c)||(0,r.createStore)({name:c,defaultState:{autoEnable:u.postTypeDefaultConfig.autoEnable,action:u.postTypeDefaultConfig.expireType,newStatus:u.postTypeDefaultConfig.newStatus,date:u.defaultDate,taxonomy:u.postTypeDefaultConfig.taxonomy,terms:u.postTypeDefaultConfig.terms}});var s=document.getElementById("publishpress-future-classic-editor"),m=React.createElement(a.FutureActionPanelClassicEditor,{storeName:c,postType:u.postType,isNewPost:u.isNewPost,actionsSelectOptions:u.actionsSelectOptions,statusesSelectOptions:u.statusesSelectOptions,is12Hour:u.is12Hour,timeFormat:u.timeFormat,startOfWeek:u.startOfWeek,strings:u.strings,taxonomyName:u.taxonomyName});(0,i.createRoot)(s).render(m)}})(); //# sourceMappingURL=classic-editor.js.map \ No newline at end of file diff --git a/assets/js/classic-editor.js.map b/assets/js/classic-editor.js.map index 44356b932..394c90223 100644 --- a/assets/js/classic-editor.js.map +++ b/assets/js/classic-editor.js.map @@ -1 +1 @@ -{"version":3,"file":"classic-editor.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"ReactDOM\"","webpack://post-expirator/external var \"publishpressFutureClassicEditorConfig\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap","webpack://post-expirator/./assets/jsx/classic-editor.jsx"],"sourcesContent":["/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"&wp.element\";\nimport { CheckboxControl as WPCheckboxControl } from \"&wp.components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"&wp.components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = {id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy};\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (! hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = ! props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (! props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (! enabled) {\n setValidationError('');\n return true;\n }\n\n if (! action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (! date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (! enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n {! props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n );\n};\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"&wp.data\";\nimport { useEffect } from \"&wp.element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '&wp.data';\nimport { useEffect } from '&wp.element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '&wp.element';\nimport { addQueryArgs } from '&wp.url';\nimport { applyFilters } from '&wp.hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { SelectControl as WPSelectControl } from \"&wp.components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { TextControl as WPTextControl } from \"&wp.components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '&wp.components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"&wp.element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"&wp.element\";\nimport { FormTokenField } from \"&wp.components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '&wp.data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = ReactDOM;","module.exports = publishpressFutureClassicEditorConfig;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { FutureActionPanelClassicEditor } from './components';\nimport { createStore } from './data';\nimport { isGutenbergEnabled } from './utils';\nimport { createRoot } from '&wp.element';\nimport { select } from '&wp.data';\nimport {\n postType,\n isNewPost,\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n postTypeDefaultConfig,\n defaultDate,\n statusesSelectOptions\n} from \"&config.classic-editor\";\nimport { render } from \"&ReactDOM\";\n\nif (! isGutenbergEnabled()) {\n const storeName = 'publishpress-future/future-action';\n\n if (!select(storeName)) {\n createStore({\n name: storeName,\n defaultState: {\n autoEnable: postTypeDefaultConfig.autoEnable,\n action: postTypeDefaultConfig.expireType,\n newStatus: postTypeDefaultConfig.newStatus,\n date: defaultDate,\n taxonomy: postTypeDefaultConfig.taxonomy,\n terms: postTypeDefaultConfig.terms,\n }\n });\n }\n\n const container = document.getElementById(\"publishpress-future-classic-editor\");\n const component = (\n \n );\n\n createRoot(container).render(component);\n}\n"],"names":["ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","type","enablePostExpiration","options","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","scope","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","selectors","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","ReactDOM","publishpressFutureClassicEditorConfig","hooks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defaultDate","container","getElementById","component","createRoot","render"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"classic-editor.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelAfterActionField.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelTop.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"ReactDOM\"","webpack://post-expirator/external var \"publishpressFutureClassicEditorConfig\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.plugins\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap","webpack://post-expirator/./assets/jsx/classic-editor.jsx"],"sourcesContent":["/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { CheckboxControl as WPCheckboxControl } from \"@wordpress/components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"@wordpress/components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\nimport { PluginArea } from '@wordpress/plugins';\nimport { Fill, Slot, SlotFillProvider } from '@wordpress/components';\nimport { FutureActionPanelAfterActionField } from './FutureActionPanelAfterActionField';\nimport { FutureActionPanelTop } from './FutureActionPanelTop';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = { id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy };\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = !props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (!props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (!enabled) {\n setValidationError('');\n return true;\n }\n\n if (!action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (!date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (!enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n \n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n \n\n {!props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {!hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelAfterActionField = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelAfterActionFieldSlot = (props) => (\n \n);\n\nFutureActionPanelAfterActionField.Slot = FutureActionPanelAfterActionFieldSlot;\n\nexport default FutureActionPanelAfterActionField;\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n newAttribute['extraData'] = store.getExtraData();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"@wordpress/data\";\nimport { useEffect } from \"@wordpress/element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelTop = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelTopSlot = (props) => (\n \n);\n\nFutureActionPanelTop.Slot = FutureActionPanelTopSlot;\n\nexport default FutureActionPanelTop;\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { applyFilters } from '@wordpress/hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { SelectControl as WPSelectControl } from \"@wordpress/components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { TextControl as WPTextControl } from \"@wordpress/components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '@wordpress/components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"@wordpress/element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"@wordpress/element\";\nimport { FormTokenField } from \"@wordpress/components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '@wordpress/data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n extraData: props.defaultState.extraData ? props.defaultState.extraData : {},\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n\n case 'SET_EXTRA_DATA':\n return {\n ...state,\n extraData: {\n ...action.extraData,\n }\n }\n\n case 'SET_EXTRA_DATA_BY_NAME':\n const extraData = {\n ...state.extraData,\n [action.name]: action.value\n };\n\n return {\n ...state,\n extraData: {...extraData}\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n },\n setExtraData(extraData) {\n return {\n type: 'SET_EXTRA_DATA',\n extraData: extraData\n }\n },\n setExtraDataByName(name, value) {\n return {\n type: 'SET_EXTRA_DATA_BY_NAME',\n name: name,\n value: value\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n getExtraData(state) {\n return state.extraData;\n },\n getExtraDataByName(state, name) {\n return state.extraData[name] || null;\n }\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n if (!columnData) {\n return {};\n }\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = ReactDOM;","module.exports = publishpressFutureClassicEditorConfig;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.plugins;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { FutureActionPanelClassicEditor } from './components';\nimport { createStore } from './data';\nimport { isGutenbergEnabled } from './utils';\nimport { createRoot } from '@wordpress/element';\nimport { select } from '@wordpress/data';\nimport {\n postType,\n isNewPost,\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n postTypeDefaultConfig,\n defaultDate,\n statusesSelectOptions\n} from \"&config.classic-editor\";\nimport { render } from \"react-dom\";\n\nif (! isGutenbergEnabled()) {\n const storeName = 'publishpress-future/future-action';\n\n if (!select(storeName)) {\n createStore({\n name: storeName,\n defaultState: {\n autoEnable: postTypeDefaultConfig.autoEnable,\n action: postTypeDefaultConfig.expireType,\n newStatus: postTypeDefaultConfig.newStatus,\n date: defaultDate,\n taxonomy: postTypeDefaultConfig.taxonomy,\n terms: postTypeDefaultConfig.terms,\n }\n });\n }\n\n const container = document.getElementById(\"publishpress-future-classic-editor\");\n const component = (\n \n );\n\n createRoot(container).render(component);\n}\n"],"names":["ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","SlotFillProvider","type","FutureActionPanelTop","Slot","fillProps","enablePostExpiration","options","FutureActionPanelAfterActionField","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","PluginArea","scope","Fill","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","getExtraData","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","extraData","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","setExtraData","setExtraDataByName","selectors","getExtraDataByName","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","ReactDOM","publishpressFutureClassicEditorConfig","hooks","plugins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defaultDate","container","getElementById","component","createRoot","render"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/quick-edit.js b/assets/js/quick-edit.js index e03daad3d..89de8f268 100644 --- a/assets/js/quick-edit.js +++ b/assets/js/quick-edit.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t,n,a,r,o,i,l,u,s,c={694:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},561:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(610),r=n(537);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},730:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(500),r=n(537);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},409:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(37),i=n(76),l=wp.components,u=l.PanelRow,s=l.CheckboxControl,c=l.SelectControl,d=l.FormTokenField,m=l.Spinner,p=l.BaseControl,f=wp.element,y=f.Fragment,g=f.useEffect,b=f.useState,v=wp.htmlEntities.decodeEntities,S=wp.url.addQueryArgs,E=wp.data,h=E.useSelect,_=E.useDispatch,T=wp.apiFetch;t.FutureActionPanel=function(e){var t=h((function(t){return t(e.storeName).getAction()}),[]),n=h((function(t){return t(e.storeName).getDate()}),[]),l=h((function(t){return t(e.storeName).getEnabled()}),[]),f=h((function(t){return t(e.storeName).getTerms()}),[]),E=h((function(t){return t(e.storeName).getTaxonomy()}),[]),x=h((function(t){return t(e.storeName).getTaxonomyName()}),[]),N=h((function(t){return t(e.storeName).getTermsListByName()}),[]),R=h((function(t){return t(e.storeName).getTermsListById()}),[]),C=h((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),w=h((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),O=h((function(t){return t(e.storeName).getHasValidData()}),[]),P=h((function(t){return t(e.storeName).getNewStatus()}),[]),A=b(""),k=r(A,2),I=k[0],D=k[1],F=_(e.storeName),j=F.setAction,B=F.setDate,L=F.setEnabled,M=F.setTerms,V=F.setTaxonomy,H=F.setTermsListByName,W=F.setTermsListById,Q=F.setTaxonomyName,U=F.setIsFetchingTerms,q=F.setCalendarIsVisible,Y=F.setHasValidData,z=F.setNewStatus,G=function(e){N[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:E},R[e]=e,H(N),W(R),M([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&R&&($=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return R[e]}))}(f)),"string"==typeof $&&($=[]));var ee=[];"object"===(void 0===N?"undefined":a(N))&&null!==N&&(ee=Object.keys(N));var te,ne=w?"future-action-panel":"future-action-panel hidden-calendar",ae=w?"future-action-panel-content":"future-action-panel-content hidden-calendar",re=w?"future-action-date-panel":"future-action-date-panel hidden-calendar";te="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var oe=e.actionsSelectOptions;e.taxonomy||(oe=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var ie=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var s,c=a[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var d=s.value.split("}"),m=r(d,2),p=m[0],f=m[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&c.return&&c.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),le=String(t).includes("category")&&"category-remove-all"!==t,ue=x;switch(t){case"category":ue=e.strings.newTerms.replace("%s",x);break;case"category-remove":ue=e.strings.removeTerms.replace("%s",x);break;case"category-add":ue=e.strings.addTerms.replace("%s",x)}return g((function(){if(!l)return Y(!0),void D("");Y(function(){var a=!0;if(!l)return D(""),!0;t||(D(e.strings.errorActionRequired),a=!1),n||(D(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),s=o("core/editor"),c=s.lockPostSaving,d=s.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var s=i.value,c=a(s,2),d=c[0],m=c[1];t.publishpress_future_action[d]=m}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){d("future-action")},onDataIsInvalid:function(){c("future-action")}})))}},27:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(37);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,s=n((function(t){return t(e.storeName).getDate()}),[]),c=n((function(t){return t(e.storeName).getEnabled()}),[]),d=n((function(t){return t(e.storeName).getAction()}),[]),m=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),b=i(e.storeName).setChangeAction,v=p;"object"===(void 0===p?"undefined":a(p))&&(v=p.join(","));var S=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:S,onChange:function(e){b(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:d,newStatus:m,date:s,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:c?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:s}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:v}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},21:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(352),r=n(284);n(610),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},990:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(284);n(610),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),s=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),c=l;return"object"===(void 0===l?"undefined":a(l))&&(c=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:s,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},549:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(610);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},406:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352),o=n(610),i=n(368),l=n(882),u=n(998),s=wp.components,c=s.PanelRow,d=s.BaseControl,m=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),s=a(n,2),p=s[0],f=s[1],y=(0,o.useState)([]),g=a(y,2),b=g[0],v=g[1],S=(0,o.useState)(!1),E=a(S,2),h=E[0],_=E[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],C=(0,o.useState)(e.settings.howToExpire),w=a(C,2),O=w[0],P=w[1],A=(0,o.useState)(e.settings.active),k=a(A,2),I=k[0],D=k[1],F=(0,o.useState)(e.settings.defaultExpireOffset),j=a(F,2),B=j[0],L=j[1],M=(0,o.useState)(e.settings.emailNotification),V=a(M,2),H=V[0],W=V[1],Q=(0,o.useState)(e.settings.autoEnabled),U=a(Q,2),q=U[0],Y=U[1],z=(0,o.useState)(!1),G=a(z,2),X=G[0],J=G[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],se=(0,o.useState)(e.settings.newStatus),ce=a(se,2),de=ce[0],me=ce[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],be=(0,o.useState)(""),ve=a(be,2),Se=ve[0],Ee=ve[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),v(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){J(function(){if(!I)return ee(""),!0;if(B){m&&m.abort();var e=(m="undefined"==typeof AbortController?void 0:new AbortController)?m.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Ee(e.preview):Ee("")}))}return ee(""),!0}())}),[I,p,N,O,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){X&&e.onDataIsValid&&e.onDataIsValid(e.postType),!X&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[X]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=b.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:I||!1,label:e.text.fieldActiveLabel,onChange:function(e){D(e)}}))];return I&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){Y(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:O,onChange:function(e){P(e)}}),"change-status"===O&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:de,onChange:me}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(O)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){L(e)}}),Se&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Se)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,I,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!X&&React.createElement(c,null,React.createElement(d,{className:"notice notice-error"},React.createElement("div",null,$))))}},438:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,c=a(s,2),d=c[0],m=c[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:m.label,text:e.text,postType:d,settings:m,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[d],statusesList:e.statusesList[d],key:d+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},182:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(610),r=n(537);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},97:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(610),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},248:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},65:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},56:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(610);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},181:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},774:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},236:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(610),r=n(537),o=n(352);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},28:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(537);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},76:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(28),r=n(730),o=n(610);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,s=e.is12Hour,c=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:s,startOfWeek:c}))}},303:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(610),o=n(537);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},366:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},352:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(694);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(409);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(738);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(21);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(990);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(27);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var s=n(406);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return s.PostTypeSettingsPanel}});var c=n(438);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return c.PostTypesSettingsPanels}});var d=n(97);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return d.SettingRow}});var m=n(248);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return m.SettingsFieldset}});var p=n(65);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(56);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(54);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(774);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var b=n(561);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return b.CheckboxControl}});var v=n(182);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return v.SelectControl}});var S=n(236);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return S.TextControl}});var E=n(303);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return E.TokensControl}});var h=n(549);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(366);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(181);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},91:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,n=arguments[1];switch(n.type){case"SET_ACTION":return a({},e,{action:n.action});case"SET_NEW_STATUS":return a({},e,{newStatus:n.newStatus});case"SET_DATE":return"number"!=typeof n.date&&(0,o.isNumber)(n.date)&&(n.date=parseInt(n.date)),"string"==typeof n.date&&(n.date=new Date(n.date).getTime()),n.date=(0,r.normalizeUnixTimeToSeconds)(n.date),n.date=(0,r.formatUnixTimeToTimestamp)(n.date),a({},e,{date:n.date});case"SET_ENABLED":return a({},e,{enabled:n.enabled});case"SET_TERMS":return a({},e,{terms:n.terms});case"SET_TAXONOMY":return a({},e,{taxonomy:n.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},e,{termsListByName:n.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},e,{termsListById:n.termsListById});case"SET_TAXONOMY_NAME":return a({},e,{taxonomyName:n.taxonomyName});case"SET_CHANGE_ACTION":return a({},e,{changeAction:n.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},e,{calendarIsVisible:n.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},e,{hasValidData:n.hasValidData})}return e},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData}}});return(0,i.register)(n),n}},500:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},37:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=publishpressFutureQuickEditConfig},885:e=>{e.exports=window},998:e=>{e.exports=wp},537:e=>{e.exports=wp.components},284:e=>{e.exports=wp.data},610:e=>{e.exports=wp.element},882:e=>{e.exports=wp.hooks},368:e=>{e.exports=wp.url}},d={};function m(e){var t=d[e];if(void 0!==t)return t.exports;var n=d[e]={exports:{}};return c[e](n,n.exports,m),n.exports}e=m(352),t=m(91),n=m(37),a=m(610),r=m(284),o=m(885),i=m(829),l="publishpress-future/future-action-quick-edit",u=o.inlineEditPost.edit,s=o.inlineEditPost.revert,o.inlineEditPost.edit=function(c,d){u.apply(this,arguments);var m=function(e){return"string"==typeof e||"number"==typeof e?e:e.closest("tr").id.split("-")[1]}(c),p=(0,n.getActionSettingsFromColumnData)(m),f=p.enabled,y=p.action,g=p.date,b=p.taxonomy,v=p.newStatus,S=p.terms;"string"==typeof S&&(S=S.split(",")),(0,r.select)(l)?((0,r.dispatch)(l).setEnabled(f),(0,r.dispatch)(l).setAction(y),(0,r.dispatch)(l).setDate(g),(0,r.dispatch)(l).setTaxonomy(b),(0,r.dispatch)(l).setTerms(S),(0,r.dispatch)(l).setNewStatus(v)):(0,t.createStore)({name:l,defaultState:{autoEnable:f,action:y,date:g,taxonomy:b,terms:S,newStatus:v}});var E=document.getElementById("publishpress-future-quick-edit"),h=(0,a.createRoot)(E),_=document.querySelector(".inline-edit-save .save");_&&(_.onclick=function(){setTimeout((function(){h.unmount()}),1e3)});var T=React.createElement(e.FutureActionPanelQuickEdit,{storeName:l,postType:i.postType,isNewPost:i.isNewPost,actionsSelectOptions:i.actionsSelectOptions,statusesSelectOptions:i.statusesSelectOptions,is12Hour:i.is12Hour,timeFormat:i.timeFormat,startOfWeek:i.startOfWeek,strings:i.strings,taxonomyName:i.taxonomyName,nonce:i.nonce});h.render(T),o.inlineEditPost.revert=function(){h.unmount(),s.apply(this,arguments)}}})(); +(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},311:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(5),r=n(214);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},620:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(39),r=n(214);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},418:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(409),i=n(873),l=n(986),u=n(214),c=n(61),s=n(625),d=wp.components,m=d.PanelRow,p=d.CheckboxControl,f=d.SelectControl,y=d.FormTokenField,g=d.Spinner,v=d.BaseControl,b=wp.element,E=b.Fragment,S=b.useEffect,h=b.useState,_=wp.htmlEntities.decodeEntities,T=wp.url.addQueryArgs,x=wp.data,N=x.useSelect,R=x.useDispatch,A=wp.apiFetch;t.FutureActionPanel=function(e){var t=N((function(t){return t(e.storeName).getAction()}),[]),n=N((function(t){return t(e.storeName).getDate()}),[]),d=N((function(t){return t(e.storeName).getEnabled()}),[]),b=N((function(t){return t(e.storeName).getTerms()}),[]),x=N((function(t){return t(e.storeName).getTaxonomy()}),[]),C=N((function(t){return t(e.storeName).getTaxonomyName()}),[]),P=N((function(t){return t(e.storeName).getTermsListByName()}),[]),w=N((function(t){return t(e.storeName).getTermsListById()}),[]),O=N((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),D=N((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),F=N((function(t){return t(e.storeName).getHasValidData()}),[]),k=N((function(t){return t(e.storeName).getNewStatus()}),[]),I=h(""),j=r(I,2),B=j[0],M=j[1],L=R(e.storeName),V=L.setAction,H=L.setDate,W=L.setEnabled,Q=L.setTerms,U=L.setTaxonomy,q=L.setTermsListByName,Y=L.setTermsListById,X=L.setTaxonomyName,z=L.setIsFetchingTerms,G=L.setCalendarIsVisible,J=L.setHasValidData,K=L.setNewStatus,Z=function(e){P[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:x},w[e]=e,q(P),Y(w),Q([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&w&&(ae=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return w[e]}))}(b)),"string"==typeof ae&&(ae=[]));var re=[];"object"===(void 0===P?"undefined":a(P))&&null!==P&&(re=Object.keys(P));var oe,ie=D?"future-action-panel":"future-action-panel hidden-calendar",le=D?"future-action-panel-content":"future-action-panel-content hidden-calendar",ue=D?"future-action-date-panel":"future-action-date-panel hidden-calendar";oe="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var ce=e.actionsSelectOptions;e.taxonomy||(ce=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var se=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var c,s=a[Symbol.iterator]();!(i=(c=s.next()).done);i=!0){var d=c.value.split("}"),m=r(d,2),p=m[0],f=m[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&s.return&&s.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),de=String(t).includes("category")&&"category-remove-all"!==t,me=C;switch(t){case"category":me=e.strings.newTerms.replace("%s",C);break;case"category-remove":me=e.strings.removeTerms.replace("%s",C);break;case"category-add":me=e.strings.addTerms.replace("%s",C)}return S((function(){if(!d)return J(!0),void M("");J(function(){var a=!0;if(!d)return M(""),!0;t||(M(e.strings.errorActionRequired),a=!1),n||(M(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelAfterActionField=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),c=o("core/editor"),s=c.lockPostSaving,d=c.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy(),o.extraData=r.getExtraData()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var c=i.value,s=a(c,2),d=s[0],m=s[1];t.publishpress_future_action[d]=m}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){d("future-action")},onDataIsInvalid:function(){s("future-action")}})))}},94:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(409);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,c=n((function(t){return t(e.storeName).getDate()}),[]),s=n((function(t){return t(e.storeName).getEnabled()}),[]),d=n((function(t){return t(e.storeName).getAction()}),[]),m=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),v=i(e.storeName).setChangeAction,b=p;"object"===(void 0===p?"undefined":a(p))&&(b=p.join(","));var E=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:E,onChange:function(e){v(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:d,newStatus:m,date:c,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:s?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:c}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:b}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},571:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(57),r=n(562);n(5),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},437:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(562);n(5),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),c=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),s=l;return"object"===(void 0===l?"undefined":a(l))&&(s=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:c,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},625:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelTop=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(5);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},239:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57),o=n(5),i=n(11),l=n(566),u=n(244),c=wp.components,s=c.PanelRow,d=c.BaseControl,m=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),c=a(n,2),p=c[0],f=c[1],y=(0,o.useState)([]),g=a(y,2),v=g[0],b=g[1],E=(0,o.useState)(!1),S=a(E,2),h=S[0],_=S[1],T=(0,o.useState)([]),x=a(T,2),N=x[0],R=x[1],A=(0,o.useState)(e.settings.howToExpire),C=a(A,2),P=C[0],w=C[1],O=(0,o.useState)(e.settings.active),D=a(O,2),F=D[0],k=D[1],I=(0,o.useState)(e.settings.defaultExpireOffset),j=a(I,2),B=j[0],M=j[1],L=(0,o.useState)(e.settings.emailNotification),V=a(L,2),H=V[0],W=V[1],Q=(0,o.useState)(e.settings.autoEnabled),U=a(Q,2),q=U[0],Y=U[1],X=(0,o.useState)(!1),z=a(X,2),G=z[0],J=z[1],K=(0,o.useState)(""),Z=a(K,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],ce=(0,o.useState)(e.settings.newStatus),se=a(ce,2),de=se[0],me=se[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],ve=(0,o.useState)(""),be=a(ve,2),Ee=be[0],Se=be[1],he=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===he.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),b(n),R(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){J(function(){if(!F)return ee(""),!0;if(B){m&&m.abort();var e=(m="undefined"==typeof AbortController?void 0:new AbortController)?m.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),J(e.isValid),ee(e.message),e.isValid?Se(e.preview):Se("")}))}return ee(""),!0}())}),[F,p,N,P,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==he.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){G&&e.onDataIsValid&&e.onDataIsValid(e.postType),!G&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[G]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=v.map((function(e){return e.label})),Te=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:F||!1,label:e.text.fieldActiveLabel,onChange:function(e){k(e)}}))];return F&&(Te.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){Y(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:P,onChange:function(e){w(e)}}),"change-status"===P&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:de,onChange:me}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(P)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:N,isLoading:h,onChange:function(e){R(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){M(e)}}),Ee&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,Ee)))),Te.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),Te=(0,l.applyFilters)("expirationdate_settings_posttype",Te,e,F,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:Te}),!G&&React.createElement(s,null,React.createElement(d,{className:"notice notice-error"},React.createElement("div",null,$))))}},138:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var c=l.value,s=a(c,2),d=s[0],m=s[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:m.label,text:e.text,postType:d,settings:m,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[d],statusesList:e.statusesList[d],key:d+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},858:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(5),r=n(214);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},767:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(5),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},786:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},892:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},681:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(5);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},772:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},242:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},438:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},301:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(5),r=n(214),o=n(57);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(214);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},873:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(190),r=n(620),o=n(5);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,c=e.is12Hour,s=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:c,startOfWeek:s}))}},948:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(5),o=n(214);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},57:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(442);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(418);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(864);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(571);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(437);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(94);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var c=n(239);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return c.PostTypeSettingsPanel}});var s=n(138);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return s.PostTypesSettingsPanels}});var d=n(767);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return d.SettingRow}});var m=n(786);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return m.SettingsFieldset}});var p=n(892);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(681);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(772);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(438);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var v=n(311);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return v.CheckboxControl}});var b=n(858);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return b.SelectControl}});var E=n(301);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return E.TextControl}});var S=n(948);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return S.TokensControl}});var h=n(13);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return h.NonceControl}});var _=n(225);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var T=n(242);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return T.Spinner}})},480:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createStore=void 0;var a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:t,u=arguments[1];switch(u.type){case"SET_ACTION":return a({},l,{action:u.action});case"SET_NEW_STATUS":return a({},l,{newStatus:u.newStatus});case"SET_DATE":return"number"!=typeof u.date&&(0,o.isNumber)(u.date)&&(u.date=parseInt(u.date)),"string"==typeof u.date&&(u.date=new Date(u.date).getTime()),u.date=(0,r.normalizeUnixTimeToSeconds)(u.date),u.date=(0,r.formatUnixTimeToTimestamp)(u.date),a({},l,{date:u.date});case"SET_ENABLED":return a({},l,{enabled:u.enabled});case"SET_TERMS":return a({},l,{terms:u.terms});case"SET_TAXONOMY":return a({},l,{taxonomy:u.taxonomy});case"SET_TERMS_LIST_BY_NAME":return a({},l,{termsListByName:u.termsListByName});case"SET_TERMS_LIST_BY_ID":return a({},l,{termsListById:u.termsListById});case"SET_TAXONOMY_NAME":return a({},l,{taxonomyName:u.taxonomyName});case"SET_CHANGE_ACTION":return a({},l,{changeAction:u.changeAction});case"SET_CALENDAR_IS_VISIBLE":return a({},l,{calendarIsVisible:u.calendarIsVisible});case"SET_HAS_VALID_DATA":return a({},l,{hasValidData:u.hasValidData});case"SET_EXTRA_DATA":return a({},l,{extraData:a({},u.extraData)});case"SET_EXTRA_DATA_BY_NAME":var c=a({},l.extraData,(e={},n=u.name,i=u.value,n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e));return a({},l,{extraData:a({},c)})}return l},actions:{setAction:function(e){return{type:"SET_ACTION",action:e}},setNewStatus:function(e){return{type:"SET_NEW_STATUS",newStatus:e}},setDate:function(e){return{type:"SET_DATE",date:e}},setEnabled:function(e){return{type:"SET_ENABLED",enabled:e}},setTerms:function(e){return{type:"SET_TERMS",terms:e}},setTaxonomy:function(e){return{type:"SET_TAXONOMY",taxonomy:e}},setTermsListByName:function(e){return{type:"SET_TERMS_LIST_BY_NAME",termsListByName:e}},setTermsListById:function(e){return{type:"SET_TERMS_LIST_BY_ID",termsListById:e}},setTaxonomyName:function(e){return{type:"SET_TAXONOMY_NAME",taxonomyName:e}},setIsFetchingTerms:function(e){return{type:"SET_IS_FETCHING_TERMS",isFetchingTerms:e}},setChangeAction:function(e){return{type:"SET_CHANGE_ACTION",changeAction:e}},setCalendarIsVisible:function(e){return{type:"SET_CALENDAR_IS_VISIBLE",calendarIsVisible:e}},setHasValidData:function(e){return{type:"SET_HAS_VALID_DATA",hasValidData:e}},setExtraData:function(e){return{type:"SET_EXTRA_DATA",extraData:e}},setExtraDataByName:function(e,t){return{type:"SET_EXTRA_DATA_BY_NAME",name:e,value:t}}},selectors:{getAction:function(e){return e.action},getNewStatus:function(e){return e.newStatus},getDate:function(e){return e.date},getEnabled:function(e){return e.enabled},getTerms:function(e){return e.terms},getTaxonomy:function(e){return e.taxonomy},getTermsListByName:function(e){return e.termsListByName},getTermsListById:function(e){return e.termsListById},getTaxonomyName:function(e){return e.taxonomyName},getIsFetchingTerms:function(e){return e.isFetchingTerms},getChangeAction:function(e){return e.changeAction},getCalendarIsVisible:function(e){return e.calendarIsVisible},getHasValidData:function(e){return e.hasValidData},getExtraData:function(e){return e.extraData},getExtraDataByName:function(e,t){return e.extraData[t]||null}}});return(0,i.register)(n),n}},39:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=publishpressFutureQuickEditConfig},643:e=>{e.exports=window},244:e=>{e.exports=wp},214:e=>{e.exports=wp.components},562:e=>{e.exports=wp.data},5:e=>{e.exports=wp.element},566:e=>{e.exports=wp.hooks},986:e=>{e.exports=wp.plugins},11:e=>{e.exports=wp.url}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var a=n(57),r=n(480),o=n(409),i=n(5),l=n(562),u=n(643),c=n(47),s="publishpress-future/future-action-quick-edit",d=u.inlineEditPost.edit,m=u.inlineEditPost.revert;u.inlineEditPost.edit=function(e,t){d.apply(this,arguments);var n=function(e){return"string"==typeof e||"number"==typeof e?e:e.closest("tr").id.split("-")[1]}(e),p=(0,o.getActionSettingsFromColumnData)(n);if(p){var f=p.enabled,y=p.action,g=p.date,v=p.taxonomy,b=p.newStatus,E=p.terms;"string"==typeof E&&(E=E.split(",")),(0,l.select)(s)?((0,l.dispatch)(s).setEnabled(f),(0,l.dispatch)(s).setAction(y),(0,l.dispatch)(s).setDate(g),(0,l.dispatch)(s).setTaxonomy(v),(0,l.dispatch)(s).setTerms(E),(0,l.dispatch)(s).setNewStatus(b)):(0,r.createStore)({name:s,defaultState:{autoEnable:f,action:y,date:g,taxonomy:v,terms:E,newStatus:b}});var S=document.getElementById("publishpress-future-quick-edit");if(S){var h=(0,i.createRoot)(S),_=document.querySelector(".inline-edit-save .save");_&&(_.onclick=function(){setTimeout((function(){h.unmount()}),1e3)});var T=React.createElement(a.FutureActionPanelQuickEdit,{storeName:s,postType:c.postType,isNewPost:c.isNewPost,actionsSelectOptions:c.actionsSelectOptions,statusesSelectOptions:c.statusesSelectOptions,is12Hour:c.is12Hour,timeFormat:c.timeFormat,startOfWeek:c.startOfWeek,strings:c.strings,taxonomyName:c.taxonomyName,nonce:c.nonce});h.render(T),u.inlineEditPost.revert=function(){h.unmount(),m.apply(this,arguments)}}}}})(); //# sourceMappingURL=quick-edit.js.map \ No newline at end of file diff --git a/assets/js/quick-edit.js.map b/assets/js/quick-edit.js.map index a8bce30c7..eb16e2844 100644 --- a/assets/js/quick-edit.js.map +++ b/assets/js/quick-edit.js.map @@ -1 +1 @@ -{"version":3,"file":"quick-edit.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/quick-edit.jsx","webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"publishpressFutureQuickEditConfig\"","webpack://post-expirator/external var \"window\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap"],"sourcesContent":["import { FutureActionPanelQuickEdit } from './components';\nimport { createStore } from './data';\nimport { getActionSettingsFromColumnData } from './utils';\nimport { createRoot } from '&wp.element';\nimport { select, dispatch } from '&wp.data';\nimport { inlineEditPost } from \"&window\";\nimport {\n postType,\n isNewPost,\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n nonce,\n statusesSelectOptions\n} from \"&config.quick-edit\";\n\nconst storeName = 'publishpress-future/future-action-quick-edit';\nconst delayToUnmountAfterSaving = 1000;\n\n// We create a copy of the WP inline edit post function\nconst wpInlineEdit = inlineEditPost.edit;\nconst wpInlineEditRevert = inlineEditPost.revert;\n\nconst getPostIdFromButton = (id) => {\n // If id is a string or a number, return it directly\n if (typeof id === 'string' || typeof id === 'number') {\n return id;\n }\n\n // Otherwise, assume it's an HTML element and extract the post ID\n const trElement = id.closest('tr');\n const trId = trElement.id;\n const postId = trId.split('-')[1];\n\n return postId;\n}\n\n/**\n * We override the function with our own code so we can detect when\n * the inline edit row is displayed to recreate the React component.\n */\ninlineEditPost.edit = function (button, id) {\n // Call the original WP edit function.\n wpInlineEdit.apply(this, arguments);\n\n const postId = getPostIdFromButton(button);\n const data = getActionSettingsFromColumnData(postId);\n\n const enabled = data.enabled;\n const action = data.action;\n const date = data.date;\n const taxonomy = data.taxonomy;\n const newStatus = data.newStatus;\n\n let terms = data.terms;\n\n if (typeof terms === 'string'){\n terms = terms.split(',');\n }\n\n // if store exists, update the state. Otherwise, create it.\n if (select(storeName)) {\n dispatch(storeName).setEnabled(enabled);\n dispatch(storeName).setAction(action);\n dispatch(storeName).setDate(date);\n dispatch(storeName).setTaxonomy(taxonomy);\n dispatch(storeName).setTerms(terms);\n dispatch(storeName).setNewStatus(newStatus);\n } else {\n createStore({\n name: storeName,\n defaultState: {\n autoEnable: enabled,\n action: action,\n date: date,\n taxonomy: taxonomy,\n terms: terms,\n newStatus: newStatus,\n }\n });\n }\n\n const container = document.getElementById(\"publishpress-future-quick-edit\");\n const root = createRoot(container);\n\n const saveButton = document.querySelector('.inline-edit-save .save');\n if (saveButton) {\n saveButton.onclick = function() {\n setTimeout(() => {\n root.unmount();\n }, delayToUnmountAfterSaving);\n };\n }\n\n const component = (\n \n );\n\n root.render(component);\n\n inlineEditPost.revert = function () {\n root.unmount();\n\n // Call the original WP revert function.\n wpInlineEditRevert.apply(this, arguments);\n };\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"&wp.element\";\nimport { CheckboxControl as WPCheckboxControl } from \"&wp.components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"&wp.components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = {id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy};\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (! hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = ! props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (! props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (! enabled) {\n setValidationError('');\n return true;\n }\n\n if (! action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (! date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (! enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n {! props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n );\n};\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"&wp.data\";\nimport { useEffect } from \"&wp.element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '&wp.data';\nimport { useEffect } from '&wp.element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '&wp.element';\nimport { addQueryArgs } from '&wp.url';\nimport { applyFilters } from '&wp.hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { SelectControl as WPSelectControl } from \"&wp.components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { TextControl as WPTextControl } from \"&wp.components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '&wp.components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"&wp.element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"&wp.element\";\nimport { FormTokenField } from \"&wp.components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '&wp.data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = publishpressFutureQuickEditConfig;","module.exports = window;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["storeName","wpInlineEdit","wpInlineEditRevert","ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","type","enablePostExpiration","options","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","scope","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","selectors","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","publishpressFutureQuickEditConfig","window","hooks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","inlineEditPost","edit","revert","button","apply","this","arguments","closest","getPostIdFromButton","dispatch","container","getElementById","root","createRoot","saveButton","onclick","setTimeout","unmount","component","render"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"quick-edit.js","mappings":"uFAI4BA,EAAAA,aAAA,SAAUC,GAClC,OACI,+BACKA,EAAMC,SAGlB,C,8FCPD,OACA,SAE+BC,EAAAA,gBAAA,SAAUF,GAAO,IAGxCG,EAHwC,E,2YAAA,EACd,IAAAC,UAASJ,EAAMK,UAAW,GADZ,GACrCA,EADqC,KAC5BC,EAD4B,KAoB5C,OAbIH,EAFAH,EAAMO,qBAEQ,yBAAGC,UAAU,cAAcC,wBAAyB,CAAEC,OAAQV,EAAMG,eAEpE,yBAAGK,UAAU,eAAeR,EAAMG,aAYhD,oBAAC,EAAAQ,SAAD,KACI,oBAAC,kBAAD,CACIC,MAAOZ,EAAMY,MACbC,KAAMb,EAAMa,KACZC,GAAId,EAAMa,KACVL,UAAWR,EAAMQ,UACjBH,QAASA,IAAW,EACpBU,SAhBK,SAAUC,GACvBV,EAAWU,GAEPhB,EAAMe,UACNf,EAAMe,SAASC,EAEtB,IAaQb,EAGZ,C,yFCxCD,YACA,SAG8Bc,EAAAA,eAAA,SAAC,GAAmD,IAAlDC,EAAkD,EAAlDA,YAAaH,EAAqC,EAArCA,SAAUI,EAA2B,EAA3BA,SAAUC,EAAiB,EAAjBA,YAK7D,MAJ2B,iBAAhBF,IACPA,GAAc,IAAAG,iCAAgCH,IAI9C,oBAAC,iBAAD,CACIA,YAAaA,EACbH,SAAUA,EACVO,wBAAwB,EACxBH,SAAUA,EACVC,YAAaA,GAGxB,C,0rBClBD,SACA,SACA,SACA,SACA,QACA,S,EAE2FG,GAAGC,WAAtFC,EAAAA,EAAAA,SAAUvB,EAAAA,EAAAA,gBAAiBwB,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,eAAgBC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,Y,EACjCN,GAAGO,QAArCnB,EAAAA,EAAAA,SAAUoB,EAAAA,EAAAA,UAAW3B,EAAAA,EAAAA,SACrB4B,EAAmBT,GAAGU,aAAtBD,eACAE,EAAiBX,GAAGY,IAApBD,a,EAIJX,GAAGa,KAFHC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,YAEIC,EAAahB,GAAbgB,SAEyBC,EAAAA,kBAAA,SAACxC,GAC9B,IAAMyC,EAASJ,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWC,WAApC,GAAiD,IACpEC,EAAOR,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWG,SAApC,GAA+C,IAChEC,EAAUV,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWK,YAApC,GAAkD,IACtEC,EAAQZ,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWO,UAApC,GAAgD,IAClEC,EAAWd,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWS,aAApC,GAAmD,IACxEC,EAAehB,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWW,iBAApC,GAAuD,IAChFC,EAAkBlB,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWa,oBAApC,GAA0D,IACtFC,EAAgBpB,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWe,kBAApC,GAAwD,IAClFC,EAAkBtB,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWiB,oBAApC,GAA0D,IACtFC,EAAoBxB,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWmB,sBAApC,GAA4D,IAC1FC,EAAe1B,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWqB,iBAApC,GAAuD,IAChFC,EAAY5B,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWuB,cAApC,GAAoD,IAZxC,EAcM9D,EAAS,IAdf,SAcjC+D,EAdiC,KAchBC,EAdgB,OA6BpC9B,EAAYtC,EAAM2C,WAZlB0B,EAjBoC,EAiBpCA,UACAC,EAlBoC,EAkBpCA,QACAC,EAnBoC,EAmBpCA,WACAC,EApBoC,EAoBpCA,SACAC,EArBoC,EAqBpCA,YACAC,EAtBoC,EAsBpCA,mBACAC,EAvBoC,EAuBpCA,iBACAC,EAxBoC,EAwBpCA,gBACAC,EAzBoC,EAyBpCA,mBACAC,EA1BoC,EA0BpCA,qBACAC,EA3BoC,EA2BpCA,gBACAC,EA5BoC,EA4BpCA,aAaEC,EAAa,SAACC,GAChB3B,EAAgB2B,GAAQ,CAAEpE,GAAIoE,EAAMC,MAAO,EAAGhF,YAAa,GAAIiF,KAAM,GAAIvE,KAAMqE,EAAMG,KAAMH,EAAM/B,SAAUA,GAC3GM,EAAcyB,GAAQA,EACtBR,EAAmBnB,GACnBoB,EAAiBlB,GACjBe,EAAAA,GAAAA,O,sHAAAA,CAAavB,GAAb,CAAoBiC,IAEvB,EAkBKI,EAAmB,SAACC,EAAWvE,GACC,mBAAvBhB,EAAMwF,cACbxF,EAAMwF,aAAaD,EAAWvE,EAErC,EAEKyE,GAAsB,SAACC,GACzBnB,EAAWmB,GAEPA,IACArB,EAAUrE,EAAMyC,QAChB6B,EAAQtE,EAAM6C,MACdmC,EAAahF,EAAMiE,WACnBO,EAASxE,EAAMiD,OACfwB,EAAYzE,EAAMmD,UAElBwC,MAGJL,EAAiB,UAAWI,EAC/B,EA4BKC,GAAa,WACf,IAAIpC,EAAkB,CAAC,EACnBE,EAAgB,CAAC,EAEhBN,IAIL0B,GAAmB,GAEnBtC,EAAS,CACLqD,KAAM1D,EAAa,gCAAgCiB,KACpD0C,MAAK,SAACC,GACLA,EAAO7C,MAAM8C,SAAQ,SAAAb,GACjB3B,EAAgBvB,EAAekD,EAAKrE,OAASqE,EAC7CzB,EAAcyB,EAAKpE,IAAMkB,EAAekD,EAAKrE,KAChD,IAED6D,EAAmBnB,GACnBoB,EAAiBlB,GACjBmB,EAAgB5C,EAAe8D,EAAOzC,eACtCwB,GAAmB,EACtB,IACJ,EAMKmB,GAAkC,WACpC,OAAOC,aAAaC,QAAQ,qCAAuClG,EAAMmG,QAC5E,EAEDpE,GAAU,WACF/B,EAAMoG,0BACN7B,GAAW,GAEXA,EAAWvE,EAAM+C,SAGrBsB,EAAUrE,EAAMyC,QAChBuC,EAAahF,EAAMiE,WACnBK,EAAQtE,EAAM6C,MACd2B,EAASxE,EAAMiD,OACfwB,EAAYzE,EAAMmD,UAEwB,OAAtC6C,KACAlB,EAAqB9E,EAAM6D,mBAE3BiB,EAA2D,MAAtCkB,MAIrBhG,EAAM+C,UACF/C,EAAMqG,gBAENZ,IAAoB,GAGxBE,KAEP,GAAE,IAEH5D,GAAU,WAtC8B,IAACf,IAuCL6C,EAtChCoC,aAAaK,QAAQ,qCAAuCtG,EAAMmG,QAASnF,EAAQ,IAAM,IAuC5F,GAAE,CAAC6C,IAEJ9B,GAAU,WACFgC,GAAgB/D,EAAMuG,eACtBvG,EAAMuG,iBAGLxC,GAAgB/D,EAAMwG,iBACvBxG,EAAMwG,iBAEb,GAAE,CAACzC,IAEJ,IAAI0C,GAAgB,GAChBxD,GAASA,EAAMyD,OAAS,GAAKjD,IAC7BgD,IAAgB,IAAAE,SAlKK,SAAC1D,GACtB,MAAqB,iBAAjB,IAAOA,EAAP,cAAOA,KAAgC,OAAVA,EACtB,CAAC,EAGLA,EAAM2D,KAAI,SAAC1B,GACd,OAAOzB,EAAcyB,EACxB,GACJ,CA0J2B2B,CAAiB5D,IAEZ,iBAAlBwD,KACPA,GAAgB,KAIxB,IAAIK,GAAsB,GACK,iBAA3B,IAAOvD,EAAP,cAAOA,KAAoD,OAApBA,IACvCuD,GAAsBC,OAAOC,KAAKzD,IAGtC,IAII0D,GAJEC,GAAarD,EAAoB,sBAAwB,sCACzDsD,GAAoBtD,EAAoB,8BAAgC,8CACxEuD,GAAiBvD,EAAoB,2BAA6B,2CAIpEoD,GADqB,cAArBjH,EAAMqH,YACMrH,EAAMmB,SAEc,QAArBnB,EAAMqH,WAGrB,IAoBIC,GAAuBtH,EAAMsH,qBAC5BtH,EAAMmD,WACPmE,GAAuBtH,EAAMsH,qBAAqBC,QAAO,SAACC,GACtD,OAAuG,IAAhG,CAAC,WAAY,eAAgB,kBAAmB,uBAAuBC,QAAQD,EAAKxG,MAC9F,KAGL,IAAM0G,GA3B+B,SAACC,EAAQC,EAAMC,GAChD,IAAMC,EAAQH,EAAOI,MAAM,KACrBjC,EAAS,GAEfA,EAAOkC,KAAKF,EAAMG,SAJyC,2BAM3D,YAAmBH,EAAnB,+CAA0B,eACOC,MAAM,KADb,SACfG,EADe,KACPC,EADO,KAGtBrC,EAAOkC,KACH,yBAAGJ,KAAMA,EAAMC,OAiBwG,SAjBxFO,IAAKR,GAAOM,IAG/CpC,EAAOkC,KAAKG,EACf,CAd0D,8EAgB3D,OAAOrC,CACV,CAUgBuC,CAA6BrI,EAAMsI,QAAQC,qBAAsB,iDAC5EC,GAAuBC,OAAOhG,GAAQiG,SAAS,aAA0B,wBAAXjG,EAEhEkG,GAAkBtF,EACtB,OAAQZ,GACJ,IAAK,WACDkG,GAAkB3I,EAAMsI,QAAQM,SAASC,QAAQ,KAAMxF,GACvD,MACJ,IAAK,kBACDsF,GAAkB3I,EAAMsI,QAAQQ,YAAYD,QAAQ,KAAMxF,GAC1D,MACJ,IAAK,eACDsF,GAAkB3I,EAAMsI,QAAQS,SAASF,QAAQ,KAAMxF,GA8D/D,OAnBAtB,GAAU,WACN,IAAKgB,EAID,OAHAgC,GAAgB,QAChBX,EAAmB,IAKvBW,EA/CiB,WACjB,IAAIiE,GAAQ,EAEZ,IAAKjG,EAED,OADAqB,EAAmB,KACZ,EAGN3B,IACD2B,EAAmBpE,EAAMsI,QAAQW,qBACjCD,GAAQ,GAGPnG,IACDuB,EAAmBpE,EAAMsI,QAAQY,mBACjCF,GAAQ,GAIRnG,GAAQ,IAAIsG,KAAKtG,GAAQ,IAAIsG,OAC7B/E,EAAmBpE,EAAMsI,QAAQc,iBACjCJ,GAAQ,GAGZ,IAAMK,EAAiB,CAAC,WAAY,eAAgB,mBAAmBX,SAASjG,GAC1E6G,EAAoC,IAAjBrG,EAAMyD,QAAkC,IAAjBzD,EAAMyD,SAA8B,KAAbzD,EAAM,IAA0B,MAAbA,EAAM,IAWhG,OATIoG,GAAkBC,IAClBlF,EAAmBpE,EAAMsI,QAAQiB,oBACjCP,GAAQ,GAGRA,GACA5E,EAAmB,IAGhB4E,CACV,CAUmBQ,GACnB,GAAE,CAAC/G,EAAQI,EAAME,EAASE,EAAOE,IAW9B,oBAAC,EAAAsG,iBAAD,KACI,2BAAKjJ,UAAW0G,IACXlH,EAAMoG,2BACH,6BAAOsD,KAAK,SAAS7I,KAAM,wBAAyBG,MAAO,IAG/D,oBAAC,EAAA2I,qBAAqBC,KAAtB,CAA2BC,UAAW,CAAElH,UAAW3C,EAAM2C,cAEvD3C,EAAMoG,2BACJ,oBAAC3E,EAAD,KACI,oBAACvB,EAAD,CACIU,MAAOZ,EAAMsI,QAAQwB,qBACrBzJ,QAAS0C,IAAW,EACpBhC,SAAU0E,MAKrB1C,GACG,oBAACpC,EAAD,KACI,oBAACc,EAAD,CAAUjB,UAAW2G,GAAoB,6BACrC,oBAACzF,EAAD,CACId,MAAOZ,EAAMsI,QAAQ7F,OACrBzB,MAAOyB,EACPsH,QAASzC,GACTvG,SA/PD,SAACC,GACxBqD,EAAUrD,GAEVsE,EAAiB,SAAUtE,EAC9B,KA+PmB,oBAAC,EAAAgJ,kCAAkCJ,KAAnC,CAAwCC,UAAW,CAAElH,UAAW3C,EAAM2C,aAE1D,kBAAXF,GACG,oBAAChB,EAAD,CAAUjB,UAAU,cAChB,oBAACkB,EAAD,CACId,MAAOZ,EAAMsI,QAAQrE,UACrB8F,QAAS/J,EAAMiK,sBACfjJ,MAAOiD,EACPlD,SArQF,SAACC,GAC3BgE,EAAahE,GAEbsE,EAAiB,YAAatE,EACjC,KAuQuBwH,KACI7E,GACI,oBAAClC,EAAD,KACI,oBAACI,EAAD,CAAajB,MAAOyC,GACZrD,EAAMsI,QAAQ4B,QADtB,KACkC7G,EADlC,IAEI,oBAACzB,EAAD,UAIPuB,GACD,oBAAC1B,EAAD,KACI,oBAACI,EAAD,CAAajB,MAAOyC,EAAc7C,UAAU,yBACxC,+BACI,yBAAGA,UAAU,gCADjB,IACqDR,EAAMsI,QAAQ6B,oBAMxC,IAA/BrD,GAAoBJ,QAChB,oBAACjF,EAAD,KACI,oBAACI,EAAD,CAAajB,MAAOyC,EAAc7C,UAAU,yBACxC,+BACI,yBAAGA,UAAU,gCADjB,IACqDR,EAAMsI,QAAQ8B,iBAM3E,oBAAC3I,EAAD,CAAUjB,UAAU,4BAChB,oBAACqB,EAAD,KACI,oBAACF,EAAD,CACIf,MAAO+H,GACP3H,MAAOyF,GACP4D,YAAavD,GACb/F,SAlS1B,SAACC,GACvBA,EAzDuB,SAACiC,GACxB,MAAqB,iBAAjB,IAAOA,EAAP,cAAOA,KAAgC,OAAVA,EACtB,CAAC,EAGLA,EAAM2D,KAAI,SAAC1B,GACd,OAAI3B,EAAgB2B,GACT3B,EAAgB2B,GAAMpE,IAGjCmE,EAAWC,GAEJA,EACV,GACJ,CA2CWoF,CAAmBtJ,GAE3BwD,EAASxD,GAETsE,EAAiB,QAAStE,EAC7B,EA6RmDuJ,YAAavK,EAAMsI,QAAQkC,oBAC3BC,eAAgB,IAChBC,QAtFf,SAACC,GAClCC,OAAOD,EAAE9C,QAAQgD,SAAS,SAC7B,EAqFmDC,6BAA6B,EAC7BC,oCAAoC,OAUpE,oBAACtJ,EAAD,CAAUjB,UAAW4G,IACjB,oBAAC,EAAA4D,yBAAD,CACI9J,YAAa2B,EACboI,aA1TH,SAACjK,GACtBsD,EAAQtD,GAERsE,EAAiB,OAAQtE,EAC5B,EAuT2BkK,iBAAkB,kBAAMpG,GAAsBjB,EAA5B,EAClB1C,UAAW8F,GACX7F,YAAapB,EAAMoB,YACnB+J,WAAYtH,EACZyE,QAAStI,EAAMsI,WAIvB,oBAAC7G,EAAD,KACI,2BAAKjB,UAAU,2BACX,+BAEA,4BAAMA,UAAU,6BAHpB,IAGwDkH,MAI1D3D,GACE,oBAACtC,EAAD,KACI,oBAACI,EAAD,CAAarB,UAAU,uBACnB,+BAAM2D,OAO9B,oBAAC,EAAAiH,WAAD,CAAYC,MAAM,wBAG7B,C,mRC7cD,SAEarB,EAAoCA,EAAAA,kCAAA,SAAC,GAAD,IAAG/J,EAAH,EAAGA,SAAH,OAC7C,oBAAC,EAAAqL,KAAD,CAAMzK,KAAK,qCACNZ,EAFwC,EAUjD+J,EAAkCJ,KAJY,SAAC5J,GAAD,OAC1C,oBAAC,EAAA4J,KAAD,GAAM/I,KAAK,qCAAwCb,GADT,E,UAM/BgK,C,yfCdf,QAE4CuB,EAAAA,6BAAA,SAACvL,GAAU,IAC3CwL,EAA+BjK,GAAGkK,SAAlCD,2BAD2C,EAEnBjK,GAAGa,KAA3BE,EAF2C,EAE3CA,YAAaI,EAF8B,EAE9BA,OAEb+I,EAAanJ,EAAY,eAAzBmJ,SAkCFrJ,EAAOM,EAAO,eAAegJ,uBAAuB,8BAtCP,EAwCNpJ,EAAY,eAAjDqJ,EAxC2C,EAwC3CA,eAAgBC,EAxC2B,EAwC3BA,iBAUxB,OACI,oBAACJ,EAAD,CACI3K,KAAM,mCACNgL,MAAO7L,EAAMsI,QAAQwD,WACrBC,KAAK,WACLC,YAAahM,EAAMiM,sBAAsBC,WACzC1L,UAAW,wBACX,2BAAKM,GAAG,oCACJ,oBAAC,EAAA0B,kBAAD,CACI2D,QAAS,eACTgG,SAAUnM,EAAMmM,SAChB9F,eAAgBrG,EAAMqG,eACtBiB,qBAAsBtH,EAAMsH,qBAC5B2C,sBAAuBjK,EAAMiK,sBAC7BlH,QAASX,EAAKW,QACdc,mBAAmB,EACnBpB,OAAQL,EAAKK,OACbwB,UAAW7B,EAAK6B,UAChBpB,KAAMT,EAAKS,KACXI,MAAOb,EAAKa,MACZE,SAAUf,EAAKe,SACfE,aAAcrD,EAAMqD,aACpBmC,aArDK,SAACD,EAAWvE,GAC7B,IAAMoL,EAAQ1J,EAAO1C,EAAM2C,WAErB0J,EAAe,CACjB,QAAWD,EAAMpJ,cAGjBqJ,EAAatJ,UACbsJ,EAAA,OAAyBD,EAAMxJ,YAC/ByJ,EAAA,UAA4BD,EAAMlI,eAClCmI,EAAA,KAAuBD,EAAMtJ,UAC7BuJ,EAAA,MAAwBD,EAAMlJ,WAC9BmJ,EAAA,SAA2BD,EAAMhJ,cACjCiJ,EAAA,UAA4BD,EAAME,gBA1BhB,SAACD,GACvB,IAAM9G,EAAY,CACdgH,2BAA4B,CAAC,GAFO,uBAMxC,YAA4BxF,OAAOyF,QAAQH,GAA3C,+CAA0D,wBAA9CxL,EAA8C,KAAxCG,EAAwC,KACtDuE,EAAUgH,2BAA2B1L,GAAQG,CAChD,CARuC,8EAUxCyK,EAASlG,EACZ,CAkBGkH,CAAkBJ,EACrB,EAqCelL,SAAUnB,EAAMmB,SAChBkG,WAAYrH,EAAMqH,WAClBjG,YAAapB,EAAMoB,YACnBuB,UAAW3C,EAAM2C,UACjB2F,QAAStI,EAAMsI,QACf/B,cApCM,WAClBqF,EAAiB,gBACpB,EAmCepF,gBAjCQ,WACpBmF,EAAe,gBAClB,KAmCJ,C,mTCrFD,QACA,SAEyCe,EAAAA,0BAAA,SAAC1M,GAAU,MACLuB,GAAGa,KAAtCC,EADwC,EACxCA,UAAWC,EAD6B,EAC7BA,YAAaI,EADgB,EAChBA,OACxBX,EAAcR,GAAGO,QAAjBC,UAWFc,EAAOR,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWG,SAApC,GAA+C,IAChEC,EAAUV,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWK,YAApC,GAAkD,IACtEP,EAASJ,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWC,WAApC,GAAiD,IACpEqB,EAAY5B,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWuB,cAApC,GAAoD,IAC1EjB,EAAQZ,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWO,UAApC,GAAgD,IAClEC,EAAWd,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWS,aAApC,GAAmD,IACxEuJ,EAAetK,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWiK,iBAApC,GAAuD,IAChF7I,EAAe1B,GAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWqB,iBAApC,GAAuD,IAGlF6I,EACAvK,EAAYtC,EAAM2C,WADlBkK,gBAGAC,EAAc7J,EACG,iBAAjB,IAAOA,EAAP,cAAOA,MACP6J,EAAc7J,EAAM8J,KAAK,MAG7B,IAIMhD,EAAU,CACZ,CAAE/I,MAAO,YAAaJ,MAAOZ,EAAMsI,QAAQ0E,UAC3C,CAAEhM,MAAO,aAAcJ,MAAOZ,EAAMsI,QAAQ2E,WAC5C,CAAEjM,MAAO,WAAYJ,MAAOZ,EAAMsI,QAAQ4E,SAC1C,CAAElM,MAAO,cAAeJ,MAAOZ,EAAMsI,QAAQ6E,YAC7C,CAAEnM,MAAO,cAAeJ,MAAOZ,EAAMsI,QAAQ8E,aAejD,OAVArL,GAAU,WAGFgC,GAAiC,cAAjB4I,EAChB/B,OAAO,cAAcyC,KAAK,YAAY,GAEtCzC,OAAO,cAAcyC,KAAK,YAAY,EAE7C,GAAE,CAACtJ,EAAc4I,IAGd,2BAAKnM,UAAW,wBACZ,oBAAC,EAAAkB,cAAD,CACId,MAAOZ,EAAMsI,QAAQgF,mBACrBzM,KAAM,mCACNG,MAAO2L,EACP5C,QAASA,EACThJ,SA/BiB,SAACC,GAC1B6L,EAAgB7L,EACnB,IAU6B,CAAC,aAAc,WAAY,eAsB1B0H,SAASiE,IAC5B,oBAAC,EAAAnK,kBAAD,CACI2D,QAAS,YACTC,2BAA2B,EAC3B+F,SAAUnM,EAAMmM,SAChB9F,eAAgBrG,EAAMuN,UACtBjG,qBAAsBtH,EAAMsH,qBAC5B2C,sBAAuBjK,EAAMiK,sBAC7BlH,SAAS,EACTc,mBAAmB,EACnBpB,OAAQA,EACRwB,UAAWA,EACXpB,KAAMA,EACNI,MAAOA,EACPE,SAAUA,EACVE,aAAcrD,EAAMqD,aACpBmC,aA7EK,SAACD,EAAWvE,IAC7B,IAAAwM,kBAAiB,8BAA8BxM,MAAQ0B,EAAO1C,EAAM2C,WAAWK,aAAe,EAAI,GAClG,IAAAwK,kBAAiB,6BAA6BxM,MAAQ0B,EAAO1C,EAAM2C,WAAWC,aAC9E,IAAA4K,kBAAiB,iCAAiCxM,MAAQ0B,EAAO1C,EAAM2C,WAAWuB,gBAClF,IAAAsJ,kBAAiB,2BAA2BxM,MAAQ0B,EAAO1C,EAAM2C,WAAWG,WAC5E,IAAA0K,kBAAiB,4BAA4BxM,MAAQ0B,EAAO1C,EAAM2C,WAAWO,WAAW6J,KAAK,MAC7F,IAAAS,kBAAiB,+BAA+BxM,MAAQ0B,EAAO1C,EAAM2C,WAAWS,aACnF,EAuEejC,SAAUnB,EAAMmB,SAChBkG,WAAYrH,EAAMqH,WAClBjG,YAAapB,EAAMoB,YACnBuB,UAAW3C,EAAM2C,UACjB2F,QAAStI,EAAMsI,UAIvB,6BAAOoB,KAAK,SAAS7I,KAAM,6BAA8BG,MAAO+B,EAAU,EAAI,IAC9E,6BAAO2G,KAAK,SAAS7I,KAAM,4BAA6BG,MAAOyB,IAC/D,6BAAOiH,KAAK,SAAS7I,KAAM,gCAAiCG,MAAOiD,IACnE,6BAAOyF,KAAK,SAAS7I,KAAM,0BAA2BG,MAAO6B,IAC7D,6BAAO6G,KAAK,SAAS7I,KAAM,2BAA4BG,MAAO8L,IAC9D,6BAAOpD,KAAK,SAAS7I,KAAM,8BAA+BG,MAAOmC,IACjE,6BAAOuG,KAAK,SAAS7I,KAAM,0BAA2BG,MAAM,cAC5D,6BAAO0I,KAAK,SAAS7I,KAAM,uBAAwBG,MAAOhB,EAAMyN,QAG3E,C,yGCvGD,YACA,SACA,KAE8CC,EAAAA,+BAAA,SAAC1N,IACb,IAAImJ,MAAOwE,oBAAzC,IAEMH,EAAmB,SAAC3M,GACtB,OAAO+M,SAASC,kBAAkBhN,GAAM,EAC3C,EA4BKiN,EAAwB,SAACjN,GAC3B,IAAMiB,EAAU0L,EAAiB3M,GACjC,OAAKiB,EAIEA,EAAQd,MAHJ,EAId,EAEKoB,EAAO,CACTW,QAA4D,MAAnD+K,EAAsB,yBAC/BrL,OAAQqL,EAAsB,wBAC9B7J,UAAW6J,EAAsB,4BACjCjL,KAAMiL,EAAsB,sBAC5B7K,MA7B8B,SAACpC,GAC/B,IAAMiB,EAAU0L,EA4BiB,uBA3BjC,IAAK1L,EACD,MAAO,GAGX,IAAImB,EAAQnB,EAAQd,MAAM+G,MAAM,KAMhC,OAJqB,IAAjB9E,EAAMyD,QAA6B,KAAbzD,EAAM,KAC5BA,EAAQ,IAGLA,EAAM2D,KAAI,SAAA1B,GAAA,OAAQ6I,SAAS7I,EAAjB,GACpB,CAgBU8I,GACP7K,SAAU2K,EAAsB,2BAWpC,OACI,2BAAKtN,UAAW,wBACZ,oBAAC,EAAAgC,kBAAD,CACI2D,QAAS,iBACTgG,SAAUnM,EAAMmM,SAChB9F,eAAgBrG,EAAMuN,UACtBjG,qBAAsBtH,EAAMsH,qBAC5B2C,sBAAuBjK,EAAMiK,sBAC7BlH,QAASX,EAAKW,QACdc,mBAAmB,EACnBpB,OAAQL,EAAKK,OACbwB,UAAW7B,EAAK6B,UAChBpB,KAAMT,EAAKS,KACXI,MAAOb,EAAKa,MACZE,SAAUf,EAAKe,SACfE,aAAcrD,EAAMqD,aACpBmC,aApES,SAACD,EAAWvE,GAC7B,IAAMoL,GAAQ,IAAA1J,QAAO1C,EAAM2C,WAE3B6K,EAAiB,yBAAyBxM,MAAQoL,EAAMpJ,aAAe,EAAI,EAC3EwK,EAAiB,wBAAwBxM,MAAQoL,EAAMxJ,YACvD4K,EAAiB,4BAA4BxM,MAAQoL,EAAMlI,eAC3DsJ,EAAiB,sBAAsBxM,MAAQoL,EAAMtJ,UACrD0K,EAAiB,uBAAuBxM,MAAQoL,EAAMlJ,WAAW6J,KAAK,KACtES,EAAiB,0BAA0BxM,MAAQoL,EAAMhJ,aAC5D,EA4DWjC,SAAUnB,EAAMmB,SAChBkG,WAAYrH,EAAMqH,WAClBjG,YAAapB,EAAMoB,YACnBuB,UAAW3C,EAAM2C,UACjB2F,QAAStI,EAAMsI,QACf/B,cA9BU,WAClBqE,OAAO,YAAYyC,KAAK,YAAY,EACvC,EA6BW7G,gBA3BY,WACpBoE,OAAO,YAAYyC,KAAK,YAAY,EACvC,IA4BJ,C,qTCzFD,QACA,SACA,KAE0CY,EAAAA,2BAAA,SAACjO,GACvC,IAEM6C,GAAO,IAAAR,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWG,SAApC,GAA+C,IAChEC,GAAU,IAAAV,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWK,YAApC,GAAkD,IACtEP,GAAS,IAAAJ,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWC,WAApC,GAAiD,IACpEK,GAAQ,IAAAZ,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWO,UAApC,GAAgD,IAClEC,GAAW,IAAAd,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWS,aAApC,GAAmD,IAExEa,IADe,IAAA5B,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWqB,iBAApC,GAAuD,KACpE,IAAA3B,YAAU,SAACK,GAAD,OAAYA,EAAO1C,EAAM2C,WAAWuB,cAApC,GAAoD,KAE5E4I,EAAc7J,EAalB,MAZqB,iBAAjB,IAAOA,EAAP,cAAOA,MACP6J,EAAc7J,EAAM8J,KAAK,MAYzB,2BAAKvM,UAAW,wBACZ,oBAAC,EAAAgC,kBAAD,CACI2D,QAAS,aACTgG,SAAUnM,EAAMmM,SAChB9F,eAAgBrG,EAAMuN,UACtBjG,qBAAsBtH,EAAMsH,qBAC5B2C,sBAAuBjK,EAAMiK,sBAC7BlH,QAASA,EACTc,mBAAmB,EACnBpB,OAAQA,EACRwB,UAAWA,EACXpB,KAAMA,EACNI,MAAOA,EACPE,SAAUA,EACVE,aAAcrD,EAAMqD,aACpBmC,aAvCS,SAACD,EAAWvE,GAAY,EAwCjCG,SAAUnB,EAAMmB,SAChBkG,WAAYrH,EAAMqH,WAClBjG,YAAapB,EAAMoB,YACnBuB,UAAW3C,EAAM2C,UACjB2F,QAAStI,EAAMsI,QACf/B,cA9BU,WAClBqE,OAAO,wBAAwByC,KAAK,YAAY,EACnD,EA6BW7G,gBA3BY,WACpBoE,OAAO,wBAAwByC,KAAK,YAAY,EACnD,IA4BO,6BAAO3D,KAAK,SAAS7I,KAAM,wBAAyBG,MAAO+B,EAAU,EAAI,IACzE,6BAAO2G,KAAK,SAAS7I,KAAM,uBAAwBG,MAAOyB,GAAkB,KAC5E,6BAAOiH,KAAK,SAAS7I,KAAM,2BAA4BG,MAAOiD,GAAwB,KACtF,6BAAOyF,KAAK,SAAS7I,KAAM,qBAAsBG,MAAO6B,GAAc,KACtE,6BAAO6G,KAAK,SAAS7I,KAAM,sBAAuBG,MAAO8L,GAA4B,KACrF,6BAAOpD,KAAK,SAAS7I,KAAM,yBAA0BG,MAAOmC,GAAsB,KAClF,6BAAOuG,KAAK,SAAS7I,KAAM,qBAAsBG,MAAM,eACvD,6BAAO0I,KAAK,SAAS7I,KAAM,uBAAwBG,MAAOhB,EAAMyN,QAG3E,C,uQChED,SAEa9D,EAAuBA,EAAAA,qBAAA,SAAC,GAAD,IAAG1J,EAAH,EAAGA,SAAH,OAChC,oBAAC,EAAAqL,KAAD,CAAMzK,KAAK,wBACNZ,EAF2B,EAUpC0J,EAAqBC,KAJY,SAAC5J,GAAD,OAC7B,oBAAC,EAAA4J,KAAD,GAAM/I,KAAK,wBAA2Bb,GADT,E,UAMlB2J,C,sFCXf,WAE4BuE,EAAAA,aAAA,SAAUlO,GASlC,OARMA,EAAMa,OACRb,EAAMa,KAAO,YAGXb,EAAMmO,WACRnO,EAAMmO,UAAW,GAIjB,oBAAC,EAAAxN,SAAD,KACI,6BAAO+I,KAAK,SAAS7I,KAAMb,EAAMa,KAAMC,GAAId,EAAMa,KAAMG,MAAOhB,EAAMyN,QAEnEzN,EAAMmO,UACH,6BAAOzE,KAAK,SAAS7I,KAAK,mBAAmBG,MAAOhB,EAAMmO,WAIzE,C,kfCnBD,QASA,OACA,QACA,SACA,S,EAEkC5M,GAAGC,WAA7BC,EAAAA,EAAAA,SAAUI,EAAAA,EAAAA,YAEduM,EAAuB,KAEUC,EAAAA,sBAAA,SAAUrO,GAC3C,IAAMsO,EAAyBtO,EAAMuO,eAAevO,EAAMmM,UADR,GAGF,IAAA/L,UAASJ,EAAMwO,SAASrL,UAHtB,SAG3CsL,EAH2C,KAGzBC,EAHyB,QAIZ,IAAAtO,UAAS,IAJG,SAI3CuO,EAJ2C,KAI9BC,EAJ8B,QAKM,IAAAxO,WAAS,GALf,SAK3CyO,EAL2C,KAKrBC,EALqB,QAMR,IAAA1O,UAAS,IAND,SAM3CqG,EAN2C,KAM5BsI,EAN4B,QAOE,IAAA3O,UAASJ,EAAMwO,SAASQ,aAP1B,SAO3CC,EAP2C,KAOvBC,EAPuB,QAQlB,IAAA9O,UAASJ,EAAMwO,SAASW,QARN,SAQ3CC,EAR2C,KAQjCC,EARiC,QASV,IAAAjP,UAASJ,EAAMwO,SAASc,qBATd,SAS3CC,EAT2C,KAS7BC,EAT6B,QAUA,IAAApP,UAASJ,EAAMwO,SAASiB,mBAVxB,SAU3CA,EAV2C,KAUxBC,EAVwB,QAWR,IAAAtP,UAASJ,EAAMwO,SAASmB,aAXhB,SAW3CC,EAX2C,KAW5BC,EAX4B,QAYV,IAAAzP,WAAS,GAZC,SAY3C2D,EAZ2C,KAY7BgB,EAZ6B,QAaJ,IAAA3E,UAAS,IAbL,SAa3C+D,EAb2C,KAa1BC,GAb0B,SAcR,IAAAhE,UAAS,IAdD,WAc3C0P,GAd2C,MAc5BC,GAd4B,UAeJ,IAAA3P,UAASkO,GAfL,WAe3C0B,GAf2C,MAe1BC,GAf0B,UAgBhB,IAAA7P,UAASJ,EAAMwO,SAASvK,WAhBR,WAgB3CA,GAhB2C,MAgBhCe,GAhBgC,UAiBM,IAAA5E,WAAS,GAjBf,WAiB3C8P,GAjB2C,MAiBrBC,GAjBqB,UAkBR,IAAA/P,UAAS,IAlBD,WAkB3CgQ,GAlB2C,MAkB5BC,GAlB4B,MAoB5CC,GAAyB,CAC3B,WACA,eACA,kBACA,wBAuEJ,IAAAvO,YAAU,WAGF,IAAIwO,EAD4B,IAAhCvQ,EAAMwQ,eAAe9J,SAGrB6J,EAAoBP,GAAgBzI,QAAO,SAACC,GACxC,OAAuD,IAAhD8I,GAAuB7I,QAAQD,EAAKxG,MAC9C,IAEDiP,GAAmBM,GAE1B,GAAE,KAEH,IAAAxO,YAAU,WACD0M,GAAqBzO,EAAMwQ,iBAIhC1B,GAAwB,IACxB,IAAAvM,UAAS,CACLqD,MAAM,IAAA1D,cAAA,gCAA6CuM,KACpD5I,MAAK,SAACC,GACL,IAAIiE,EAAU,GAEV0G,EAAuB,KACvBC,OAAAA,EAEJ5K,EAAO7C,MAAM8C,SAAQ,SAAAb,GACjBwL,EAAS,CAAE1P,MAAOkE,EAAKpE,GAAIF,MAAOsE,EAAKrE,MACvCkJ,EAAQ/B,KAAK0I,GAETjC,IAAqBzO,EAAMwO,SAASrL,UAAYnD,EAAMwO,SAASvL,MAAMyF,SAASxD,EAAKpE,MACtD,OAAzB2P,IACAA,EAAuB,IAG3BA,EAAqBzI,KAAK0I,EAAO9P,OAExC,IAEDgO,EAAe7E,GACfgF,EAAiB0B,GACjB3B,GAAwB,EAC3B,IAED9O,EAAMwQ,eAAezK,SAAQ,SAAC5C,GACtBA,EAASnC,QAAUyN,GACnBsB,GAAiB5M,EAASvC,MAEjC,IACJ,GAAE,CAAC6N,KAEJ,IAAA1M,YAAU,WACNgD,EA7FiB,WACjB,IAAMqK,EAEF,OADAhL,GAAmB,KACZ,EAGX,GAAImL,EAAc,CACVnB,GACAA,EAAqBuC,QAIzB,IAAMC,GADNxC,EAAkD,oBAApByC,qBAAkCC,EAAY,IAAID,iBAC1CzC,EAAqBwC,YAASE,EACpEX,IAAwB,IAExB,IAAA5N,UAAS,CACLqD,MAAM,IAAA1D,cAAA,0DACN6O,OAAQ,OACR3O,KAAM,CACF4O,OAAQzB,GAEZqB,OAAQA,IACT/K,MAAK,SAACC,GACLqK,IAAwB,GAExBpL,EAAgBe,EAAOmL,SACvB7M,GAAmB0B,EAAOoL,SAEtBpL,EAAOmL,QACPZ,GAAiBvK,EAAOqL,SAExBd,GAAiB,GAExB,GACJ,CAGD,OADAjM,GAAmB,KACZ,CACV,CAuDmBoF,GACnB,GAAE,CAAC4F,EAAUX,EAAkBhI,EAAewI,EAAoBa,GAAeP,KAElF,IAAAxN,YAAU,WACN,GAAK+N,GAAL,CAKA,IAAIS,EAAoB,GAExBjC,EAAuBvI,SAAQ,SAACqL,GAC5B,IAAIxQ,EAAQwQ,EAAWxQ,OAEmC,IAAtD0P,GAAuB7I,QAAQ2J,EAAWpQ,SAC1CJ,EAAQA,EAAMiI,QAAQ,KAAMiH,GAAcuB,gBAG9Cd,EAAkBvI,KAAK,CACnBhH,MAAOoQ,EAAWpQ,MAClBJ,MAAOA,GAEd,IAEDqP,GAAmBM,EAlBlB,CAmBJ,GAAE,CAACT,MAEJ,IAAA/N,YAAU,WACFgC,GAAgB/D,EAAMuG,eACtBvG,EAAMuG,cAAcvG,EAAMmM,WAGzBpI,GAAgB/D,EAAMwG,iBACvBxG,EAAMwG,gBAAgBxG,EAAMmM,SAEnC,GAAE,CAACpI,KAEJ,IAAAhC,YAAU,WACFmO,IAAwBlQ,EAAMsR,qBAC9BtR,EAAMsR,oBAAoBtR,EAAMmM,WAG/B+D,IAAwBlQ,EAAMuR,sBAC/BvR,EAAMuR,qBAAqBvR,EAAMmM,SAExC,GAAE,CAAC+D,KAEJ,IAAMsB,GAAoB7C,EAAY/H,KAAI,SAAC1B,GAAD,OAAUA,EAAKtE,KAAf,IAEtC6Q,GAAe,CACf,oBAAC,EAAAC,WAAD,CAAY9Q,MAAOZ,EAAM2R,KAAKC,YAAaxJ,IAAK,6BAA+BpI,EAAMmM,UACjF,oBAAC,EAAAjM,gBAAD,CACIW,KAAM,6BAA+Bb,EAAMmM,SAC3C9L,QAAS+O,IAAY,EACrBxO,MAAOZ,EAAM2R,KAAKE,iBAClB9Q,SApKW,SAACC,GACpBqO,EAAYrO,EACf,MA2QD,OApGIoO,IACAqC,GAAazJ,KACT,oBAAC,EAAA0J,WAAD,CAAY9Q,MAAOZ,EAAM2R,KAAKG,gBAAiB1J,IAAK,6BAA+BpI,EAAMmM,UACrF,oBAAC,EAAAjM,gBAAD,CACIW,KAAM,6BAA+Bb,EAAMmM,SAC3C9L,QAASuP,IAAiB,EAC1BhP,MAAOZ,EAAM2R,KAAKI,qBAClBhR,SApKY,SAACC,GACzB6O,EAAiB7O,EACpB,MAuKGyQ,GAAazJ,KACT,oBAAC,EAAA0J,WAAD,CAAY9Q,MAAOZ,EAAM2R,KAAKK,cAAe5J,IAAK,2BAA6BpI,EAAMmM,UACjF,oBAAC,EAAAzK,cAAD,CACIb,KAAM,2BAA6Bb,EAAMmM,SACzCpC,QAAS/J,EAAMwQ,eACfyB,SAAUxD,EACVyD,mBAAoBlS,EAAM2R,KAAKQ,aAC/BhS,YAAaH,EAAM2R,KAAKS,yBACxBhQ,KAAMpC,EAAMmM,SACZpL,SA1MS,SAAUC,GAC/B0N,EAAoB1N,EACvB,MA8MGyQ,GAAazJ,KACT,oBAAC,EAAA0J,WAAD,CAAY9Q,MAAOZ,EAAM2R,KAAKU,iBAAkBjK,IAAK,6BAA+BpI,EAAMmM,UACtF,oBAAC,EAAAzK,cAAD,CACIb,KAAM,6BAA+Bb,EAAMmM,SAC3C3L,UAAW,iBACXuJ,QAASiG,GACT7P,YAAaH,EAAM2R,KAAKW,4BACxBL,SAAUhD,EACVlO,SAhNY,SAACC,GACzBkO,EAAsBlO,EACzB,IAiNmC,kBAAvBiO,GACG,oBAAC,EAAAvN,cAAD,CACIb,KAAM,4BAA8Bb,EAAMmM,SAC1CpC,QAAS/J,EAAMuS,aACfN,SAAUhO,GACVlD,SAAUiE,KAIhBhF,EAAMwQ,eAAe9J,OAAS,GAAM,CAAC,WAAY,eAAgB,mBAAmBe,QAAQwH,IAAuB,GACjH,oBAAC,EAAAuD,cAAD,CACI5R,MAAOZ,EAAM2R,KAAKc,UAClB5R,KAAM,wBAA0Bb,EAAMmM,SACtCpC,QAASyH,GACTxQ,MAAOyF,EACPiM,UAAW7D,EACX9N,SAvOE,SAACC,GACnB+N,EAAiB/N,EACpB,EAsOmBb,YAAaH,EAAM2R,KAAKgB,qBACxBlI,eAAgB,IAChBmI,eAAe,EACfC,sBAAsB,MAMtCpB,GAAazJ,KACT,oBAAC,EAAA0J,WAAD,CAAY9Q,MAAOZ,EAAM2R,KAAKmB,2BAA4B1K,IAAK,uBAAyBpI,EAAMmM,UAC1F,oBAAC,EAAA4G,YAAD,CACIlS,KAAM,uBAAyBb,EAAMmM,SACrCnL,MAAOuO,EACPrF,QAASgG,GACT3F,YAAavK,EAAMwO,SAASwE,0BAC5B7S,YAAaH,EAAM2R,KAAKsB,sCACxB1S,sBAAsB,EACtBQ,SA9Oa,SAACC,GAC1BwO,EAAgBxO,EACnB,IA+OYoP,IACG,oBAAC,EAAAzP,SAAD,KACI,8BAAKX,EAAM2R,KAAKuB,aAChB,gCAAO9C,OAMvBqB,GAAazJ,KACT,oBAAC,EAAA0J,WAAD,CAAY9Q,MAAOZ,EAAM2R,KAAKwB,iBAAkB/K,IAAK,oCAAsCpI,EAAMmM,UAC7F,oBAAC,EAAA4G,YAAD,CACIlS,KAAM,oCAAsCb,EAAMmM,SAClD3L,UAAU,aACVQ,MAAOyO,EACPtP,YAAaH,EAAM2R,KAAKyB,4BACxBrS,SA7PkB,SAACC,GAC/B0O,EAAqB1O,EACxB,OAiQDyQ,IAAe,IAAA4B,cAAa,mCAAoC5B,GAAczR,EAAOoP,EAAUhP,EAAAA,UAG3F,oBAAC,EAAAkT,iBAAD,CAAkBC,OAAQvT,EAAMuT,QAC5B,oBAAC,EAAAC,cAAD,CAAeC,aAAchC,MAE1B1N,GACC,oBAACtC,EAAD,KACI,oBAACI,EAAD,CAAarB,UAAU,uBACnB,+BAAM2D,KAM7B,C,ofCnVD,QAEuCuP,EAAAA,wBAAA,SAAU1T,GAC7C,IAAI2T,EAAS,GADuC,uBAGpD,YAA2C5M,OAAOyF,QAAQxM,EAAMwO,UAAhE,+CAA2E,wBAA/DrC,EAA+D,KAArDyH,EAAqD,KACvED,EAAO3L,KACH,oBAAC,EAAAqG,sBAAD,CACIkF,OAAQK,EAAiBhT,MACzB+Q,KAAM3R,EAAM2R,KACZxF,SAAUA,EACVqC,SAAUoF,EACVrF,eAAgBvO,EAAMuO,eACtBiC,eAAgBxQ,EAAMwQ,eAAerE,GACrCoG,aAAcvS,EAAMuS,aAAapG,GACjC/D,IAAQ+D,EAAR,SACA5F,cAAevG,EAAMuG,cACrBC,gBAAiBxG,EAAMwG,gBACvB8K,oBAAqBtR,EAAMsR,oBAC3BC,qBAAsBvR,EAAMuR,uBAGvC,CApBmD,8EAsBpD,OAAQoC,CACX,C,wFC1BD,WACA,SAE6BjS,EAAAA,cAAA,SAAU1B,GAKnC,OACI,oBAAC,EAAAW,SAAD,KAC8B,IAAzBX,EAAM+J,QAAQrD,QACX,+BAAM1G,EAAMkS,oBAGflS,EAAM+J,QAAQrD,OAAS,GACpB,oBAAC,gBAAD,CACI9F,MAAOZ,EAAMY,MACbC,KAAMb,EAAMa,KACZC,GAAId,EAAMa,KACVL,UAAWR,EAAMQ,UACjBQ,MAAOhB,EAAMiS,SACblR,SAjBC,SAACC,GACdhB,EAAMe,SAASC,EAClB,EAgBe,YAAWhB,EAAMoC,KACjB2H,QAAS/J,EAAM+J,UAItB/J,EAAMC,SAEP,yBAAGO,UAAU,eAAeR,EAAMG,aAG7C,C,qFChCD,KAE0BuR,EAAAA,WAAA,SAAU1R,GAChC,OACI,0BAAI6T,OAAO,OACP,0BAAIxI,MAAM,OACN,6BAAOyI,QAAQ,IAAI9T,EAAMY,QAE7B,8BACKZ,EAAMC,UAItB,C,+DCZ+BqT,EAAAA,iBAAA,SAAUtT,GACtC,OACI,oCACQ,kCAASA,EAAMuT,QACdvT,EAAMC,SAGtB,C,+DCP2B8T,EAAAA,aAAA,SAAU/T,GAClC,OACI,4BAAM+Q,OAAO,QACR/Q,EAAMC,SAGlB,C,0FCPD,WAE+B+T,EAAAA,gBAAA,SAAUhU,GACrC,OACI,oBAAC,EAAAW,SAAD,KACI,8BAAKX,EAAM6L,OACX,6BAAI7L,EAAMG,aACTH,EAAMC,SAGlB,C,+DCT4BuT,EAAAA,cAAA,SAAUxT,GACnC,OACI,6BAAOQ,UAAU,cACb,iCACKR,EAAMyT,cAItB,C,+DCTsB7R,EAAAA,QAAA,SAAU5B,GAC7B,OACI,4BAAMQ,UAAU,+BAA8B,gCAAW,gCAAW,gCAAW,gCAEtF,C,+DCH2ByT,EAAAA,aAAA,SAAUjU,GAClC,OACI,6BACI0J,KAAK,SACL7I,KAAMb,EAAMa,KACZG,MAAOhB,EAAM2R,KACbuC,SAAUlU,EAAMkU,SAChB1T,UAAU,kBAGrB,C,sFCXD,WACA,SACA,QAE2BuS,EAAAA,YAAA,SAAU/S,GACjC,IAAIG,EAIAA,EAFAH,EAAMO,qBAEQ,yBAAGC,UAAU,cAAcC,wBAAyB,CAAEC,OAAQV,EAAMG,eAEpE,yBAAGK,UAAU,eAAeR,EAAMG,aAGpD,IAMIK,EAAYR,EAAMQ,UAAYR,EAAMQ,UAAY,GAMpD,OAJIR,EAAMkK,UACN1J,GAAa,kEAIb,oBAAC,EAAAG,SAAD,KACI,2BAAKH,UAAWA,GACZ,oBAAC,cAAD,CACIkJ,KAAK,OACL9I,MAAOZ,EAAMY,MACbC,KAAMb,EAAMa,KACZC,GAAId,EAAMa,KACVL,UAAWR,EAAMQ,UACjBQ,MAAOhB,EAAMgB,MACbuJ,YAAavK,EAAMuK,YACnBxJ,SAvBC,SAAUC,GACnBhB,EAAMe,UACNf,EAAMe,SAASC,EAEtB,IAsBYhB,EAAMkK,SAAW,oBAAC,EAAAtI,QAAD,MAEjBzB,GAIhB,C,4FCjDD,aAEiCgU,EAAAA,kBAAA,SAAUnU,GACvC,IAMMoU,EAAepU,EAAMoU,aAAepU,EAAMoU,aAAe,gBACzDC,EAAgBrU,EAAMqU,cAAgBrU,EAAMqU,cAAgB,kBAE5DtI,EAAO/L,EAAMmL,WAAaiJ,EAAeC,EAEzCxI,EAAQ7L,EAAMmL,WAAanL,EAAMsU,cAAgBtU,EAAMuU,eAE7D,OACI,oBAAC,EAAAC,OAAD,CACIC,SAAA,EACA5I,MAAOA,EACPE,KAAMA,EACN2I,QAlBQ,WACR1U,EAAM0U,SACN1U,EAAM0U,SAEb,EAeOlU,UAAWR,EAAMQ,WAG5B,C,mGCzBD,aACA,SACA,OAEwCwK,EAAAA,yBAAA,SAAC,GAUpC,IARGG,EAQH,EARGA,WACA7C,EAOH,EAPGA,QACA4C,EAMH,EANGA,iBACAhK,EAKH,EALGA,YACA+J,EAIH,EAJGA,aACA9J,EAGH,EAHGA,SACAC,EAEH,EAFGA,YAgCJ,OA7BA,IAAAW,YAAU,WAEN,IAAM4S,EAAsB/G,SAASgH,cAAc,kCAEnD,GAAMD,EAAN,CAIA,IAAME,EAAkBF,EAAoBG,mBAE5C,GAAMD,EAAN,CAIA,IAAME,EAAcF,EAAgBD,cAAc,8BAElD,GAAMG,EAAN,CAIA,IAAMC,EAAcD,EAAYE,YAE1BD,GAINH,EAAgBK,aAAaP,EAAqBK,EARjD,CANA,CANA,CAqBJ,IAGG,oBAAC,EAAArU,SAAD,KACI,oBAAC,EAAAwT,kBAAD,CACI3T,UAAU,gCACV2K,WAAYA,EACZiJ,aAAa,gBACbC,cAAc,WACdC,cAAehM,EAAQ6M,aACvBZ,eAAgBjM,EAAQ8M,aACxBV,QAASxJ,IAEb,oBAAC,EAAAjK,eAAD,CACIC,YAAaA,EACbH,SAAUkK,EACV3J,wBAAwB,EACxBH,SAAUA,EACVC,YAAaA,IAI5B,C,wSC7DD,OACA,SAE6BoR,EAAAA,cAAA,SAACxS,GAAU,M,2YAAA,EACE,IAAAI,UAAS,IADX,GAC7BiV,EAD6B,KAChBC,EADgB,MAGpC,IAAAvT,YAAU,WACF/B,EAAMgB,OACNsU,EAAetV,EAAMgB,MAAM+L,KAAK,KAEvC,GAAE,CAAC/M,EAAMgB,QAEV,IAAIb,OAAAA,EAEAH,EAAMG,cAGFA,EAFAH,EAAMO,qBAEQ,yBAAGC,UAAU,cAAcC,wBAAyB,CAACC,OAAQV,EAAMG,eAEnE,yBAAGK,UAAU,eAAeR,EAAMG,cAIxD,IAYMa,EAAQhB,EAAMgB,MAAQhB,EAAMgB,MAAQ,GAE1C,OACI,oBAAC,EAAAL,SAAD,KACI,oBAAC,EAAAgB,eAAD,CACIf,MAAOZ,EAAMY,MACbI,MAAOA,EACPqJ,YAAarK,EAAM+J,QACnBhJ,SApBK,SAACC,GACVhB,EAAMe,UACNf,EAAMe,SAASC,GAGE,iBAAjB,IAAOA,EAAP,cAAOA,IACPsU,EAAetU,EAAM+L,KAAK,MAE1BuI,EAAe,GAEtB,EAWW7K,eAAgBzK,EAAMyK,eACtBjK,UAAU,iCACVsK,4BAA6B9K,EAAM4S,cACnC7H,mCAAoC/K,EAAM6S,uBAE9C,6BAAOnJ,KAAK,SAAS7I,KAAMb,EAAMa,KAAMG,MAAOqU,IAE7ClV,EAGZ,C,+DCrD+BoV,EAAAA,iBAAA,SAAUvV,GAAO,IACrCW,EAAaY,GAAGO,QAAhBnB,SAEFI,EAAW,SAAC4J,GACV3K,EAAMe,UACNf,EAAMe,SACF4J,EAAE9C,OAAO7G,QAAUhB,EAAMwV,WAAa5K,OAAOD,EAAE9C,QAAQ4N,GAAG,YAIrE,EAED,OACI,oBAAC9U,EAAD,KACI,6BACI+I,KAAK,QACL7I,KAAMb,EAAMa,KACZC,GAAId,EAAMa,KAAO,QACjBG,MAAOhB,EAAMwV,UACbE,eAAgB1V,EAAMiS,SACtBlR,SAAUA,IAGd,6BAAO+S,QAAS9T,EAAMa,KAAO,SAAUb,EAAM2V,WAVjD,KAYI,6BACIjM,KAAK,QACL7I,KAAMb,EAAMa,KACZ6U,gBAAiB1V,EAAMiS,SACvBnR,GAAId,EAAMa,KAAO,SACjBG,MAAOhB,EAAM4V,WACb7U,SAAUA,IAEd,6BACI+S,QAAS9T,EAAMa,KAAO,UAAWb,EAAM6V,YAE3C,yBAAGrV,UAAU,eAAeR,EAAMG,aAG7C,C,2JC3CQJ,Y,oGACAyC,iB,+GACA+I,4B,iHACAmC,8B,6GACAO,0B,2GACAvB,yB,wGACA2B,qB,0GACAqF,uB,6FACAhC,U,mGACA4B,gB,+FACAS,Y,kGACAC,e,gGACAR,a,+FACAS,Y,kGACA/T,e,gGACAwB,a,8FACAqR,W,gGACAP,a,8FACAtE,Y,mGACAqH,gB,0FACA3T,O,iQCpBT,QACA,SACA,SAE2BkU,EAAAA,YAAA,SAAC9V,GACpBA,EAAM+V,aAAa9S,OAA6C,iBAA7BjD,EAAM+V,aAAa9S,QACtDjD,EAAM+V,aAAa9S,MAAQjD,EAAM+V,aAAa9S,MAAM8E,MAAM,KAAKnB,KAAI,SAAA1B,GAAA,OAAQ6I,SAAS7I,EAAjB,KAGvE,IAAI6Q,EAAe,CACftT,OAAQzC,EAAM+V,aAAatT,OAC3BI,KAAM7C,EAAM+V,aAAalT,KAAO7C,EAAM+V,aAAalT,MAAO,IAAAmT,6BAC1DjT,QAAS/C,EAAM+V,aAAa7J,WAC5BjJ,MAAOjD,EAAM+V,aAAa9S,MAAQjD,EAAM+V,aAAa9S,MAAQ,GAC7DE,SAAUnD,EAAM+V,aAAa5S,SAAWnD,EAAM+V,aAAa5S,SAAW,KACtEc,UAAWjE,EAAM+V,aAAa9R,UAAYjE,EAAM+V,aAAa9R,UAAY,QACzEV,gBAAiB,KACjBE,cAAe,KACfJ,aAAc,KACdM,iBAAiB,EACjBgJ,aAAc,YACd9I,mBAAmB,EACnBE,cAAc,EACdkS,UAAWjW,EAAM+V,aAAaE,UAAYjW,EAAM+V,aAAaE,UAAY,CAAC,GAGxE7J,GAAQ,IAAA8J,kBAAiBlW,EAAMa,KAAM,CACvCsV,QADuC,WACD,I,MAA9BC,EAA8B,uDAAtBL,EAActT,EAAQ,aAClC,OAAQA,EAAOiH,MACX,IAAK,aACD,YACO0M,EADP,CAEI3T,OAAQA,EAAOA,SAEvB,IAAK,iBACD,YACO2T,EADP,CAEInS,UAAWxB,EAAOwB,YAE1B,IAAK,WAiBD,MAf2B,iBAAhBxB,EAAOI,OAAqB,IAAAwT,UAAS5T,EAAOI,QACnDJ,EAAOI,KAAOkL,SAAStL,EAAOI,OAIP,iBAAhBJ,EAAOI,OACdJ,EAAOI,KAAO,IAAIsG,KAAK1G,EAAOI,MAAMyT,WAIxC7T,EAAOI,MAAO,IAAA0T,4BAA2B9T,EAAOI,MAGhDJ,EAAOI,MAAO,IAAA2T,2BAA0B/T,EAAOI,MAE/C,KACOuT,EADP,CAEIvT,KAAMJ,EAAOI,OAErB,IAAK,cACD,YACOuT,EADP,CAEIrT,QAASN,EAAOM,UAExB,IAAK,YACD,YACOqT,EADP,CAEInT,MAAOR,EAAOQ,QAEtB,IAAK,eACD,YACOmT,EADP,CAEIjT,SAAUV,EAAOU,WAEzB,IAAK,yBACD,YACOiT,EADP,CAEI7S,gBAAiBd,EAAOc,kBAEhC,IAAK,uBACD,YACO6S,EADP,CAEI3S,cAAehB,EAAOgB,gBAE9B,IAAK,oBACD,YACO2S,EADP,CAEI/S,aAAcZ,EAAOY,eAE7B,IAAK,oBACD,YACO+S,EADP,CAEIzJ,aAAclK,EAAOkK,eAE7B,IAAK,0BACD,YACOyJ,EADP,CAEIvS,kBAAmBpB,EAAOoB,oBAElC,IAAK,qBACD,YACOuS,EADP,CAEIrS,aAActB,EAAOsB,eAG7B,IAAK,iBACD,YACOqS,EADP,CAEIH,UAAAA,EAAAA,CAAAA,EACOxT,EAAOwT,aAItB,IAAK,yBACD,IAAMA,EAAY,EAAZA,CAAAA,EACCG,EAAMH,W,EADP,G,EAEDxT,EAAO5B,K,EAAO4B,EAAOzB,M,iGAG1B,YACOoV,EADP,CAEIH,UAAAA,EAAAA,CAAAA,EAAeA,KAI3B,OAAOG,CACV,EACDK,QAAS,CACLpS,UADK,SACK5B,GACN,MAAO,CACHiH,KAAM,aACNjH,OAAQA,EAEf,EACDuC,aAPK,SAOQf,GACT,MAAO,CACHyF,KAAM,iBACNzF,UAAWA,EAElB,EACDK,QAbK,SAaGzB,GACJ,MAAO,CACH6G,KAAM,WACN7G,KAAMA,EAEb,EACD0B,WAnBK,SAmBMxB,GACP,MAAO,CACH2G,KAAM,cACN3G,QAASA,EAEhB,EACDyB,SAzBK,SAyBIvB,GACL,MAAO,CACHyG,KAAM,YACNzG,MAAOA,EAEd,EACDwB,YA/BK,SA+BOtB,GACR,MAAO,CACHuG,KAAM,eACNvG,SAAUA,EAEjB,EACDuB,mBArCK,SAqCcnB,GACf,MAAO,CACHmG,KAAM,yBACNnG,gBAAiBA,EAExB,EACDoB,iBA3CK,SA2CYlB,GACb,MAAO,CACHiG,KAAM,uBACNjG,cAAeA,EAEtB,EACDmB,gBAjDK,SAiDWvB,GACZ,MAAO,CACHqG,KAAM,oBACNrG,aAAcA,EAErB,EACDwB,mBAvDK,SAuDclB,GACf,MAAO,CACH+F,KAAM,wBACN/F,gBAAiBA,EAExB,EACDkJ,gBA7DK,SA6DWF,GACZ,MAAO,CACHjD,KAAM,oBACNiD,aAAcA,EAErB,EACD7H,qBAnEK,SAmEgBjB,GACjB,MAAO,CACH6F,KAAM,0BACN7F,kBAAmBA,EAE1B,EACDkB,gBAzEK,SAyEWhB,GACZ,MAAO,CACH2F,KAAM,qBACN3F,aAAcA,EAErB,EACD2S,aA/EK,SA+EQT,GACT,MAAO,CACHvM,KAAM,iBACNuM,UAAWA,EAElB,EACDU,mBArFK,SAqFc9V,EAAMG,GACrB,MAAO,CACH0I,KAAM,yBACN7I,KAAMA,EACNG,MAAOA,EAEd,GAEL4V,UAAW,CACPhU,UADO,SACGwT,GACN,OAAOA,EAAM3T,MAChB,EACDyB,aAJO,SAIMkS,GACT,OAAOA,EAAMnS,SAChB,EACDnB,QAPO,SAOCsT,GACJ,OAAOA,EAAMvT,IAChB,EACDG,WAVO,SAUIoT,GACP,OAAOA,EAAMrT,OAChB,EACDG,SAbO,SAaEkT,GACL,OAAOA,EAAMnT,KAChB,EACDG,YAhBO,SAgBKgT,GACR,OAAOA,EAAMjT,QAChB,EACDK,mBAnBO,SAmBY4S,GACf,OAAOA,EAAM7S,eAChB,EACDG,iBAtBO,SAsBU0S,GACb,OAAOA,EAAM3S,aAChB,EACDH,gBAzBO,SAyBS8S,GACZ,OAAOA,EAAM/S,YAChB,EACDO,mBA5BO,SA4BYwS,GACf,OAAOA,EAAMzS,eAChB,EACDiJ,gBA/BO,SA+BSwJ,GACZ,OAAOA,EAAMzJ,YAChB,EACD7I,qBAlCO,SAkCcsS,GACjB,OAAOA,EAAMvS,iBAChB,EACDG,gBArCO,SAqCSoS,GACZ,OAAOA,EAAMrS,YAChB,EACDuI,aAxCO,SAwCM8J,GACT,OAAOA,EAAMH,SAChB,EACDY,mBA3CO,SA2CYT,EAAOvV,GACtB,OAAOuV,EAAMH,UAAUpV,IAAS,IACnC,KAMT,OAFA,IAAAiW,UAAS1K,GAEFA,CACV,C,8DCjRM,IAAM2K,EAA0BA,EAAAA,wBAAA,WACnC,OAAOR,GAA2B,IAAIpN,MAAOmN,UAChD,EAMYE,GAJ4BR,EAAAA,0BAAA,WACrC,OAAOQ,EAA0BO,IACpC,EAEwCP,EAAAA,0BAAA,SAACQ,GACtC,IAAMnU,EAAO,IAAIsG,KACboN,EAA2BS,IAU/B,OAPanU,EAAKoU,cAOlB,KANe,KAAOpU,EAAKqU,WAAa,IAAIC,OAAO,GAMnD,KALa,IAAMtU,EAAKC,WAAWqU,OAAO,GAK1C,KAJe,IAAMtU,EAAKuU,YAAYD,OAAO,GAI7C,KAHiB,IAAMtU,EAAKwU,cAAcF,OAAO,GAGjD,KAFiB,IAAMtU,EAAKyU,cAAcH,OAAO,EAGpD,GAQYI,GAN4BC,EAAAA,0BAAA,SAACC,GACtC,IAAM5U,EAAO,IAAIsG,KAAKsO,GAEtB,OAAOlB,EAA2B1T,EAAKyT,UAC1C,EAE8BiB,EAAAA,gBAAA,SAACE,GAC5B,OAAO1J,SAAS0J,GAAMC,WAAWhR,QAAU,EAC9C,GAEY6P,EAA6BA,EAAAA,2BAAA,SAACkB,GAGvC,OAFAA,EAAO1J,SAAS0J,GAETF,IAAoBE,EAAOA,EAAO,GAC5C,EAE8CpW,EAAAA,gCAAA,SAACoW,GAG5C,OAFAA,EAAO1J,SAAS0J,GAETF,IAA2B,IAAPE,EAAcA,CAC5C,C,+QCbYE,GA9BUhR,EAAAA,QAAA,SAACiR,GACpB,OAAKA,GAICC,MAAMC,QAAQF,IAA2B,iBAAjB,IAAOA,EAAP,cAAOA,MACjCA,EAAQ7Q,OAAOgR,OAAOH,IAGnBA,EAAMrQ,QAAO,SAACC,GACjB,OAAOA,SAAgD,KAATA,CACjD,KATU,EAUd,EAE8BwQ,EAAAA,gBAAA,SAACC,GAC5B,OAAO,SAAC9X,GAA4B,2BAAZ+Q,EAAY,6BAAZA,EAAY,kBACM,MAAlCgH,SAAWD,EAAOE,iBAClB,EAAAD,SAAQE,MAAR,SAAc,WAAYjY,GAA1B,OAA0C+Q,GAEjD,CACJ,EAEiCmH,EAAAA,mBAAA,WAC9B,OAAOzK,SAAS0K,KAAKC,UAAUC,SAAS,oBAC3C,EAE+BhL,EAAAA,iBAAA,SAAC3M,GAC7B,OAAO+M,SAASC,kBAAkBhN,GAAM,EAC3C,EAE6B8W,EAAAA,eAAA,SAAC9W,EAAM4X,GACjC,OAAO7K,SAASgH,cAAT,qBAA4C6D,EAA5C,+CAAiG5X,EAAjG,IAAyG4X,EACnH,GAEkCC,EAAAA,oBAAA,SAAC7X,EAAM4X,GACtC,IAAME,EAAQhB,EAAe9W,EAAM4X,GAEnC,OAAKE,EAIEA,EAAM3X,MAHF,IAId,EAE8C4X,EAAAA,gCAAA,SAAC/X,EAAM4X,GAClD,IAAME,EAAQhB,EAAe9W,EAAM4X,GAEnC,OAAKE,GAAUA,EAAM3X,OAIM,iBAAhB2X,EAAM3X,QACb2X,EAAM3X,MAAQ2X,EAAM3X,MAAM0W,YAGvBiB,EAAM3X,MAAM+G,MAAM,KAAKnB,KAAI,SAAA1B,GAAA,OAAQ6I,SAAS7I,EAAjB,KAPvB,EAQd,EAEwC2T,EAAAA,0BAAA,SAAChY,EAAM4X,GAC5C,IAAME,EAAQhB,EAAe9W,EAAM4X,GAEnC,QAAKE,IAIkB,MAAhBA,EAAM3X,OAAiC,SAAhB2X,EAAM3X,MACvC,EAE8C8X,EAAAA,gCAAA,SAACL,GAC5C,IAAMM,EAAanL,SAASgH,cAAT,uBAA8C6D,GAEjE,OAAKM,EAIE,CACHhW,QAA8C,MAArCgW,EAAWC,QAAQC,cAC5BxW,OAAQsW,EAAWC,QAAQE,WAC3BrW,KAAMkW,EAAWC,QAAQG,WACzBC,SAAUL,EAAWC,QAAQK,eAC7BlW,SAAU4V,EAAWC,QAAQM,eAC7BrW,MAAO8V,EAAWC,QAAQO,YAC1BtV,UAAW8U,EAAWC,QAAQQ,iBAVvB,CAAC,CAYf,EAQuBnD,EAAAA,SAAA,SAACrV,GACrB,OAAQyY,MAAMzY,EACjB,C,SC9FD0Y,EAAOC,QAAUC,iC,UCAjBF,EAAOC,QAAUE,M,UCAjBH,EAAOC,QAAUpY,E,UCAjBmY,EAAOC,QAAUpY,GAAGC,U,UCApBkY,EAAOC,QAAUpY,GAAGa,I,QCApBsX,EAAOC,QAAUpY,GAAGO,O,UCApB4X,EAAOC,QAAUpY,GAAGuY,K,UCApBJ,EAAOC,QAAUpY,GAAGwY,O,SCApBL,EAAOC,QAAUpY,GAAGY,G,GCChB6X,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBpJ,IAAjBqJ,EACH,OAAOA,EAAaR,QAGrB,IAAID,EAASM,EAAyBE,GAAY,CAGjDP,QAAS,CAAC,GAOX,OAHAS,EAAoBF,GAAUR,EAAQA,EAAOC,QAASM,GAG/CP,EAAOC,OACf,CCtBA,YACA,SACA,SACA,OACA,SACA,SACA,QAaMhX,EAAY,+CAIZ0X,EAAeC,EAAAA,eAAeC,KAC9BC,EAAqBF,EAAAA,eAAeG,OAoB1CH,EAAAA,eAAeC,KAAO,SAAUG,EAAQ5Z,GAEpCuZ,EAAaM,MAAMC,KAAMC,WAEzB,IAAMpC,EAtBkB,SAAC3X,GAEzB,MAAkB,iBAAPA,GAAiC,iBAAPA,EAC1BA,EAIOA,EAAGga,QAAQ,MACNha,GACHiH,MAAM,KAAK,EAGlC,CAUkBgT,CAAoBL,GAC7BtY,GAAO,IAAA0W,iCAAgCL,GAE7C,GAAKrW,EAAL,CAIA,IAAMW,EAAUX,EAAKW,QACfN,EAASL,EAAKK,OACdI,EAAOT,EAAKS,KACZM,EAAWf,EAAKe,SAChBc,EAAY7B,EAAK6B,UAEnBhB,EAAQb,EAAKa,MAEI,iBAAVA,IACPA,EAAQA,EAAM8E,MAAM,OAIpB,IAAArF,QAAOC,KACP,IAAAqY,UAASrY,GAAW4B,WAAWxB,IAC/B,IAAAiY,UAASrY,GAAW0B,UAAU5B,IAC9B,IAAAuY,UAASrY,GAAW2B,QAAQzB,IAC5B,IAAAmY,UAASrY,GAAW8B,YAAYtB,IAChC,IAAA6X,UAASrY,GAAW6B,SAASvB,IAC7B,IAAA+X,UAASrY,GAAWqC,aAAaf,KAEjC,IAAA6R,aAAY,CACRjV,KAAM8B,EACNoT,aAAc,CACV7J,WAAYnJ,EACZN,OAAQA,EACRI,KAAMA,EACNM,SAAUA,EACVF,MAAOA,EACPgB,UAAWA,KAKvB,IAAMgX,EAAYrN,SAASsN,eAAe,kCAC1C,GAAKD,EAAL,CAGA,IAAME,GAAO,IAAAC,YAAWH,GAElBI,EAAazN,SAASgH,cAAc,2BACtCyG,IACAA,EAAWC,QAAU,WACjBC,YAAW,WACPJ,EAAKK,SACR,GAhFqB,IAiFzB,GAGL,IAAMC,EACF,oBAAC,EAAAxN,2BAAD,CACItL,UAAWA,EACXwJ,SAAUA,EAAAA,SACVoB,UAAWA,EAAAA,UACXjG,qBAAsBA,EAAAA,qBACtB2C,sBAAuBA,EAAAA,sBACvB9I,SAAUA,EAAAA,SACVkG,WAAYA,EAAAA,WACZjG,YAAaA,EAAAA,YACbkH,QAASA,EAAAA,QACTjF,aAAcA,EAAAA,aACdoK,MAAOA,EAAAA,QAIf0N,EAAKO,OAAOD,GAEZnB,EAAAA,eAAeG,OAAS,WACpBU,EAAKK,UAGLhB,EAAmBG,MAAMC,KAAMC,UAClC,CAnCA,CAvCA,CA2EJ,C","sources":["webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelAfterActionField.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelTop.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/data.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"publishpressFutureQuickEditConfig\"","webpack://post-expirator/external var \"window\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.plugins\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap","webpack://post-expirator/./assets/jsx/quick-edit.jsx"],"sourcesContent":["/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { CheckboxControl as WPCheckboxControl } from \"@wordpress/components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"@wordpress/components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\nimport { PluginArea } from '@wordpress/plugins';\nimport { Fill, Slot, SlotFillProvider } from '@wordpress/components';\nimport { FutureActionPanelAfterActionField } from './FutureActionPanelAfterActionField';\nimport { FutureActionPanelTop } from './FutureActionPanelTop';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = { id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy };\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = !props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (!props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (!enabled) {\n setValidationError('');\n return true;\n }\n\n if (!action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (!date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (!enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n \n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n \n\n {!props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {!hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelAfterActionField = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelAfterActionFieldSlot = (props) => (\n \n);\n\nFutureActionPanelAfterActionField.Slot = FutureActionPanelAfterActionFieldSlot;\n\nexport default FutureActionPanelAfterActionField;\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n newAttribute['extraData'] = store.getExtraData();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"@wordpress/data\";\nimport { useEffect } from \"@wordpress/element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelTop = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelTopSlot = (props) => (\n \n);\n\nFutureActionPanelTop.Slot = FutureActionPanelTopSlot;\n\nexport default FutureActionPanelTop;\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { applyFilters } from '@wordpress/hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { SelectControl as WPSelectControl } from \"@wordpress/components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { TextControl as WPTextControl } from \"@wordpress/components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '@wordpress/components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"@wordpress/element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"@wordpress/element\";\nimport { FormTokenField } from \"@wordpress/components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time';\nimport { isNumber } from './utils';\nimport { register, createReduxStore } from '@wordpress/data';\n\nexport const createStore = (props) => {\n if (props.defaultState.terms && typeof props.defaultState.terms === 'string') {\n props.defaultState.terms = props.defaultState.terms.split(',').map(term => parseInt(term));\n }\n\n let defaultState = {\n action: props.defaultState.action,\n date: props.defaultState.date ? props.defaultState.date : getCurrentTimeAsTimestamp(),\n enabled: props.defaultState.autoEnable,\n terms: props.defaultState.terms ? props.defaultState.terms : [],\n taxonomy: props.defaultState.taxonomy ? props.defaultState.taxonomy : null,\n newStatus: props.defaultState.newStatus ? props.defaultState.newStatus : 'draft',\n termsListByName: null,\n termsListById: null,\n taxonomyName: null,\n isFetchingTerms: false,\n changeAction: 'no-change',\n calendarIsVisible: true,\n hasValidData: true,\n extraData: props.defaultState.extraData ? props.defaultState.extraData : {},\n }\n\n const store = createReduxStore(props.name, {\n reducer(state = defaultState, action) {\n switch (action.type) {\n case 'SET_ACTION':\n return {\n ...state,\n action: action.action,\n };\n case 'SET_NEW_STATUS':\n return {\n ...state,\n newStatus: action.newStatus,\n };\n case 'SET_DATE':\n // Make sure the date is a number, if it is a string with only numbers\n if (typeof action.date !== 'number' && isNumber(action.date)) {\n action.date = parseInt(action.date);\n }\n\n // If string, convert to unix time\n if (typeof action.date === 'string') {\n action.date = new Date(action.date).getTime();\n }\n\n // Make sure the time is always in seconds\n action.date = normalizeUnixTimeToSeconds(action.date);\n\n // Convert to formated string format, considering it is in the site's timezone\n action.date = formatUnixTimeToTimestamp(action.date);\n\n return {\n ...state,\n date: action.date,\n }\n case 'SET_ENABLED':\n return {\n ...state,\n enabled: action.enabled,\n }\n case 'SET_TERMS':\n return {\n ...state,\n terms: action.terms,\n }\n case 'SET_TAXONOMY':\n return {\n ...state,\n taxonomy: action.taxonomy,\n }\n case 'SET_TERMS_LIST_BY_NAME':\n return {\n ...state,\n termsListByName: action.termsListByName,\n }\n case 'SET_TERMS_LIST_BY_ID':\n return {\n ...state,\n termsListById: action.termsListById,\n }\n case 'SET_TAXONOMY_NAME':\n return {\n ...state,\n taxonomyName: action.taxonomyName,\n }\n case 'SET_CHANGE_ACTION':\n return {\n ...state,\n changeAction: action.changeAction,\n }\n case 'SET_CALENDAR_IS_VISIBLE':\n return {\n ...state,\n calendarIsVisible: action.calendarIsVisible,\n }\n case 'SET_HAS_VALID_DATA':\n return {\n ...state,\n hasValidData: action.hasValidData,\n }\n\n case 'SET_EXTRA_DATA':\n return {\n ...state,\n extraData: {\n ...action.extraData,\n }\n }\n\n case 'SET_EXTRA_DATA_BY_NAME':\n const extraData = {\n ...state.extraData,\n [action.name]: action.value\n };\n\n return {\n ...state,\n extraData: {...extraData}\n }\n }\n\n return state;\n },\n actions: {\n setAction(action) {\n return {\n type: 'SET_ACTION',\n action: action\n };\n },\n setNewStatus(newStatus) {\n return {\n type: 'SET_NEW_STATUS',\n newStatus: newStatus\n };\n },\n setDate(date) {\n return {\n type: 'SET_DATE',\n date: date\n };\n },\n setEnabled(enabled) {\n return {\n type: 'SET_ENABLED',\n enabled: enabled\n };\n },\n setTerms(terms) {\n return {\n type: 'SET_TERMS',\n terms: terms\n };\n },\n setTaxonomy(taxonomy) {\n return {\n type: 'SET_TAXONOMY',\n taxonomy: taxonomy\n };\n },\n setTermsListByName(termsListByName) {\n return {\n type: 'SET_TERMS_LIST_BY_NAME',\n termsListByName: termsListByName\n };\n },\n setTermsListById(termsListById) {\n return {\n type: 'SET_TERMS_LIST_BY_ID',\n termsListById: termsListById\n };\n },\n setTaxonomyName(taxonomyName) {\n return {\n type: 'SET_TAXONOMY_NAME',\n taxonomyName: taxonomyName\n };\n },\n setIsFetchingTerms(isFetchingTerms) {\n return {\n type: 'SET_IS_FETCHING_TERMS',\n isFetchingTerms: isFetchingTerms\n }\n },\n setChangeAction(changeAction) {\n return {\n type: 'SET_CHANGE_ACTION',\n changeAction: changeAction\n }\n },\n setCalendarIsVisible(calendarIsVisible) {\n return {\n type: 'SET_CALENDAR_IS_VISIBLE',\n calendarIsVisible: calendarIsVisible\n }\n },\n setHasValidData(hasValidData) {\n return {\n type: 'SET_HAS_VALID_DATA',\n hasValidData: hasValidData\n }\n },\n setExtraData(extraData) {\n return {\n type: 'SET_EXTRA_DATA',\n extraData: extraData\n }\n },\n setExtraDataByName(name, value) {\n return {\n type: 'SET_EXTRA_DATA_BY_NAME',\n name: name,\n value: value\n }\n }\n },\n selectors: {\n getAction(state) {\n return state.action;\n },\n getNewStatus(state) {\n return state.newStatus;\n },\n getDate(state) {\n return state.date;\n },\n getEnabled(state) {\n return state.enabled;\n },\n getTerms(state) {\n return state.terms;\n },\n getTaxonomy(state) {\n return state.taxonomy;\n },\n getTermsListByName(state) {\n return state.termsListByName;\n },\n getTermsListById(state) {\n return state.termsListById;\n },\n getTaxonomyName(state) {\n return state.taxonomyName;\n },\n getIsFetchingTerms(state) {\n return state.isFetchingTerms;\n },\n getChangeAction(state) {\n return state.changeAction;\n },\n getCalendarIsVisible(state) {\n return state.calendarIsVisible;\n },\n getHasValidData(state) {\n return state.hasValidData;\n },\n getExtraData(state) {\n return state.extraData;\n },\n getExtraDataByName(state, name) {\n return state.extraData[name] || null;\n }\n }\n });\n\n register(store);\n\n return store;\n}\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n if (!columnData) {\n return {};\n }\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = publishpressFutureQuickEditConfig;","module.exports = window;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.plugins;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { FutureActionPanelQuickEdit } from './components';\nimport { createStore } from './data';\nimport { getActionSettingsFromColumnData } from './utils';\nimport { createRoot } from '@wordpress/element';\nimport { select, dispatch } from '@wordpress/data';\nimport { inlineEditPost } from \"&window\";\nimport {\n postType,\n isNewPost,\n actionsSelectOptions,\n is12Hour,\n timeFormat,\n startOfWeek,\n strings,\n taxonomyName,\n nonce,\n statusesSelectOptions\n} from \"&config.quick-edit\";\n\nconst storeName = 'publishpress-future/future-action-quick-edit';\nconst delayToUnmountAfterSaving = 1000;\n\n// We create a copy of the WP inline edit post function\nconst wpInlineEdit = inlineEditPost.edit;\nconst wpInlineEditRevert = inlineEditPost.revert;\n\nconst getPostIdFromButton = (id) => {\n // If id is a string or a number, return it directly\n if (typeof id === 'string' || typeof id === 'number') {\n return id;\n }\n\n // Otherwise, assume it's an HTML element and extract the post ID\n const trElement = id.closest('tr');\n const trId = trElement.id;\n const postId = trId.split('-')[1];\n\n return postId;\n}\n\n/**\n * We override the function with our own code so we can detect when\n * the inline edit row is displayed to recreate the React component.\n */\ninlineEditPost.edit = function (button, id) {\n // Call the original WP edit function.\n wpInlineEdit.apply(this, arguments);\n\n const postId = getPostIdFromButton(button);\n const data = getActionSettingsFromColumnData(postId);\n\n if (!data) {\n return;\n }\n\n const enabled = data.enabled;\n const action = data.action;\n const date = data.date;\n const taxonomy = data.taxonomy;\n const newStatus = data.newStatus;\n\n let terms = data.terms;\n\n if (typeof terms === 'string'){\n terms = terms.split(',');\n }\n\n // if store exists, update the state. Otherwise, create it.\n if (select(storeName)) {\n dispatch(storeName).setEnabled(enabled);\n dispatch(storeName).setAction(action);\n dispatch(storeName).setDate(date);\n dispatch(storeName).setTaxonomy(taxonomy);\n dispatch(storeName).setTerms(terms);\n dispatch(storeName).setNewStatus(newStatus);\n } else {\n createStore({\n name: storeName,\n defaultState: {\n autoEnable: enabled,\n action: action,\n date: date,\n taxonomy: taxonomy,\n terms: terms,\n newStatus: newStatus,\n }\n });\n }\n\n const container = document.getElementById(\"publishpress-future-quick-edit\");\n if (!container) {\n return;\n }\n const root = createRoot(container);\n\n const saveButton = document.querySelector('.inline-edit-save .save');\n if (saveButton) {\n saveButton.onclick = function() {\n setTimeout(() => {\n root.unmount();\n }, delayToUnmountAfterSaving);\n };\n }\n\n const component = (\n \n );\n\n root.render(component);\n\n inlineEditPost.revert = function () {\n root.unmount();\n\n // Call the original WP revert function.\n wpInlineEditRevert.apply(this, arguments);\n };\n};\n"],"names":["ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","SlotFillProvider","type","FutureActionPanelTop","Slot","fillProps","enablePostExpiration","options","FutureActionPanelAfterActionField","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","PluginArea","scope","Fill","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","getExtraData","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","createStore","defaultState","getCurrentTimeAsTimestamp","extraData","createReduxStore","reducer","state","isNumber","getTime","normalizeUnixTimeToSeconds","formatUnixTimeToTimestamp","actions","setExtraData","setExtraDataByName","selectors","getExtraDataByName","register","getCurrentTimeInSeconds","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNaN","module","exports","publishpressFutureQuickEditConfig","window","hooks","plugins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","wpInlineEdit","inlineEditPost","edit","wpInlineEditRevert","revert","button","apply","this","arguments","closest","getPostIdFromButton","dispatch","container","getElementById","root","createRoot","saveButton","onclick","setTimeout","unmount","component","render"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/settings-post-types.js b/assets/js/settings-post-types.js index 82e955735..a064ab0bd 100644 --- a/assets/js/settings-post-types.js +++ b/assets/js/settings-post-types.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t,n,a,r,o,i,l={694:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},561:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(610),r=n(537);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},730:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(500),r=n(537);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},409:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(37),i=n(76),l=wp.components,u=l.PanelRow,c=l.CheckboxControl,s=l.SelectControl,d=l.FormTokenField,m=l.Spinner,p=l.BaseControl,f=wp.element,y=f.Fragment,g=f.useEffect,v=f.useState,b=wp.htmlEntities.decodeEntities,h=wp.url.addQueryArgs,E=wp.data,S=E.useSelect,_=E.useDispatch,x=wp.apiFetch;t.FutureActionPanel=function(e){var t=S((function(t){return t(e.storeName).getAction()}),[]),n=S((function(t){return t(e.storeName).getDate()}),[]),l=S((function(t){return t(e.storeName).getEnabled()}),[]),f=S((function(t){return t(e.storeName).getTerms()}),[]),E=S((function(t){return t(e.storeName).getTaxonomy()}),[]),R=S((function(t){return t(e.storeName).getTaxonomyName()}),[]),T=S((function(t){return t(e.storeName).getTermsListByName()}),[]),N=S((function(t){return t(e.storeName).getTermsListById()}),[]),C=S((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),w=S((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),P=S((function(t){return t(e.storeName).getHasValidData()}),[]),O=S((function(t){return t(e.storeName).getNewStatus()}),[]),k=v(""),F=r(k,2),D=F[0],A=F[1],j=_(e.storeName),I=j.setAction,B=j.setDate,M=j.setEnabled,V=j.setTerms,L=j.setTaxonomy,H=j.setTermsListByName,W=j.setTermsListById,Q=j.setTaxonomyName,U=j.setIsFetchingTerms,q=j.setCalendarIsVisible,z=j.setHasValidData,G=j.setNewStatus,Y=function(e){T[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:E},N[e]=e,H(T),W(N),V([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&N&&($=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return N[e]}))}(f)),"string"==typeof $&&($=[]));var ee=[];"object"===(void 0===T?"undefined":a(T))&&null!==T&&(ee=Object.keys(T));var te,ne=w?"future-action-panel":"future-action-panel hidden-calendar",ae=w?"future-action-panel-content":"future-action-panel-content hidden-calendar",re=w?"future-action-date-panel":"future-action-date-panel hidden-calendar";te="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var oe=e.actionsSelectOptions;e.taxonomy||(oe=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var ie=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,u=void 0;try{for(var c,s=a[Symbol.iterator]();!(i=(c=s.next()).done);i=!0){var d=c.value.split("}"),m=r(d,2),p=m[0],f=m[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,u=e}finally{try{!i&&s.return&&s.return()}finally{if(l)throw u}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),le=String(t).includes("category")&&"category-remove-all"!==t,ue=R;switch(t){case"category":ue=e.strings.newTerms.replace("%s",R);break;case"category-remove":ue=e.strings.removeTerms.replace("%s",R);break;case"category-add":ue=e.strings.addTerms.replace("%s",R)}return g((function(){if(!l)return z(!0),void A("");z(function(){var a=!0;if(!l)return A(""),!0;t||(A(e.strings.errorActionRequired),a=!1),n||(A(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,u=i("core/editor").getEditedPostAttribute("publishpress_future_action"),c=o("core/editor"),s=c.lockPostSaving,d=c.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:u.enabled,calendarIsVisible:!0,action:u.action,newStatus:u.newStatus,date:u.date,terms:u.terms,taxonomy:u.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,u=Object.entries(e)[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var c=i.value,s=a(c,2),d=s[0],m=s[1];t.publishpress_future_action[d]=m}}catch(e){r=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){d("future-action")},onDataIsInvalid:function(){s("future-action")}})))}},27:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(37);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,u=wp.element.useEffect,c=n((function(t){return t(e.storeName).getDate()}),[]),s=n((function(t){return t(e.storeName).getEnabled()}),[]),d=n((function(t){return t(e.storeName).getAction()}),[]),m=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),v=i(e.storeName).setChangeAction,b=p;"object"===(void 0===p?"undefined":a(p))&&(b=p.join(","));var h=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return u((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:h,onChange:function(e){v(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:d,newStatus:m,date:c,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:s?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:c}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:b}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},21:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(352),r=n(284);n(610),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},990:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(352),o=n(284);n(610),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),u=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),c=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),s=l;return"object"===(void 0===l?"undefined":a(l))&&(s=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:c,date:t,terms:l,taxonomy:u,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},549:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(610);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},406:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352),o=n(610),i=n(368),l=n(882),u=n(998),c=wp.components,s=c.PanelRow,d=c.BaseControl,m=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),c=a(n,2),p=c[0],f=c[1],y=(0,o.useState)([]),g=a(y,2),v=g[0],b=g[1],h=(0,o.useState)(!1),E=a(h,2),S=E[0],_=E[1],x=(0,o.useState)([]),R=a(x,2),T=R[0],N=R[1],C=(0,o.useState)(e.settings.howToExpire),w=a(C,2),P=w[0],O=w[1],k=(0,o.useState)(e.settings.active),F=a(k,2),D=F[0],A=F[1],j=(0,o.useState)(e.settings.defaultExpireOffset),I=a(j,2),B=I[0],M=I[1],V=(0,o.useState)(e.settings.emailNotification),L=a(V,2),H=L[0],W=L[1],Q=(0,o.useState)(e.settings.autoEnabled),U=a(Q,2),q=U[0],z=U[1],G=(0,o.useState)(!1),Y=a(G,2),J=Y[0],K=Y[1],X=(0,o.useState)(""),Z=a(X,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ue=ie[1],ce=(0,o.useState)(e.settings.newStatus),se=a(ce,2),de=se[0],me=se[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],ve=(0,o.useState)(""),be=a(ve,2),he=be[0],Ee=be[1],Se=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===Se.indexOf(e.value)})),ue(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),b(n),N(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){K(function(){if(!D)return ee(""),!0;if(B){m&&m.abort();var e=(m="undefined"==typeof AbortController?void 0:new AbortController)?m.signal:void 0;ge(!0),(0,u.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),K(e.isValid),ee(e.message),e.isValid?Ee(e.preview):Ee("")}))}return ee(""),!0}())}),[D,p,T,P,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==Se.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ue(e)}}),[ae]),(0,o.useEffect)((function(){J&&e.onDataIsValid&&e.onDataIsValid(e.postType),!J&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[J]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=v.map((function(e){return e.label})),xe=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:D||!1,label:e.text.fieldActiveLabel,onChange:function(e){A(e)}}))];return D&&(xe.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){z(e)}}))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:P,onChange:function(e){O(e)}}),"change-status"===P&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:de,onChange:me}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(P)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:T,isLoading:S,onChange:function(e){N(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){M(e)}}),he&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,he)))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),xe=(0,l.applyFilters)("expirationdate_settings_posttype",xe,e,D,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:xe}),!J&&React.createElement(s,null,React.createElement(d,{className:"notice notice-error"},React.createElement("div",null,$))))}},438:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(352);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,u=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var c=l.value,s=a(c,2),d=s[0],m=s[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:m.label,text:e.text,postType:d,settings:m,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[d],statusesList:e.statusesList[d],key:d+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}},182:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(610),r=n(537);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},97:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(610),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},248:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},65:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},56:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(610);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},181:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},774:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},236:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(610),r=n(537),o=n(352);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},28:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(537);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},76:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(28),r=n(730),o=n(610);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,u=e.onChangeDate,c=e.is12Hour,s=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:u,__nextRemoveHelpButton:!0,is12Hour:c,startOfWeek:s}))}},303:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(610),o=n(537);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var u=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:u,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},366:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},352:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(694);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(409);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(738);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(21);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(990);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var u=n(27);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return u.FutureActionPanelBulkEdit}});var c=n(406);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return c.PostTypeSettingsPanel}});var s=n(438);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return s.PostTypesSettingsPanels}});var d=n(97);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return d.SettingRow}});var m=n(248);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return m.SettingsFieldset}});var p=n(65);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(56);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(54);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(774);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var v=n(561);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return v.CheckboxControl}});var b=n(182);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return b.SelectControl}});var h=n(236);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return h.TextControl}});var E=n(303);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return E.TokensControl}});var S=n(549);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return S.NonceControl}});var _=n(366);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var x=n(181);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return x.Spinner}})},500:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},37:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=ReactDOM},890:e=>{e.exports=publishpressFutureSettingsConfig},998:e=>{e.exports=wp},537:e=>{e.exports=wp.components},284:e=>{e.exports=wp.data},610:e=>{e.exports=wp.element},882:e=>{e.exports=wp.hooks},368:e=>{e.exports=wp.url}},u={};function c(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={exports:{}};return l[e](n,n.exports,c),n.exports}e=Object.assign||function(e){for(var t=1;t{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonsPanel=function(e){return React.createElement("div",null,e.children)}},311:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CheckboxControl=void 0;var a=n(386),r=n(214);t.CheckboxControl=function(e){var t,n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,a.useState)(e.checked||!1),2),o=n[0],i=n[1];return t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description),React.createElement(a.Fragment,null,React.createElement(r.CheckboxControl,{label:e.label,name:e.name,id:e.name,className:e.className,checked:o||!1,onChange:function(t){i(t),e.onChange&&e.onChange(t)}}),t)}},620:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DateTimePicker=void 0;var a=n(39),r=n(214);t.DateTimePicker=function(e){var t=e.currentDate,n=e.onChange,o=e.is12Hour,i=e.startOfWeek;return"number"==typeof t&&(t=(0,a.normalizeUnixTimeToMilliseconds)(t)),React.createElement(r.DateTimePicker,{currentDate:t,onChange:n,__nextRemoveHelpButton:!0,is12Hour:o,startOfWeek:i})}},418:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanel=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=n(409),i=n(873),l=n(986),c=n(214),u=n(61),s=n(625),d=wp.components,m=d.PanelRow,p=d.CheckboxControl,f=d.SelectControl,y=d.FormTokenField,g=d.Spinner,v=d.BaseControl,b=wp.element,h=b.Fragment,E=b.useEffect,S=b.useState,_=wp.htmlEntities.decodeEntities,x=wp.url.addQueryArgs,R=wp.data,T=R.useSelect,N=R.useDispatch,P=wp.apiFetch;t.FutureActionPanel=function(e){var t=T((function(t){return t(e.storeName).getAction()}),[]),n=T((function(t){return t(e.storeName).getDate()}),[]),d=T((function(t){return t(e.storeName).getEnabled()}),[]),b=T((function(t){return t(e.storeName).getTerms()}),[]),R=T((function(t){return t(e.storeName).getTaxonomy()}),[]),C=T((function(t){return t(e.storeName).getTaxonomyName()}),[]),w=T((function(t){return t(e.storeName).getTermsListByName()}),[]),O=T((function(t){return t(e.storeName).getTermsListById()}),[]),F=T((function(t){return t(e.storeName).getIsFetchingTerms()}),[]),A=T((function(t){return t(e.storeName).getCalendarIsVisible()}),[]),k=T((function(t){return t(e.storeName).getHasValidData()}),[]),D=T((function(t){return t(e.storeName).getNewStatus()}),[]),j=S(""),I=r(j,2),B=I[0],M=I[1],V=N(e.storeName),L=V.setAction,H=V.setDate,W=V.setEnabled,Q=V.setTerms,U=V.setTaxonomy,q=V.setTermsListByName,z=V.setTermsListById,G=V.setTaxonomyName,Y=V.setIsFetchingTerms,J=V.setCalendarIsVisible,K=V.setHasValidData,X=V.setNewStatus,Z=function(e){w[e]={id:e,count:0,description:"",link:"",name:e,slug:e,taxonomy:R},O[e]=e,q(w),z(O),Q([].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&O&&(ae=(0,o.compact)(function(e){return"object"!==(void 0===e?"undefined":a(e))||null===e?{}:e.map((function(e){return O[e]}))}(b)),"string"==typeof ae&&(ae=[]));var re=[];"object"===(void 0===w?"undefined":a(w))&&null!==w&&(re=Object.keys(w));var oe,ie=A?"future-action-panel":"future-action-panel hidden-calendar",le=A?"future-action-panel-content":"future-action-panel-content hidden-calendar",ce=A?"future-action-date-panel":"future-action-date-panel hidden-calendar";oe="inherited"===e.timeFormat?!e.is12Hour:"24h"===e.timeFormat;var ue=e.actionsSelectOptions;e.taxonomy||(ue=e.actionsSelectOptions.filter((function(e){return-1===["category","category-add","category-remove","category-remove-all"].indexOf(e.value)})));var se=function(e,t,n){var a=e.split("{"),o=[];o.push(a.shift());var i=!0,l=!1,c=void 0;try{for(var u,s=a[Symbol.iterator]();!(i=(u=s.next()).done);i=!0){var d=u.value.split("}"),m=r(d,2),p=m[0],f=m[1];o.push(React.createElement("a",{href:t,target:"_blank",key:t},p)),o.push(f)}}catch(e){l=!0,c=e}finally{try{!i&&s.return&&s.return()}finally{if(l)throw c}}return o}(e.strings.timezoneSettingsHelp,"/wp-admin/options-general.php#timezone_string"),de=String(t).includes("category")&&"category-remove-all"!==t,me=C;switch(t){case"category":me=e.strings.newTerms.replace("%s",C);break;case"category-remove":me=e.strings.removeTerms.replace("%s",C);break;case"category-add":me=e.strings.addTerms.replace("%s",C)}return E((function(){if(!d)return K(!0),void M("");K(function(){var a=!0;if(!d)return M(""),!0;t||(M(e.strings.errorActionRequired),a=!1),n||(M(e.strings.errorDateRequired),a=!1),n&&new Date(n){Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelAfterActionField=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBlockEditor=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.FutureActionPanelBlockEditor=function(e){var t=wp.editPost.PluginDocumentSettingPanel,n=wp.data,o=n.useDispatch,i=n.select,l=o("core/editor").editPost,c=i("core/editor").getEditedPostAttribute("publishpress_future_action"),u=o("core/editor"),s=u.lockPostSaving,d=u.unlockPostSaving;return React.createElement(t,{name:"publishpress-future-action-panel",title:e.strings.panelTitle,icon:"calendar",initialOpen:e.postTypeDefaultConfig.autoEnable,className:"post-expirator-panel"},React.createElement("div",{id:"publishpress-future-block-editor"},React.createElement(r.FutureActionPanel,{context:"block-editor",postType:e.postType,isCleanNewPost:e.isCleanNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:c.enabled,calendarIsVisible:!0,action:c.action,newStatus:c.newStatus,date:c.date,terms:c.terms,taxonomy:c.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(t,n){var r=i(e.storeName),o={enabled:r.getEnabled()};o.enabled&&(o.action=r.getAction(),o.newStatus=r.getNewStatus(),o.date=r.getDate(),o.terms=r.getTerms(),o.taxonomy=r.getTaxonomy(),o.extraData=r.getExtraData()),function(e){var t={publishpress_future_action:{}},n=!0,r=!1,o=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(n=(i=c.next()).done);n=!0){var u=i.value,s=a(u,2),d=s[0],m=s[1];t.publishpress_future_action[d]=m}}catch(e){r=!0,o=e}finally{try{!n&&c.return&&c.return()}finally{if(r)throw o}}l(t)}(o)},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){d("future-action")},onDataIsInvalid:function(){s("future-action")}})))}},94:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelBulkEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(409);t.FutureActionPanelBulkEdit=function(e){var t=wp.data,n=t.useSelect,i=t.useDispatch,l=t.select,c=wp.element.useEffect,u=n((function(t){return t(e.storeName).getDate()}),[]),s=n((function(t){return t(e.storeName).getEnabled()}),[]),d=n((function(t){return t(e.storeName).getAction()}),[]),m=n((function(t){return t(e.storeName).getNewStatus()}),[]),p=n((function(t){return t(e.storeName).getTerms()}),[]),f=n((function(t){return t(e.storeName).getTaxonomy()}),[]),y=n((function(t){return t(e.storeName).getChangeAction()}),[]),g=n((function(t){return t(e.storeName).getHasValidData()}),[]),v=i(e.storeName).setChangeAction,b=p;"object"===(void 0===p?"undefined":a(p))&&(b=p.join(","));var h=[{value:"no-change",label:e.strings.noChange},{value:"change-add",label:e.strings.changeAdd},{value:"add-only",label:e.strings.addOnly},{value:"change-only",label:e.strings.changeOnly},{value:"remove-only",label:e.strings.removeOnly}];return c((function(){g||"no-change"===y?jQuery("#bulk_edit").prop("disabled",!1):jQuery("#bulk_edit").prop("disabled",!0)}),[g,y]),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.SelectControl,{label:e.strings.futureActionUpdate,name:"future_action_bulk_change_action",value:y,options:h,onChange:function(e){v(e)}}),["change-add","add-only","change-only"].includes(y)&&React.createElement(r.FutureActionPanel,{context:"bulk-edit",autoEnableAndHideCheckbox:!0,postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:!0,calendarIsVisible:!1,action:d,newStatus:m,date:u,terms:p,taxonomy:f,taxonomyName:e.taxonomyName,onChangeData:function(t,n){(0,o.getElementByName)("future_action_bulk_enabled").value=l(e.storeName).getEnabled()?1:0,(0,o.getElementByName)("future_action_bulk_action").value=l(e.storeName).getAction(),(0,o.getElementByName)("future_action_bulk_new_status").value=l(e.storeName).getNewStatus(),(0,o.getElementByName)("future_action_bulk_date").value=l(e.storeName).getDate(),(0,o.getElementByName)("future_action_bulk_terms").value=l(e.storeName).getTerms().join(","),(0,o.getElementByName)("future_action_bulk_taxonomy").value=l(e.storeName).getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings}),React.createElement("input",{type:"hidden",name:"future_action_bulk_enabled",value:s?1:0}),React.createElement("input",{type:"hidden",name:"future_action_bulk_action",value:d}),React.createElement("input",{type:"hidden",name:"future_action_bulk_new_status",value:m}),React.createElement("input",{type:"hidden",name:"future_action_bulk_date",value:u}),React.createElement("input",{type:"hidden",name:"future_action_bulk_terms",value:b}),React.createElement("input",{type:"hidden",name:"future_action_bulk_taxonomy",value:f}),React.createElement("input",{type:"hidden",name:"future_action_bulk_view",value:"bulk-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},571:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelClassicEditor=void 0;var a=n(57),r=n(562);n(386),t.FutureActionPanelClassicEditor=function(e){(new Date).getTimezoneOffset();var t=function(e){return document.getElementsByName(e)[0]},n=function(e){var n=t(e);return n?n.value:""},o={enabled:"1"===n("future_action_enabled"),action:n("future_action_action"),newStatus:n("future_action_new_status"),date:n("future_action_date"),terms:function(e){var n=t("future_action_terms");if(!n)return[];var a=n.value.split(",");return 1===a.length&&""===a[0]&&(a=[]),a.map((function(e){return parseInt(e)}))}(),taxonomy:n("future_action_taxonomy")};return React.createElement("div",{className:"post-expirator-panel"},React.createElement(a.FutureActionPanel,{context:"classic-editor",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:o.enabled,calendarIsVisible:!0,action:o.action,newStatus:o.newStatus,date:o.date,terms:o.terms,taxonomy:o.taxonomy,taxonomyName:e.taxonomyName,onChangeData:function(n,a){var o=(0,r.select)(e.storeName);t("future_action_enabled").value=o.getEnabled()?1:0,t("future_action_action").value=o.getAction(),t("future_action_new_status").value=o.getNewStatus(),t("future_action_date").value=o.getDate(),t("future_action_terms").value=o.getTerms().join(","),t("future_action_taxonomy").value=o.getTaxonomy()},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery("#publish").prop("disabled",!1)},onDataIsInvalid:function(){jQuery("#publish").prop("disabled",!0)}}))}},437:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelQuickEdit=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(57),o=n(562);n(386),t.FutureActionPanelQuickEdit=function(e){var t=(0,o.useSelect)((function(t){return t(e.storeName).getDate()}),[]),n=(0,o.useSelect)((function(t){return t(e.storeName).getEnabled()}),[]),i=(0,o.useSelect)((function(t){return t(e.storeName).getAction()}),[]),l=(0,o.useSelect)((function(t){return t(e.storeName).getTerms()}),[]),c=(0,o.useSelect)((function(t){return t(e.storeName).getTaxonomy()}),[]),u=((0,o.useSelect)((function(t){return t(e.storeName).getHasValidData()}),[]),(0,o.useSelect)((function(t){return t(e.storeName).getNewStatus()}),[])),s=l;return"object"===(void 0===l?"undefined":a(l))&&(s=l.join(",")),React.createElement("div",{className:"post-expirator-panel"},React.createElement(r.FutureActionPanel,{context:"quick-edit",postType:e.postType,isCleanNewPost:e.isNewPost,actionsSelectOptions:e.actionsSelectOptions,statusesSelectOptions:e.statusesSelectOptions,enabled:n,calendarIsVisible:!1,action:i,newStatus:u,date:t,terms:l,taxonomy:c,taxonomyName:e.taxonomyName,onChangeData:function(e,t){},is12Hour:e.is12Hour,timeFormat:e.timeFormat,startOfWeek:e.startOfWeek,storeName:e.storeName,strings:e.strings,onDataIsValid:function(){jQuery(".button-primary.save").prop("disabled",!1)},onDataIsInvalid:function(){jQuery(".button-primary.save").prop("disabled",!0)}}),React.createElement("input",{type:"hidden",name:"future_action_enabled",value:n?1:0}),React.createElement("input",{type:"hidden",name:"future_action_action",value:i||""}),React.createElement("input",{type:"hidden",name:"future_action_new_status",value:u||""}),React.createElement("input",{type:"hidden",name:"future_action_date",value:t||""}),React.createElement("input",{type:"hidden",name:"future_action_terms",value:s||""}),React.createElement("input",{type:"hidden",name:"future_action_taxonomy",value:c||""}),React.createElement("input",{type:"hidden",name:"future_action_view",value:"quick-edit"}),React.createElement("input",{type:"hidden",name:"_future_action_nonce",value:e.nonce}))}},625:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FutureActionPanelTop=void 0;var a=Object.assign||function(e){for(var t=1;t{Object.defineProperty(t,"__esModule",{value:!0}),t.NonceControl=void 0;var a=n(386);t.NonceControl=function(e){return e.name||(e.name="_wpnonce"),e.referrer||(e.referrer=!0),React.createElement(a.Fragment,null,React.createElement("input",{type:"hidden",name:e.name,id:e.name,value:e.nonce}),e.referrer&&React.createElement("input",{type:"hidden",name:"_wp_http_referer",value:e.referrer}))}},239:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypeSettingsPanel=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57),o=n(386),i=n(11),l=n(566),c=n(244),u=wp.components,s=u.PanelRow,d=u.BaseControl,m=null;t.PostTypeSettingsPanel=function(e){var t=e.expireTypeList[e.postType],n=(0,o.useState)(e.settings.taxonomy),u=a(n,2),p=u[0],f=u[1],y=(0,o.useState)([]),g=a(y,2),v=g[0],b=g[1],h=(0,o.useState)(!1),E=a(h,2),S=E[0],_=E[1],x=(0,o.useState)([]),R=a(x,2),T=R[0],N=R[1],P=(0,o.useState)(e.settings.howToExpire),C=a(P,2),w=C[0],O=C[1],F=(0,o.useState)(e.settings.active),A=a(F,2),k=A[0],D=A[1],j=(0,o.useState)(e.settings.defaultExpireOffset),I=a(j,2),B=I[0],M=I[1],V=(0,o.useState)(e.settings.emailNotification),L=a(V,2),H=L[0],W=L[1],Q=(0,o.useState)(e.settings.autoEnabled),U=a(Q,2),q=U[0],z=U[1],G=(0,o.useState)(!1),Y=a(G,2),J=Y[0],K=Y[1],X=(0,o.useState)(""),Z=a(X,2),$=Z[0],ee=Z[1],te=(0,o.useState)(""),ne=a(te,2),ae=ne[0],re=ne[1],oe=(0,o.useState)(t),ie=a(oe,2),le=ie[0],ce=ie[1],ue=(0,o.useState)(e.settings.newStatus),se=a(ue,2),de=se[0],me=se[1],pe=(0,o.useState)(!1),fe=a(pe,2),ye=fe[0],ge=fe[1],ve=(0,o.useState)(""),be=a(ve,2),he=be[0],Ee=be[1],Se=["category","category-add","category-remove","category-remove-all"];(0,o.useEffect)((function(){var t;0===e.taxonomiesList.length&&(t=le.filter((function(e){return-1===Se.indexOf(e.value)})),ce(t))}),[]),(0,o.useEffect)((function(){p&&e.taxonomiesList&&(_(!0),(0,c.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/terms/"+p)}).then((function(t){var n=[],a=null,r=void 0;t.terms.forEach((function(t){r={value:t.id,label:t.name},n.push(r),p===e.settings.taxonomy&&e.settings.terms.includes(t.id)&&(null===a&&(a=[]),a.push(r.label))})),b(n),N(a),_(!1)})),e.taxonomiesList.forEach((function(e){e.value===p&&re(e.label)})))}),[p]),(0,o.useEffect)((function(){K(function(){if(!k)return ee(""),!0;if(B){m&&m.abort();var e=(m="undefined"==typeof AbortController?void 0:new AbortController)?m.signal:void 0;ge(!0),(0,c.apiFetch)({path:(0,i.addQueryArgs)("publishpress-future/v1/settings/validate-expire-offset"),method:"POST",data:{offset:B},signal:e}).then((function(e){ge(!1),K(e.isValid),ee(e.message),e.isValid?Ee(e.preview):Ee("")}))}return ee(""),!0}())}),[k,p,T,w,ae,B]),(0,o.useEffect)((function(){if(ae){var e=[];t.forEach((function(t){var n=t.label;-1!==Se.indexOf(t.value)&&(n=n.replace("%s",ae.toLowerCase())),e.push({value:t.value,label:n})})),ce(e)}}),[ae]),(0,o.useEffect)((function(){J&&e.onDataIsValid&&e.onDataIsValid(e.postType),!J&&e.onDataIsInvalid&&e.onDataIsInvalid(e.postType)}),[J]),(0,o.useEffect)((function(){ye&&e.onValidationStarted&&e.onValidationStarted(e.postType),!ye&&e.onValidationFinished&&e.onValidationFinished(e.postType)}),[ye]);var _e=v.map((function(e){return e.label})),xe=[React.createElement(r.SettingRow,{label:e.text.fieldActive,key:"expirationdate_activemeta-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_activemeta-"+e.postType,checked:k||!1,label:e.text.fieldActiveLabel,onChange:function(e){D(e)}}))];return k&&(xe.push(React.createElement(r.SettingRow,{label:e.text.fieldAutoEnable,key:"expirationdate_autoenable-"+e.postType},React.createElement(r.CheckboxControl,{name:"expirationdate_autoenable-"+e.postType,checked:q||!1,label:e.text.fieldAutoEnableLabel,onChange:function(e){z(e)}}))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldTaxonomy,key:"expirationdate_taxonomy-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_taxonomy-"+e.postType,options:e.taxonomiesList,selected:p,noItemFoundMessage:e.text.noItemsfound,description:e.text.fieldTaxonomyDescription,data:e.postType,onChange:function(e){f(e)}}))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldHowToExpire,key:"expirationdate_expiretype-"+e.postType},React.createElement(r.SelectControl,{name:"expirationdate_expiretype-"+e.postType,className:"pe-howtoexpire",options:le,description:e.text.fieldHowToExpireDescription,selected:w,onChange:function(e){O(e)}}),"change-status"===w&&React.createElement(r.SelectControl,{name:"expirationdate_newstatus-"+e.postType,options:e.statusesList,selected:de,onChange:me}),e.taxonomiesList.length>0&&["category","category-add","category-remove"].indexOf(w)>-1&&React.createElement(r.TokensControl,{label:e.text.fieldTerm,name:"expirationdate_terms-"+e.postType,options:_e,value:T,isLoading:S,onChange:function(e){N(e)},description:e.text.fieldTermDescription,maxSuggestions:1e3,expandOnFocus:!0,autoSelectFirstMatch:!0}))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldDefaultDateTimeOffset,key:"expired-custom-date-"+e.postType},React.createElement(r.TextControl,{name:"expired-custom-date-"+e.postType,value:B,loading:ye,placeholder:e.settings.globalDefaultExpireOffset,description:e.text.fieldDefaultDateTimeOffsetDescription,unescapedDescription:!0,onChange:function(e){M(e)}}),he&&React.createElement(o.Fragment,null,React.createElement("h4",null,e.text.datePreview),React.createElement("code",null,he)))),xe.push(React.createElement(r.SettingRow,{label:e.text.fieldWhoToNotify,key:"expirationdate_emailnotification-"+e.postType},React.createElement(r.TextControl,{name:"expirationdate_emailnotification-"+e.postType,className:"large-text",value:H,description:e.text.fieldWhoToNotifyDescription,onChange:function(e){W(e)}})))),xe=(0,l.applyFilters)("expirationdate_settings_posttype",xe,e,k,o.useState),React.createElement(r.SettingsFieldset,{legend:e.legend},React.createElement(r.SettingsTable,{bodyChildren:xe}),!J&&React.createElement(s,null,React.createElement(d,{className:"notice notice-error"},React.createElement("div",null,$))))}},138:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostTypesSettingsPanels=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=n(57);t.PostTypesSettingsPanels=function(e){var t=[],n=!0,o=!1,i=void 0;try{for(var l,c=Object.entries(e.settings)[Symbol.iterator]();!(n=(l=c.next()).done);n=!0){var u=l.value,s=a(u,2),d=s[0],m=s[1];t.push(React.createElement(r.PostTypeSettingsPanel,{legend:m.label,text:e.text,postType:d,settings:m,expireTypeList:e.expireTypeList,taxonomiesList:e.taxonomiesList[d],statusesList:e.statusesList[d],key:d+"-panel",onDataIsValid:e.onDataIsValid,onDataIsInvalid:e.onDataIsInvalid,onValidationStarted:e.onValidationStarted,onValidationFinished:e.onValidationFinished}))}}catch(e){o=!0,i=e}finally{try{!n&&c.return&&c.return()}finally{if(o)throw i}}return t}},858:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectControl=void 0;var a=n(386),r=n(214);t.SelectControl=function(e){return React.createElement(a.Fragment,null,0===e.options.length&&React.createElement("div",null,e.noItemFoundMessage),e.options.length>0&&React.createElement(r.SelectControl,{label:e.label,name:e.name,id:e.name,className:e.className,value:e.selected,onChange:function(t){e.onChange(t)},"data-data":e.data,options:e.options}),e.children,React.createElement("p",{className:"description"},e.description))}},5:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingRow=void 0,n(386),t.SettingRow=function(e){return React.createElement("tr",{valign:"top"},React.createElement("th",{scope:"row"},React.createElement("label",{htmlFor:""},e.label)),React.createElement("td",null,e.children))}},786:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsFieldset=function(e){return React.createElement("fieldset",null,React.createElement("legend",null,e.legend),e.children)}},892:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsForm=function(e){return React.createElement("form",{method:"post"},e.children)}},681:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsSection=void 0;var a=n(386);t.SettingsSection=function(e){return React.createElement(a.Fragment,null,React.createElement("h2",null,e.title),React.createElement("p",null,e.description),e.children)}},772:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsTable=function(e){return React.createElement("table",{className:"form-table"},React.createElement("tbody",null,e.bodyChildren))}},242:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Spinner=function(e){return React.createElement("span",{className:"publishpress-future-spinner"},React.createElement("div",null),React.createElement("div",null),React.createElement("div",null),React.createElement("div",null))}},438:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SubmitButton=function(e){return React.createElement("input",{type:"submit",name:e.name,value:e.text,disabled:e.disabled,className:"button-primary"})}},301:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextControl=void 0;var a=n(386),r=n(214),o=n(57);t.TextControl=function(e){var t;t=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description);var n=e.className?e.className:"";return e.loading&&(n+=" publishpress-future-loading publishpress-future-loading-input"),React.createElement(a.Fragment,null,React.createElement("div",{className:n},React.createElement(r.TextControl,{type:"text",label:e.label,name:e.name,id:e.name,className:e.className,value:e.value,placeholder:e.placeholder,onChange:function(t){e.onChange&&e.onChange(t)}}),e.loading&&React.createElement(o.Spinner,null),t))}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleArrowButton=void 0;var a=n(214);t.ToggleArrowButton=function(e){var t=e.iconExpanded?e.iconExpanded:"arrow-up-alt2",n=e.iconCollapsed?e.iconCollapsed:"arrow-down-alt2",r=e.isExpanded?t:n,o=e.isExpanded?e.titleExpanded:e.titleCollapsed;return React.createElement(a.Button,{isSmall:!0,title:o,icon:r,onClick:function(){e.onClick&&e.onClick()},className:e.className})}},873:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToggleCalendarDatePicker=void 0;var a=n(190),r=n(620),o=n(386);t.ToggleCalendarDatePicker=function(e){var t=e.isExpanded,n=e.strings,i=e.onToggleCalendar,l=e.currentDate,c=e.onChangeDate,u=e.is12Hour,s=e.startOfWeek;return(0,o.useEffect)((function(){var e=document.querySelector(".future-action-calendar-toggle");if(e){var t=e.nextElementSibling;if(t){var n=t.querySelector(".components-datetime__time");if(n){var a=n.nextSibling;a&&t.insertBefore(e,a)}}}})),React.createElement(o.Fragment,null,React.createElement(a.ToggleArrowButton,{className:"future-action-calendar-toggle",isExpanded:t,iconExpanded:"arrow-up-alt2",iconCollapsed:"calendar",titleExpanded:n.hideCalendar,titleCollapsed:n.showCalendar,onClick:i}),React.createElement(r.DateTimePicker,{currentDate:l,onChange:c,__nextRemoveHelpButton:!0,is12Hour:u,startOfWeek:s}))}},948:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TokensControl=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(386),o=n(214);t.TokensControl=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],a=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(a=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(""),2),n=t[0],i=t[1];(0,r.useEffect)((function(){e.value&&i(e.value.join(","))}),[e.value]);var l=void 0;e.description&&(l=e.unescapedDescription?React.createElement("p",{className:"description",dangerouslySetInnerHTML:{__html:e.description}}):React.createElement("p",{className:"description"},e.description));var c=e.value?e.value:[];return React.createElement(r.Fragment,null,React.createElement(o.FormTokenField,{label:e.label,value:c,suggestions:e.options,onChange:function(t){e.onChange&&e.onChange(t),"object"===(void 0===t?"undefined":a(t))?i(t.join(",")):i("")},maxSuggestions:e.maxSuggestions,className:"publishpres-future-token-field",__experimentalExpandOnFocus:e.expandOnFocus,__experimentalAutoSelectFirstMatch:e.autoSelectFirstMatch}),React.createElement("input",{type:"hidden",name:e.name,value:n}),l)}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseControl=function(e){var t=wp.element.Fragment,n=function(t){e.onChange&&e.onChange(t.target.value===e.trueValue&&jQuery(t.target).is(":checked"))};return React.createElement(t,null,React.createElement("input",{type:"radio",name:e.name,id:e.name+"-true",value:e.trueValue,defaultChecked:e.selected,onChange:n}),React.createElement("label",{htmlFor:e.name+"-true"},e.trueLabel),"  ",React.createElement("input",{type:"radio",name:e.name,defaultChecked:!e.selected,id:e.name+"-false",value:e.falseValue,onChange:n}),React.createElement("label",{htmlFor:e.name+"-false"},e.falseLabel),React.createElement("p",{className:"description"},e.description))}},57:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var a=n(442);Object.defineProperty(t,"ButtonsPanel",{enumerable:!0,get:function(){return a.ButtonsPanel}});var r=n(418);Object.defineProperty(t,"FutureActionPanel",{enumerable:!0,get:function(){return r.FutureActionPanel}});var o=n(864);Object.defineProperty(t,"FutureActionPanelBlockEditor",{enumerable:!0,get:function(){return o.FutureActionPanelBlockEditor}});var i=n(571);Object.defineProperty(t,"FutureActionPanelClassicEditor",{enumerable:!0,get:function(){return i.FutureActionPanelClassicEditor}});var l=n(437);Object.defineProperty(t,"FutureActionPanelQuickEdit",{enumerable:!0,get:function(){return l.FutureActionPanelQuickEdit}});var c=n(94);Object.defineProperty(t,"FutureActionPanelBulkEdit",{enumerable:!0,get:function(){return c.FutureActionPanelBulkEdit}});var u=n(239);Object.defineProperty(t,"PostTypeSettingsPanel",{enumerable:!0,get:function(){return u.PostTypeSettingsPanel}});var s=n(138);Object.defineProperty(t,"PostTypesSettingsPanels",{enumerable:!0,get:function(){return s.PostTypesSettingsPanels}});var d=n(5);Object.defineProperty(t,"SettingRow",{enumerable:!0,get:function(){return d.SettingRow}});var m=n(786);Object.defineProperty(t,"SettingsFieldset",{enumerable:!0,get:function(){return m.SettingsFieldset}});var p=n(892);Object.defineProperty(t,"SettingsForm",{enumerable:!0,get:function(){return p.SettingsForm}});var f=n(681);Object.defineProperty(t,"SettingsSection",{enumerable:!0,get:function(){return f.SettingsSection}});var y=n(772);Object.defineProperty(t,"SettingsTable",{enumerable:!0,get:function(){return y.SettingsTable}});var g=n(438);Object.defineProperty(t,"SubmitButton",{enumerable:!0,get:function(){return g.SubmitButton}});var v=n(311);Object.defineProperty(t,"CheckboxControl",{enumerable:!0,get:function(){return v.CheckboxControl}});var b=n(858);Object.defineProperty(t,"SelectControl",{enumerable:!0,get:function(){return b.SelectControl}});var h=n(301);Object.defineProperty(t,"TextControl",{enumerable:!0,get:function(){return h.TextControl}});var E=n(948);Object.defineProperty(t,"TokensControl",{enumerable:!0,get:function(){return E.TokensControl}});var S=n(13);Object.defineProperty(t,"NonceControl",{enumerable:!0,get:function(){return S.NonceControl}});var _=n(225);Object.defineProperty(t,"TrueFalseControl",{enumerable:!0,get:function(){return _.TrueFalseControl}});var x=n(242);Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return x.Spinner}})},39:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=t.getCurrentTimeInSeconds=function(){return o((new Date).getTime())},a=(t.getCurrentTimeAsTimestamp=function(){return a(n())},t.formatUnixTimeToTimestamp=function(e){var t=new Date(o(e));return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)+":"+("0"+t.getSeconds()).slice(-2)}),r=(t.formatTimestampToUnixTime=function(e){var t=new Date(e);return o(t.getTime())},t.timeIsInSeconds=function(e){return parseInt(e).toString().length<=10}),o=t.normalizeUnixTimeToSeconds=function(e){return e=parseInt(e),r()?e:e/1e3};t.normalizeUnixTimeToMilliseconds=function(e){return e=parseInt(e),r()?1e3*e:e}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.compact=function(e){return e?(Array.isArray(e)||"object"!==(void 0===e?"undefined":n(e))||(e=Object.values(e)),e.filter((function(e){return null!=e&&""!==e}))):[]},t.debugLogFactory=function(e){return function(t){for(var n=arguments.length,a=Array(n>1?n-1:0),r=1;r{e.exports=ReactDOM},361:e=>{e.exports=publishpressFutureSettingsConfig},244:e=>{e.exports=wp},214:e=>{e.exports=wp.components},562:e=>{e.exports=wp.data},386:e=>{e.exports=wp.element},566:e=>{e.exports=wp.hooks},986:e=>{e.exports=wp.plugins},11:e=>{e.exports=wp.url}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var a=Object.assign||function(e){for(var t=1;t {\n const [formValidationStatusPerPostType, setFormValidationStatusPerPostType] = useState({});\n const [pendingValidationPerPostType, setPendingValidationPerPostType] = useState({});\n const [allValid, setAllValid] = useState(true);\n const [hasNoPendingValidation, setHasNoPendingValidation] = useState(true);\n\n useEffect(() => {\n let allFormsAreValid = true;\n\n for (const [postType, isValidForPostType] of Object.entries(formValidationStatusPerPostType)) {\n if (!isValidForPostType) {\n allFormsAreValid = false;\n break;\n }\n }\n\n setAllValid(allFormsAreValid);\n }, [formValidationStatusPerPostType]);\n\n useEffect(() => {\n let hasNoPendingValidation = true;\n\n for (const [postType, hasPending] of Object.entries(pendingValidationPerPostType)) {\n if (hasPending) {\n hasNoPendingValidation = false;\n break;\n }\n }\n\n setHasNoPendingValidation(hasNoPendingValidation);\n }, [pendingValidationPerPostType]);\n\n const onDataIsValid = (postType) => {\n formValidationStatusPerPostType[postType] = true;\n setFormValidationStatusPerPostType({...formValidationStatusPerPostType});\n }\n\n const onDataIsInvalid = (postType) => {\n formValidationStatusPerPostType[postType] = false;\n setFormValidationStatusPerPostType({...formValidationStatusPerPostType});\n }\n\n const onValidationStarted = (postType) => {\n pendingValidationPerPostType[postType] = true;\n setPendingValidationPerPostType({...pendingValidationPerPostType});\n }\n\n const onValidationFinished = (postType) => {\n pendingValidationPerPostType[postType] = false;\n setPendingValidationPerPostType({...pendingValidationPerPostType});\n }\n\n const saveButtonText = hasNoPendingValidation ? text.saveChanges : text.saveChangesPendingValidation;\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n \n )\n};\n\nconst container = document.getElementById(\"publishpress-future-settings-post-types\");\nconst component = ();\n\ncreateRoot(container).render(component);\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"&wp.element\";\nimport { CheckboxControl as WPCheckboxControl } from \"&wp.components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"&wp.components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = {id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy};\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (! hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = ! props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (! props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (! enabled) {\n setValidationError('');\n return true;\n }\n\n if (! action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (! date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (! enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n {! props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n );\n};\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"&wp.data\";\nimport { useEffect } from \"&wp.element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '&wp.data';\nimport { useEffect } from '&wp.element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '&wp.element';\nimport { addQueryArgs } from '&wp.url';\nimport { applyFilters } from '&wp.hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { SelectControl as WPSelectControl } from \"&wp.components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"&wp.element\";\nimport { TextControl as WPTextControl } from \"&wp.components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '&wp.components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"&wp.element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"&wp.element\";\nimport { FormTokenField } from \"&wp.components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = ReactDOM;","module.exports = publishpressFutureSettingsConfig;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["container","component","ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","type","enablePostExpiration","options","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","scope","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","getCurrentTimeInSeconds","normalizeUnixTimeToSeconds","getTime","formatUnixTimeToTimestamp","getCurrentTimeAsTimestamp","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNumber","isNaN","module","exports","ReactDOM","publishpressFutureSettingsConfig","hooks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getElementById","formValidationStatusPerPostType","setFormValidationStatusPerPostType","pendingValidationPerPostType","setPendingValidationPerPostType","allValid","setAllValid","hasNoPendingValidation","setHasNoPendingValidation","allFormsAreValid","saveButtonText","saveChanges","saveChangesPendingValidation","StrictMode","settingsSectionTitle","settingsSectionDescription","createRoot","render"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-post-types.js","mappings":"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","sources":["webpack://post-expirator/./assets/jsx/components/ButtonsPanel.jsx","webpack://post-expirator/./assets/jsx/components/CheckboxControl.jsx","webpack://post-expirator/./assets/jsx/components/DateTimePicker.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanel.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelAfterActionField.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBlockEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelBulkEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelClassicEditor.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelQuickEdit.jsx","webpack://post-expirator/./assets/jsx/components/FutureActionPanelTop.jsx","webpack://post-expirator/./assets/jsx/components/NonceControl.jsx","webpack://post-expirator/./assets/jsx/components/PostTypeSettingsPanel.jsx","webpack://post-expirator/./assets/jsx/components/PostTypesSettingsPanels.jsx","webpack://post-expirator/./assets/jsx/components/SelectControl.jsx","webpack://post-expirator/./assets/jsx/components/SettingRow.jsx","webpack://post-expirator/./assets/jsx/components/SettingsFieldset.jsx","webpack://post-expirator/./assets/jsx/components/SettingsForm.jsx","webpack://post-expirator/./assets/jsx/components/SettingsSection.jsx","webpack://post-expirator/./assets/jsx/components/SettingsTable.jsx","webpack://post-expirator/./assets/jsx/components/Spinner.jsx","webpack://post-expirator/./assets/jsx/components/SubmitButton.jsx","webpack://post-expirator/./assets/jsx/components/TextControl.jsx","webpack://post-expirator/./assets/jsx/components/ToggleArrowButton.jsx","webpack://post-expirator/./assets/jsx/components/ToggleCalendarDatePicker.jsx","webpack://post-expirator/./assets/jsx/components/TokensControl.jsx","webpack://post-expirator/./assets/jsx/components/TrueFalseControl.jsx","webpack://post-expirator/./assets/jsx/components/index.jsx","webpack://post-expirator/./assets/jsx/time.jsx","webpack://post-expirator/./assets/jsx/utils.jsx","webpack://post-expirator/external var \"ReactDOM\"","webpack://post-expirator/external var \"publishpressFutureSettingsConfig\"","webpack://post-expirator/external var \"wp\"","webpack://post-expirator/external var \"wp.components\"","webpack://post-expirator/external var \"wp.data\"","webpack://post-expirator/external var \"wp.element\"","webpack://post-expirator/external var \"wp.hooks\"","webpack://post-expirator/external var \"wp.plugins\"","webpack://post-expirator/external var \"wp.url\"","webpack://post-expirator/webpack/bootstrap","webpack://post-expirator/./assets/jsx/settings-post-types.jsx"],"sourcesContent":["/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const ButtonsPanel = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { CheckboxControl as WPCheckboxControl } from \"@wordpress/components\";\n\nexport const CheckboxControl = function (props) {\n const [checked, setChecked] = useState(props.checked || false);\n\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n setChecked(value);\n\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n return (\n \n \n\n {description}\n \n )\n}\n","import { normalizeUnixTimeToMilliseconds } from \"../time\";\nimport { DateTimePicker as WPDateTimePicker } from \"@wordpress/components\";\n\n\nexport const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => {\n if (typeof currentDate === 'number') {\n currentDate = normalizeUnixTimeToMilliseconds(currentDate);\n }\n\n return (\n \n )\n}\n","import { compact } from '../utils';\nimport { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker';\nimport { PluginArea } from '@wordpress/plugins';\nimport { Fill, Slot, SlotFillProvider } from '@wordpress/components';\nimport { FutureActionPanelAfterActionField } from './FutureActionPanelAfterActionField';\nimport { FutureActionPanelTop } from './FutureActionPanelTop';\n\nconst { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components;\nconst { Fragment, useEffect, useState } = wp.element;\nconst { decodeEntities } = wp.htmlEntities;\nconst { addQueryArgs } = wp.url;\nconst {\n useSelect,\n useDispatch\n} = wp.data;\nconst { apiFetch } = wp;\n\nexport const FutureActionPanel = (props) => {\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const taxonomyName = useSelect((select) => select(props.storeName).getTaxonomyName(), []);\n const termsListByName = useSelect((select) => select(props.storeName).getTermsListByName(), []);\n const termsListById = useSelect((select) => select(props.storeName).getTermsListById(), []);\n const isFetchingTerms = useSelect((select) => select(props.storeName).getIsFetchingTerms(), []);\n const calendarIsVisible = useSelect((select) => select(props.storeName).getCalendarIsVisible(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n const [validationError, setValidationError] = useState('');\n\n const {\n setAction,\n setDate,\n setEnabled,\n setTerms,\n setTaxonomy,\n setTermsListByName,\n setTermsListById,\n setTaxonomyName,\n setIsFetchingTerms,\n setCalendarIsVisible,\n setHasValidData,\n setNewStatus\n } = useDispatch(props.storeName);\n\n const mapTermsListById = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n return termsListById[term];\n });\n }\n\n const insertTerm = (term) => {\n termsListByName[term] = { id: term, count: 0, description: \"\", link: \"\", name: term, slug: term, taxonomy: taxonomy };\n termsListById[term] = term;\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTerms([...terms, term]);\n\n }\n\n const mapTermsListByName = (terms) => {\n if (typeof terms !== 'object' || terms === null) {\n return {};\n }\n\n return terms.map((term) => {\n if (termsListByName[term]) {\n return termsListByName[term].id;\n }\n\n insertTerm(term);\n\n return term;\n });\n }\n\n const callOnChangeData = (attribute, value) => {\n if (typeof props.onChangeData === 'function') {\n props.onChangeData(attribute, value);\n }\n }\n\n const handleEnabledChange = (isChecked) => {\n setEnabled(isChecked);\n\n if (isChecked) {\n setAction(props.action);\n setDate(props.date);\n setNewStatus(props.newStatus);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n fetchTerms();\n }\n\n callOnChangeData('enabled', isChecked);\n }\n\n const handleActionChange = (value) => {\n setAction(value);\n\n callOnChangeData('action', value);\n }\n\n const handleNewStatusChange = (value) => {\n setNewStatus(value);\n\n callOnChangeData('newStatus', value);\n }\n\n const handleDateChange = (value) => {\n setDate(value);\n\n callOnChangeData('date', value);\n }\n\n const handleTermsChange = (value) => {\n value = mapTermsListByName(value);\n\n setTerms(value);\n\n callOnChangeData('terms', value);\n }\n\n const fetchTerms = () => {\n let termsListByName = {};\n let termsListById = {};\n\n if (!taxonomy) {\n return;\n }\n\n setIsFetchingTerms(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${taxonomy}`),\n }).then((result) => {\n result.terms.forEach(term => {\n termsListByName[decodeEntities(term.name)] = term;\n termsListById[term.id] = decodeEntities(term.name);\n });\n\n setTermsListByName(termsListByName);\n setTermsListById(termsListById);\n setTaxonomyName(decodeEntities(result.taxonomyName));\n setIsFetchingTerms(false);\n });\n }\n\n const storeCalendarIsVisibleOnStorage = (value) => {\n localStorage.setItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context, value ? '1' : '0');\n }\n\n const getCalendarIsVisibleFromStorage = () => {\n return localStorage.getItem('FUTURE_ACTION_CALENDAR_IS_VISIBLE_' + props.context);\n }\n\n useEffect(() => {\n if (props.autoEnableAndHideCheckbox) {\n setEnabled(true);\n } else {\n setEnabled(props.enabled);\n }\n\n setAction(props.action);\n setNewStatus(props.newStatus);\n setDate(props.date);\n setTerms(props.terms);\n setTaxonomy(props.taxonomy);\n\n if (getCalendarIsVisibleFromStorage() === null) {\n setCalendarIsVisible(props.calendarIsVisible);\n } else {\n setCalendarIsVisible(getCalendarIsVisibleFromStorage() === '1');\n }\n\n // We need to get the value directly from the props because the value from the store is not updated yet\n if (props.enabled) {\n if (props.isCleanNewPost) {\n // Force populate the default values\n handleEnabledChange(true);\n }\n\n fetchTerms();\n }\n }, []);\n\n useEffect(() => {\n storeCalendarIsVisibleOnStorage(calendarIsVisible);\n }, [calendarIsVisible]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid();\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid();\n }\n }, [hasValidData]);\n\n let selectedTerms = [];\n if (terms && terms.length > 0 && termsListById) {\n selectedTerms = compact(mapTermsListById(terms));\n\n if (typeof selectedTerms === 'string') {\n selectedTerms = [];\n }\n }\n\n let termsListByNameKeys = [];\n if (typeof termsListByName === 'object' && termsListByName !== null) {\n termsListByNameKeys = Object.keys(termsListByName);\n }\n\n const panelClass = calendarIsVisible ? 'future-action-panel' : 'future-action-panel hidden-calendar';\n const contentPanelClass = calendarIsVisible ? 'future-action-panel-content' : 'future-action-panel-content hidden-calendar';\n const datePanelClass = calendarIsVisible ? 'future-action-date-panel' : 'future-action-date-panel hidden-calendar';\n\n let is24hour;\n if (props.timeFormat === 'inherited') {\n is24hour = !props.is12Hour;\n } else {\n is24hour = props.timeFormat === '24h';\n }\n\n const replaceCurlyBracketsWithLink = (string, href, target) => {\n const parts = string.split('{');\n const result = [];\n\n result.push(parts.shift());\n\n for (const part of parts) {\n const [before, after] = part.split('}');\n\n result.push(\n {before}\n );\n\n result.push(after);\n }\n\n return result;\n };\n\n // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type\n let actionsSelectOptions = props.actionsSelectOptions;\n if (!props.taxonomy) {\n actionsSelectOptions = props.actionsSelectOptions.filter((item) => {\n return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1;\n });\n }\n\n const HelpText = replaceCurlyBracketsWithLink(props.strings.timezoneSettingsHelp, '/wp-admin/options-general.php#timezone_string', '_blank');\n const displayTaxonomyField = String(action).includes('category') && action !== 'category-remove-all';\n\n let termsFieldLabel = taxonomyName;\n switch (action) {\n case 'category':\n termsFieldLabel = props.strings.newTerms.replace('%s', taxonomyName);\n break;\n case 'category-remove':\n termsFieldLabel = props.strings.removeTerms.replace('%s', taxonomyName);\n break;\n case 'category-add':\n termsFieldLabel = props.strings.addTerms.replace('%s', taxonomyName);\n break;\n }\n\n const validateData = () => {\n let valid = true;\n\n if (!enabled) {\n setValidationError('');\n return true;\n }\n\n if (!action) {\n setValidationError(props.strings.errorActionRequired);\n valid = false;\n }\n\n if (!date) {\n setValidationError(props.strings.errorDateRequired);\n valid = false;\n }\n\n // Check if the date is in the past\n if (date && new Date(date) < new Date()) {\n setValidationError(props.strings.errorDateInPast);\n valid = false;\n }\n\n const isTermRequired = ['category', 'category-add', 'category-remove'].includes(action);\n const noTermIsSelected = terms.length === 0 || (terms.length === 1 && (terms[0] === '' || terms[0] === '0'));\n\n if (isTermRequired && noTermIsSelected) {\n setValidationError(props.strings.errorTermsRequired);\n valid = false;\n }\n\n if (valid) {\n setValidationError('');\n }\n\n return valid;\n }\n\n useEffect(() => {\n if (!enabled) {\n setHasValidData(true);\n setValidationError('');\n\n return;\n }\n\n setHasValidData(validateData());\n }, [action, date, enabled, terms, taxonomy]);\n\n // This adds a 'cancel' class to the input when the user clicks on the\n // field to prevent the form from being submitted. This is a workaround\n // for the issue on the quick-edit form where the form is submitted when\n // the user presses the 'Enter' key trying to add a term to the field.\n const forceIgnoreAutoSubmitOnEnter = (e) => {\n jQuery(e.target).addClass('cancel');\n }\n\n return (\n \n
\n {props.autoEnableAndHideCheckbox && (\n \n )}\n\n \n\n {!props.autoEnableAndHideCheckbox && (\n \n \n \n )}\n\n {enabled && (\n \n \n \n \n\n \n\n {action === 'change-status' &&\n \n \n \n }\n\n {\n displayTaxonomyField && (\n isFetchingTerms && (\n \n \n {`${props.strings.loading} (${taxonomyName})`}\n \n \n \n )\n || (!taxonomy && (\n \n \n
\n {props.strings.noTaxonomyFound}\n
\n
\n
\n )\n || (\n termsListByNameKeys.length === 0 && (\n \n \n
\n {props.strings.noTermsFound}\n
\n
\n
\n )\n || (\n \n \n \n \n \n )\n )\n )\n )\n }\n\n \n setCalendarIsVisible(!calendarIsVisible)}\n is12Hour={!is24hour}\n startOfWeek={props.startOfWeek}\n isExpanded={calendarIsVisible}\n strings={props.strings}\n />\n \n\n \n
\n
\n\n {HelpText}\n
\n
\n\n {!hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n )}\n
\n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelAfterActionField = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelAfterActionFieldSlot = (props) => (\n \n);\n\nFutureActionPanelAfterActionField.Slot = FutureActionPanelAfterActionFieldSlot;\n\nexport default FutureActionPanelAfterActionField;\n","import { FutureActionPanel } from './';\n\nexport const FutureActionPanelBlockEditor = (props) => {\n const { PluginDocumentSettingPanel } = wp.editPost;\n const { useDispatch, select } = wp.data;\n\n const { editPost } = useDispatch('core/editor');\n\n const editPostAttribute = (newAttribute) => {\n const attribute = {\n publishpress_future_action: {}\n };\n\n // For each property on newAttribute, set the value on attribute\n for (const [name, value] of Object.entries(newAttribute)) {\n attribute.publishpress_future_action[name] = value;\n }\n\n editPost(attribute);\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n const newAttribute = {\n 'enabled': store.getEnabled()\n }\n\n if (newAttribute.enabled) {\n newAttribute['action'] = store.getAction();\n newAttribute['newStatus'] = store.getNewStatus();\n newAttribute['date'] = store.getDate();\n newAttribute['terms'] = store.getTerms();\n newAttribute['taxonomy'] = store.getTaxonomy();\n newAttribute['extraData'] = store.getExtraData();\n }\n\n editPostAttribute(newAttribute);\n }\n\n const data = select('core/editor').getEditedPostAttribute('publishpress_future_action');\n\n const { lockPostSaving, unlockPostSaving } = useDispatch('core/editor');\n\n const onDataIsValid = () => {\n unlockPostSaving('future-action');\n }\n\n const onDataIsInvalid = () => {\n lockPostSaving('future-action');\n }\n\n return (\n \n
\n \n
\n \n );\n};\n","import { FutureActionPanel, SelectControl } from '.';\nimport { getElementByName } from '../utils';\n\nexport const FutureActionPanelBulkEdit = (props) => {\n const { useSelect, useDispatch, select } = wp.data;\n const { useEffect } = wp.element;\n\n const onChangeData = (attribute, value) => {\n getElementByName('future_action_bulk_enabled').value = select(props.storeName).getEnabled() ? 1 : 0;\n getElementByName('future_action_bulk_action').value = select(props.storeName).getAction();\n getElementByName('future_action_bulk_new_status').value = select(props.storeName).getNewStatus();\n getElementByName('future_action_bulk_date').value = select(props.storeName).getDate();\n getElementByName('future_action_bulk_terms').value = select(props.storeName).getTerms().join(',');\n getElementByName('future_action_bulk_taxonomy').value = select(props.storeName).getTaxonomy();\n }\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const changeAction = useSelect((select) => select(props.storeName).getChangeAction(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n\n const {\n setChangeAction\n } = useDispatch(props.storeName);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const handleStrategyChange = (value) => {\n setChangeAction(value);\n };\n\n const options = [\n { value: 'no-change', label: props.strings.noChange },\n { value: 'change-add', label: props.strings.changeAdd },\n { value: 'add-only', label: props.strings.addOnly },\n { value: 'change-only', label: props.strings.changeOnly },\n { value: 'remove-only', label: props.strings.removeOnly },\n ];\n\n const optionsToDisplayPanel = ['change-add', 'add-only', 'change-only'];\n\n useEffect(() => {\n // We are not using onDataIsValid and onDataIsInvalid because we need to enable/disable the button\n // also based on the changeAction value.\n if (hasValidData || changeAction === 'no-change') {\n jQuery('#bulk_edit').prop('disabled', false);\n } else {\n jQuery('#bulk_edit').prop('disabled', true);\n }\n }, [hasValidData, changeAction]);\n\n return (\n
\n \n\n {optionsToDisplayPanel.includes(changeAction) && (\n \n )}\n\n {/* Bulk edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { FutureActionPanel } from \"./\";\nimport { select, useSelect } from \"@wordpress/data\";\nimport { useEffect } from \"@wordpress/element\";\n\nexport const FutureActionPanelClassicEditor = (props) => {\n const browserTimezoneOffset = new Date().getTimezoneOffset();\n\n const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n }\n\n const onChangeData = (attribute, value) => {\n const store = select(props.storeName);\n\n getElementByName('future_action_enabled').value = store.getEnabled() ? 1 : 0;\n getElementByName('future_action_action').value = store.getAction();\n getElementByName('future_action_new_status').value = store.getNewStatus();\n getElementByName('future_action_date').value = store.getDate();\n getElementByName('future_action_terms').value = store.getTerms().join(',');\n getElementByName('future_action_taxonomy').value = store.getTaxonomy();\n }\n\n const getTermsFromElementByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return [];\n }\n\n let terms = element.value.split(',');\n\n if (terms.length === 1 && terms[0] === '') {\n terms = [];\n }\n\n return terms.map(term => parseInt(term));\n }\n\n const getElementValueByName = (name) => {\n const element = getElementByName(name);\n if (!element) {\n return '';\n }\n\n return element.value;\n }\n\n const data = {\n enabled: getElementValueByName('future_action_enabled') === '1',\n action: getElementValueByName('future_action_action'),\n newStatus: getElementValueByName('future_action_new_status'),\n date: getElementValueByName('future_action_date'),\n terms: getTermsFromElementByName('future_action_terms'),\n taxonomy: getElementValueByName('future_action_taxonomy'),\n };\n\n const onDataIsValid = () => {\n jQuery('#publish').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('#publish').prop('disabled', true);\n }\n\n return (\n
\n \n
\n );\n};\n","import { FutureActionPanel } from './';\nimport { useSelect, select } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\nexport const FutureActionPanelQuickEdit = (props) => {\n const onChangeData = (attribute, value) => {};\n\n const date = useSelect((select) => select(props.storeName).getDate(), []);\n const enabled = useSelect((select) => select(props.storeName).getEnabled(), []);\n const action = useSelect((select) => select(props.storeName).getAction(), []);\n const terms = useSelect((select) => select(props.storeName).getTerms(), []);\n const taxonomy = useSelect((select) => select(props.storeName).getTaxonomy(), []);\n const hasValidData = useSelect((select) => select(props.storeName).getHasValidData(), []);\n const newStatus = useSelect((select) => select(props.storeName).getNewStatus(), []);\n\n let termsString = terms;\n if (typeof terms === 'object') {\n termsString = terms.join(',');\n }\n\n const onDataIsValid = () => {\n jQuery('.button-primary.save').prop('disabled', false);\n }\n\n const onDataIsInvalid = () => {\n jQuery('.button-primary.save').prop('disabled', true);\n }\n\n return (\n
\n \n\n {/* Quick edit JS code will save only fields with name inside the edit row */}\n \n \n \n \n \n \n \n \n
\n );\n};\n","import { Slot, Fill } from '@wordpress/components';\n\nexport const FutureActionPanelTop = ({ children }) => (\n \n {children}\n \n);\n\nconst FutureActionPanelTopSlot = (props) => (\n \n);\n\nFutureActionPanelTop.Slot = FutureActionPanelTopSlot;\n\nexport default FutureActionPanelTop;\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const NonceControl = function (props) {\n if (! props.name) {\n props.name = '_wpnonce';\n }\n\n if (! props.referrer) {\n props.referrer = true;\n }\n\n return (\n \n \n\n {props.referrer &&\n \n }\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingRow,\n SettingsFieldset,\n SettingsTable,\n SelectControl,\n TextControl,\n TokensControl,\n CheckboxControl\n} from './';\nimport { useEffect, useState, Fragment } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { applyFilters } from '@wordpress/hooks';\nimport { apiFetch } from '&wp';\n\nconst { PanelRow, BaseControl } = wp.components;\n\nvar apiRequestController = null;\n\nexport const PostTypeSettingsPanel = function (props) {\n const originalExpireTypeList = props.expireTypeList[props.postType];\n\n const [postTypeTaxonomy, setPostTypeTaxonomy] = useState(props.settings.taxonomy);\n const [termOptions, setTermOptions] = useState([]);\n const [termsSelectIsLoading, setTermsSelectIsLoading] = useState(false);\n const [selectedTerms, setSelectedTerms] = useState([]);\n const [settingHowToExpire, setSettingHowToExpire] = useState(props.settings.howToExpire);\n const [isActive, setIsActive] = useState(props.settings.active);\n const [expireOffset, setExpireOffset] = useState(props.settings.defaultExpireOffset);\n const [emailNotification, setEmailNotification] = useState(props.settings.emailNotification);\n const [isAutoEnabled, setIsAutoEnabled] = useState(props.settings.autoEnabled);\n const [hasValidData, setHasValidData] = useState(false);\n const [validationError, setValidationError] = useState('');\n const [taxonomyLabel, setTaxonomyLabel] = useState('');\n const [howToExpireList, setHowToExpireList] = useState(originalExpireTypeList);\n const [newStatus, setNewStatus] = useState(props.settings.newStatus);\n const [hasPendingValidation, setHasPendingValidation] = useState(false);\n const [offsetPreview, setOffsetPreview] = useState('');\n\n const taxonomyRelatedActions = [\n 'category',\n 'category-add',\n 'category-remove',\n 'category-remove-all'\n ];\n\n const onChangeTaxonomy = function (value) {\n setPostTypeTaxonomy(value);\n };\n\n const onChangeTerms = (value) => {\n setSelectedTerms(value);\n };\n\n const onChangeHowToExpire = (value) => {\n setSettingHowToExpire(value);\n }\n\n const onChangeActive = (value) => {\n setIsActive(value);\n }\n\n const onChangeExpireOffset = (value) => {\n setExpireOffset(value);\n }\n\n const onChangeEmailNotification = (value) => {\n setEmailNotification(value);\n }\n\n const onChangeAutoEnabled = (value) => {\n setIsAutoEnabled(value);\n }\n\n const validateData = () => {\n if (! isActive) {\n setValidationError('');\n return true;\n }\n\n if (expireOffset) {\n if (apiRequestController) {\n apiRequestController.abort();\n }\n\n apiRequestController = typeof AbortController === 'undefined' ? undefined : new AbortController();\n const signal = apiRequestController ? apiRequestController.signal : undefined;\n setHasPendingValidation(true);\n\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/settings/validate-expire-offset`),\n method: 'POST',\n data: {\n offset: expireOffset\n },\n signal: signal\n }).then((result) => {\n setHasPendingValidation(false);\n\n setHasValidData(result.isValid);\n setValidationError(result.message);\n\n if (result.isValid) {\n setOffsetPreview(result.preview);\n } else {\n setOffsetPreview('');\n }\n });\n }\n\n setValidationError('');\n return true;\n }\n\n useEffect(() => {\n // Remove items from expireTypeList if related to taxonomies and there is no taxonmoy for the post type\n if (props.taxonomiesList.length === 0) {\n let newExpireTypeList = [];\n\n newExpireTypeList = howToExpireList.filter((item) => {\n return taxonomyRelatedActions.indexOf(item.value) === -1;\n });\n\n setHowToExpireList(newExpireTypeList);\n }\n }, []);\n\n useEffect(() => {\n if (!postTypeTaxonomy || !props.taxonomiesList) {\n return;\n }\n\n setTermsSelectIsLoading(true);\n apiFetch({\n path: addQueryArgs(`publishpress-future/v1/terms/${postTypeTaxonomy}`),\n }).then((result) => {\n let options = [];\n\n let settingsTermsOptions = null;\n let option;\n\n result.terms.forEach(term => {\n option = { value: term.id, label: term.name };\n options.push(option);\n\n if (postTypeTaxonomy === props.settings.taxonomy && props.settings.terms.includes(term.id)) {\n if (settingsTermsOptions === null) {\n settingsTermsOptions = [];\n }\n\n settingsTermsOptions.push(option.label);\n }\n });\n\n setTermOptions(options);\n setSelectedTerms(settingsTermsOptions);\n setTermsSelectIsLoading(false);\n });\n\n props.taxonomiesList.forEach((taxonomy) => {\n if (taxonomy.value === postTypeTaxonomy) {\n setTaxonomyLabel(taxonomy.label);\n }\n });\n }, [postTypeTaxonomy]);\n\n useEffect(() => {\n setHasValidData(validateData());\n }, [isActive, postTypeTaxonomy, selectedTerms, settingHowToExpire, taxonomyLabel, expireOffset]);\n\n useEffect(() => {\n if (!taxonomyLabel) {\n return;\n }\n\n // Update the list of actions replacing the taxonomy name.\n let newExpireTypeList = [];\n\n originalExpireTypeList.forEach((expireType) => {\n let label = expireType.label;\n\n if (taxonomyRelatedActions.indexOf(expireType.value) !== -1) {\n label = label.replace('%s', taxonomyLabel.toLowerCase());\n }\n\n newExpireTypeList.push({\n value: expireType.value,\n label: label\n });\n });\n\n setHowToExpireList(newExpireTypeList);\n }, [taxonomyLabel]);\n\n useEffect(() => {\n if (hasValidData && props.onDataIsValid) {\n props.onDataIsValid(props.postType);\n }\n\n if (!hasValidData && props.onDataIsInvalid) {\n props.onDataIsInvalid(props.postType);\n }\n }, [hasValidData]);\n\n useEffect(() => {\n if (hasPendingValidation && props.onValidationStarted) {\n props.onValidationStarted(props.postType);\n }\n\n if (!hasPendingValidation && props.onValidationFinished) {\n props.onValidationFinished(props.postType);\n }\n }, [hasPendingValidation]);\n\n const termOptionsLabels = termOptions.map((term) => term.label);\n\n let settingsRows = [\n \n \n \n ];\n\n if (isActive) {\n settingsRows.push(\n \n \n \n );\n\n settingsRows.push(\n \n \n \n \n );\n\n settingsRows.push(\n \n \n\n {settingHowToExpire === 'change-status' &&\n \n }\n\n {(props.taxonomiesList.length > 0 && (['category', 'category-add', 'category-remove'].indexOf(settingHowToExpire) > -1)) &&\n \n }\n \n );\n\n settingsRows.push(\n \n \n\n {offsetPreview && (\n \n

{props.text.datePreview}

\n {offsetPreview}\n
\n )}\n
\n );\n\n settingsRows.push(\n \n \n \n );\n }\n\n settingsRows = applyFilters('expirationdate_settings_posttype', settingsRows, props, isActive, useState);\n\n return (\n \n \n\n {! hasValidData && (\n \n \n
{validationError}
\n
\n
\n )}\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport { PostTypeSettingsPanel } from \"./\";\n\nexport const PostTypesSettingsPanels = function (props) {\n let panels = [];\n\n for (const [postType, postTypeSettings] of Object.entries(props.settings)) {\n panels.push(\n \n );\n }\n\n return (panels);\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { SelectControl as WPSelectControl } from \"@wordpress/components\";\n\nexport const SelectControl = function (props) {\n const onChange = (value) => {\n props.onChange(value);\n };\n\n return (\n \n {props.options.length === 0 && (\n
{props.noItemFoundMessage}
\n )}\n\n {props.options.length > 0 && (\n \n )}\n\n {props.children}\n\n

{props.description}

\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingRow = function (props) {\n return (\n \n \n \n \n \n {props.children}\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsFieldset = function (props) {\n return (\n
\n {props.legend}\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsForm = function (props) {\n return (\n
\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\n\nexport const SettingsSection = function (props) {\n return (\n \n

{props.title}

\n

{props.description}

\n {props.children}\n
\n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SettingsTable = function (props) {\n return (\n \n \n {props.bodyChildren}\n \n
\n )\n}\n","/*\n * Copyright (c) 2024. PublishPress, All rights reserved.\n */\nexport const Spinner = function (props) {\n return (\n
\n );\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const SubmitButton = function (props) {\n return (\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment } from \"@wordpress/element\";\nimport { TextControl as WPTextControl } from \"@wordpress/components\";\nimport { Spinner } from \"./\";\n\nexport const TextControl = function (props) {\n let description;\n\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n\n const onChange = function (value) {\n if (props.onChange) {\n props.onChange(value);\n }\n };\n\n let className = props.className ? props.className : '';\n\n if (props.loading) {\n className += ' publishpress-future-loading publishpress-future-loading-input';\n }\n\n return (\n \n
\n \n\n {props.loading && }\n\n {description}\n
\n
\n )\n}\n","import { Button } from '@wordpress/components';\n\nexport const ToggleArrowButton = function (props) {\n const onClick = function () {\n if (props.onClick) {\n props.onClick();\n }\n };\n\n const iconExpanded = props.iconExpanded ? props.iconExpanded : 'arrow-up-alt2';\n const iconCollapsed = props.iconCollapsed ? props.iconCollapsed : 'arrow-down-alt2';\n\n const icon = props.isExpanded ? iconExpanded : iconCollapsed;\n\n const title = props.isExpanded ? props.titleExpanded : props.titleCollapsed;\n\n return (\n \n )\n}\n","import { ToggleArrowButton } from \"./ToggleArrowButton\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { Fragment, useEffect } from \"@wordpress/element\";\n\nexport const ToggleCalendarDatePicker = (\n {\n isExpanded,\n strings,\n onToggleCalendar,\n currentDate,\n onChangeDate,\n is12Hour,\n startOfWeek\n }\n) => {\n useEffect(() => {\n // Move the element of the toggle button to between the time and date elements.\n const toggleButtonElement = document.querySelector('.future-action-calendar-toggle');\n\n if (! toggleButtonElement) {\n return;\n }\n\n const dateTimeElement = toggleButtonElement.nextElementSibling;\n\n if (! dateTimeElement) {\n return;\n }\n\n const timeElement = dateTimeElement.querySelector('.components-datetime__time');\n\n if (! timeElement) {\n return;\n }\n\n const dateElement = timeElement.nextSibling;\n\n if (! dateElement) {\n return;\n }\n\n dateTimeElement.insertBefore(toggleButtonElement, dateElement)\n });\n\n return (\n \n \n\n \n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\nimport { Fragment, useState, useEffect } from \"@wordpress/element\";\nimport { FormTokenField } from \"@wordpress/components\";\n\nexport const TokensControl = (props) => {\n const [stringValue, setStringValue] = useState('');\n\n useEffect(() => {\n if (props.value) {\n setStringValue(props.value.join(','));\n }\n }, [props.value]);\n\n let description;\n\n if (props.description) {\n if (props.unescapedDescription) {\n // If using this option, the HTML has to be escaped before injected into the JS interface.\n description =

;\n } else {\n description =

{props.description}

;\n }\n }\n\n const onChange = (value) => {\n if (props.onChange) {\n props.onChange(value);\n }\n\n if (typeof value === 'object') {\n setStringValue(value.join(','));\n } else {\n setStringValue('');\n }\n }\n\n const value = props.value ? props.value : [];\n \n return (\n \n \n \n\n {description}\n \n )\n}\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nexport const TrueFalseControl = function (props) {\n const { Fragment } = wp.element;\n\n const onChange = (e) => {\n if (props.onChange) {\n props.onChange(\n e.target.value === props.trueValue && jQuery(e.target).is(':checked')\n );\n // Check only the true radio... using the field name? or directly the ID\n }\n };\n\n return (\n \n \n\n \n   \n \n {props.falseLabel}\n\n

{props.description}

\n
\n )\n}\n","export { ButtonsPanel } from \"./ButtonsPanel\";\nexport { FutureActionPanel } from \"./FutureActionPanel\";\nexport { FutureActionPanelBlockEditor } from \"./FutureActionPanelBlockEditor\";\nexport { FutureActionPanelClassicEditor } from \"./FutureActionPanelClassicEditor\";\nexport { FutureActionPanelQuickEdit } from \"./FutureActionPanelQuickEdit\";\nexport { FutureActionPanelBulkEdit } from \"./FutureActionPanelBulkEdit\";\nexport { PostTypeSettingsPanel } from \"./PostTypeSettingsPanel\";\nexport { PostTypesSettingsPanels } from \"./PostTypesSettingsPanels\";\nexport { SettingRow } from \"./SettingRow\";\nexport { SettingsFieldset } from \"./SettingsFieldset\";\nexport { SettingsForm } from \"./SettingsForm\";\nexport { SettingsSection } from \"./SettingsSection\";\nexport { SettingsTable } from \"./SettingsTable\";\nexport { SubmitButton } from \"./SubmitButton\";\nexport { CheckboxControl } from \"./CheckboxControl\";\nexport { SelectControl } from \"./SelectControl\";\nexport { TextControl } from \"./TextControl\";\nexport { TokensControl } from \"./TokensControl\";\nexport { NonceControl } from \"./NonceControl\";\nexport { TrueFalseControl } from \"./TrueFalseControl\";\nexport { Spinner } from \"./Spinner\";\n","export const getCurrentTimeInSeconds = () => {\n return normalizeUnixTimeToSeconds(new Date().getTime());\n}\n\nexport const getCurrentTimeAsTimestamp = () => {\n return formatUnixTimeToTimestamp(getCurrentTimeInSeconds());\n}\n\nexport const formatUnixTimeToTimestamp = (unixTimestamp) => {\n const date = new Date(\n normalizeUnixTimeToSeconds(unixTimestamp)\n );\n\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).slice(-2); // Months are zero-based\n const day = (\"0\" + date.getDate()).slice(-2);\n const hours = (\"0\" + date.getHours()).slice(-2);\n const minutes = (\"0\" + date.getMinutes()).slice(-2);\n const seconds = (\"0\" + date.getSeconds()).slice(-2);\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport const formatTimestampToUnixTime = (time) => {\n const date = new Date(time);\n\n return normalizeUnixTimeToSeconds(date.getTime());\n}\n\nexport const timeIsInSeconds = (time) => {\n return parseInt(time).toString().length <= 10;\n}\n\nexport const normalizeUnixTimeToSeconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time : time / 1000;\n}\n\nexport const normalizeUnixTimeToMilliseconds = (time) => {\n time = parseInt(time);\n\n return timeIsInSeconds() ? time * 1000 : time;\n}\n","export const compact = (array) => {\n if (!array) {\n return [];\n }\n\n if (! Array.isArray(array) && typeof array === 'object') {\n array = Object.values(array);\n }\n\n return array.filter((item) => {\n return item !== null && item !== undefined && item !== '';\n });\n}\n\nexport const debugLogFactory = (config) => {\n return (description, ...message) => {\n if (console && config.isDebugEnabled) {\n console.debug('[Future]', description, ...message);\n }\n }\n}\n\nexport const isGutenbergEnabled = () => {\n return document.body.classList.contains('block-editor-page');\n}\n\nexport const getElementByName = (name) => {\n return document.getElementsByName(name)[0];\n}\n\nexport const getFieldByName = (name, postId) => {\n return document.querySelector(`#the-list tr#post-${postId} .column-expirationdate input#future_action_${name}-${postId}`);\n}\n\nexport const getFieldValueByName = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return null;\n }\n\n return field.value;\n};\n\nexport const getFieldValueByNameAsArrayOfInt = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field || !field.value) {\n return [];\n }\n\n if (typeof field.value === 'number') {\n field.value = field.value.toString();\n }\n\n return field.value.split(',').map(term => parseInt(term));\n};\n\nexport const getFieldValueByNameAsBool = (name, postId) => {\n const field = getFieldByName(name, postId);\n\n if (!field) {\n return false;\n }\n\n return field.value === '1' || field.value === 'true';\n}\n\nexport const getActionSettingsFromColumnData = (postId) => {\n const columnData = document.querySelector(`#post-expire-column-${postId}`);\n\n if (!columnData) {\n return {};\n }\n\n return {\n enabled: columnData.dataset.actionEnabled === '1',\n action: columnData.dataset.actionType,\n date: columnData.dataset.actionDate,\n dateUnix: columnData.dataset.actionDateUnix,\n taxonomy: columnData.dataset.actionTaxonomy,\n terms: columnData.dataset.actionTerms,\n newStatus: columnData.dataset.actionNewStatus,\n };\n}\n\n/**\n * This function is used to determine if a value is a number, including strings.\n *\n * @param {*} value\n * @returns\n */\nexport const isNumber = (value) => {\n return !isNaN(value);\n}\n","module.exports = ReactDOM;","module.exports = publishpressFutureSettingsConfig;","module.exports = wp;","module.exports = wp.components;","module.exports = wp.data;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.plugins;","module.exports = wp.url;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/*\n * Copyright (c) 2023. PublishPress, All rights reserved.\n */\n\nimport {\n SettingsForm,\n SettingsSection,\n PostTypesSettingsPanels,\n SubmitButton,\n ButtonsPanel,\n NonceControl\n} from \"./components\";\n\nimport { StrictMode, createRoot, useState, useEffect } from \"@wordpress/element\";\n\nimport {\n nonce,\n referrer,\n settings,\n expireTypeList,\n taxonomiesList,\n text,\n statusesList\n} from \"&config.settings-post-types\";\nimport { render } from \"react-dom\";\n\nconst SettingsFormPanel = (props) => {\n const [formValidationStatusPerPostType, setFormValidationStatusPerPostType] = useState({});\n const [pendingValidationPerPostType, setPendingValidationPerPostType] = useState({});\n const [allValid, setAllValid] = useState(true);\n const [hasNoPendingValidation, setHasNoPendingValidation] = useState(true);\n\n useEffect(() => {\n let allFormsAreValid = true;\n\n for (const [postType, isValidForPostType] of Object.entries(formValidationStatusPerPostType)) {\n if (!isValidForPostType) {\n allFormsAreValid = false;\n break;\n }\n }\n\n setAllValid(allFormsAreValid);\n }, [formValidationStatusPerPostType]);\n\n useEffect(() => {\n let hasNoPendingValidation = true;\n\n for (const [postType, hasPending] of Object.entries(pendingValidationPerPostType)) {\n if (hasPending) {\n hasNoPendingValidation = false;\n break;\n }\n }\n\n setHasNoPendingValidation(hasNoPendingValidation);\n }, [pendingValidationPerPostType]);\n\n const onDataIsValid = (postType) => {\n formValidationStatusPerPostType[postType] = true;\n setFormValidationStatusPerPostType({...formValidationStatusPerPostType});\n }\n\n const onDataIsInvalid = (postType) => {\n formValidationStatusPerPostType[postType] = false;\n setFormValidationStatusPerPostType({...formValidationStatusPerPostType});\n }\n\n const onValidationStarted = (postType) => {\n pendingValidationPerPostType[postType] = true;\n setPendingValidationPerPostType({...pendingValidationPerPostType});\n }\n\n const onValidationFinished = (postType) => {\n pendingValidationPerPostType[postType] = false;\n setPendingValidationPerPostType({...pendingValidationPerPostType});\n }\n\n const saveButtonText = hasNoPendingValidation ? text.saveChanges : text.saveChangesPendingValidation;\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n \n )\n};\n\nconst container = document.getElementById(\"publishpress-future-settings-post-types\");\nconst component = ();\n\ncreateRoot(container).render(component);\n"],"names":["ButtonsPanel","props","children","CheckboxControl","description","useState","checked","setChecked","unescapedDescription","className","dangerouslySetInnerHTML","__html","Fragment","label","name","id","onChange","value","DateTimePicker","currentDate","is12Hour","startOfWeek","normalizeUnixTimeToMilliseconds","__nextRemoveHelpButton","wp","components","PanelRow","SelectControl","FormTokenField","Spinner","BaseControl","element","useEffect","decodeEntities","htmlEntities","addQueryArgs","url","data","useSelect","useDispatch","apiFetch","FutureActionPanel","action","select","storeName","getAction","date","getDate","enabled","getEnabled","terms","getTerms","taxonomy","getTaxonomy","taxonomyName","getTaxonomyName","termsListByName","getTermsListByName","termsListById","getTermsListById","isFetchingTerms","getIsFetchingTerms","calendarIsVisible","getCalendarIsVisible","hasValidData","getHasValidData","newStatus","getNewStatus","validationError","setValidationError","setAction","setDate","setEnabled","setTerms","setTaxonomy","setTermsListByName","setTermsListById","setTaxonomyName","setIsFetchingTerms","setCalendarIsVisible","setHasValidData","setNewStatus","insertTerm","term","count","link","slug","callOnChangeData","attribute","onChangeData","handleEnabledChange","isChecked","fetchTerms","path","then","result","forEach","getCalendarIsVisibleFromStorage","localStorage","getItem","context","autoEnableAndHideCheckbox","isCleanNewPost","setItem","onDataIsValid","onDataIsInvalid","selectedTerms","length","compact","map","mapTermsListById","termsListByNameKeys","Object","keys","is24hour","panelClass","contentPanelClass","datePanelClass","timeFormat","actionsSelectOptions","filter","item","indexOf","HelpText","string","href","target","parts","split","push","shift","before","after","key","replaceCurlyBracketsWithLink","strings","timezoneSettingsHelp","displayTaxonomyField","String","includes","termsFieldLabel","newTerms","replace","removeTerms","addTerms","valid","errorActionRequired","errorDateRequired","Date","errorDateInPast","isTermRequired","noTermIsSelected","errorTermsRequired","validateData","SlotFillProvider","type","FutureActionPanelTop","Slot","fillProps","enablePostExpiration","options","FutureActionPanelAfterActionField","statusesSelectOptions","loading","noTaxonomyFound","noTermsFound","suggestions","mapTermsListByName","placeholder","addTermsPlaceholder","maxSuggestions","onFocus","e","jQuery","addClass","__experimentalExpandOnFocus","__experimentalAutoSelectFirstMatch","ToggleCalendarDatePicker","onChangeDate","onToggleCalendar","isExpanded","PluginArea","scope","Fill","FutureActionPanelBlockEditor","PluginDocumentSettingPanel","editPost","getEditedPostAttribute","lockPostSaving","unlockPostSaving","title","panelTitle","icon","initialOpen","postTypeDefaultConfig","autoEnable","postType","store","newAttribute","getExtraData","publishpress_future_action","entries","editPostAttribute","FutureActionPanelBulkEdit","changeAction","getChangeAction","setChangeAction","termsString","join","noChange","changeAdd","addOnly","changeOnly","removeOnly","prop","futureActionUpdate","isNewPost","getElementByName","nonce","FutureActionPanelClassicEditor","getTimezoneOffset","document","getElementsByName","getElementValueByName","parseInt","getTermsFromElementByName","FutureActionPanelQuickEdit","NonceControl","referrer","apiRequestController","PostTypeSettingsPanel","originalExpireTypeList","expireTypeList","settings","postTypeTaxonomy","setPostTypeTaxonomy","termOptions","setTermOptions","termsSelectIsLoading","setTermsSelectIsLoading","setSelectedTerms","howToExpire","settingHowToExpire","setSettingHowToExpire","active","isActive","setIsActive","defaultExpireOffset","expireOffset","setExpireOffset","emailNotification","setEmailNotification","autoEnabled","isAutoEnabled","setIsAutoEnabled","taxonomyLabel","setTaxonomyLabel","howToExpireList","setHowToExpireList","hasPendingValidation","setHasPendingValidation","offsetPreview","setOffsetPreview","taxonomyRelatedActions","newExpireTypeList","taxonomiesList","settingsTermsOptions","option","abort","signal","AbortController","undefined","method","offset","isValid","message","preview","expireType","toLowerCase","onValidationStarted","onValidationFinished","termOptionsLabels","settingsRows","SettingRow","text","fieldActive","fieldActiveLabel","fieldAutoEnable","fieldAutoEnableLabel","fieldTaxonomy","selected","noItemFoundMessage","noItemsfound","fieldTaxonomyDescription","fieldHowToExpire","fieldHowToExpireDescription","statusesList","TokensControl","fieldTerm","isLoading","fieldTermDescription","expandOnFocus","autoSelectFirstMatch","fieldDefaultDateTimeOffset","TextControl","globalDefaultExpireOffset","fieldDefaultDateTimeOffsetDescription","datePreview","fieldWhoToNotify","fieldWhoToNotifyDescription","applyFilters","SettingsFieldset","legend","SettingsTable","bodyChildren","PostTypesSettingsPanels","panels","postTypeSettings","valign","htmlFor","SettingsForm","SettingsSection","SubmitButton","disabled","ToggleArrowButton","iconExpanded","iconCollapsed","titleExpanded","titleCollapsed","Button","isSmall","onClick","toggleButtonElement","querySelector","dateTimeElement","nextElementSibling","timeElement","dateElement","nextSibling","insertBefore","hideCalendar","showCalendar","stringValue","setStringValue","TrueFalseControl","trueValue","is","defaultChecked","trueLabel","falseValue","falseLabel","getCurrentTimeInSeconds","normalizeUnixTimeToSeconds","getTime","formatUnixTimeToTimestamp","getCurrentTimeAsTimestamp","unixTimestamp","getFullYear","getMonth","slice","getHours","getMinutes","getSeconds","timeIsInSeconds","formatTimestampToUnixTime","time","toString","getFieldByName","array","Array","isArray","values","debugLogFactory","config","console","isDebugEnabled","debug","isGutenbergEnabled","body","classList","contains","postId","getFieldValueByName","field","getFieldValueByNameAsArrayOfInt","getFieldValueByNameAsBool","getActionSettingsFromColumnData","columnData","dataset","actionEnabled","actionType","actionDate","dateUnix","actionDateUnix","actionTaxonomy","actionTerms","actionNewStatus","isNumber","isNaN","module","exports","ReactDOM","publishpressFutureSettingsConfig","hooks","plugins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","container","getElementById","component","formValidationStatusPerPostType","setFormValidationStatusPerPostType","pendingValidationPerPostType","setPendingValidationPerPostType","allValid","setAllValid","hasNoPendingValidation","setHasNoPendingValidation","allFormsAreValid","saveButtonText","saveChanges","saveChangesPendingValidation","StrictMode","settingsSectionTitle","settingsSectionDescription","createRoot","render"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/jsx/block-editor.jsx b/assets/jsx/block-editor.jsx index 8cf04ecd8..5c412066e 100644 --- a/assets/jsx/block-editor.jsx +++ b/assets/jsx/block-editor.jsx @@ -1,7 +1,7 @@ import { createStore } from './data'; import { FutureActionPanelBlockEditor } from './components'; -import { select } from '&wp.data'; -import { registerPlugin } from '&wp.plugins'; +import { select } from '@wordpress/data'; +import { registerPlugin } from '@wordpress/plugins'; import { actionsSelectOptions, is12Hour, diff --git a/assets/jsx/bulk-edit.jsx b/assets/jsx/bulk-edit.jsx index 4e75b0da5..9de4a8df9 100644 --- a/assets/jsx/bulk-edit.jsx +++ b/assets/jsx/bulk-edit.jsx @@ -1,7 +1,7 @@ import { FutureActionPanelBulkEdit } from './components'; import { createStore } from './data'; -import { createRoot } from '&wp.element'; -import { select, dispatch } from '&wp.data'; +import { createRoot } from '@wordpress/element'; +import { select, dispatch } from '@wordpress/data'; import { inlineEditPost } from "&window"; import { postTypeDefaultConfig, diff --git a/assets/jsx/classic-editor.jsx b/assets/jsx/classic-editor.jsx index 14bfcf323..d0d6b9b53 100644 --- a/assets/jsx/classic-editor.jsx +++ b/assets/jsx/classic-editor.jsx @@ -1,8 +1,8 @@ import { FutureActionPanelClassicEditor } from './components'; import { createStore } from './data'; import { isGutenbergEnabled } from './utils'; -import { createRoot } from '&wp.element'; -import { select } from '&wp.data'; +import { createRoot } from '@wordpress/element'; +import { select } from '@wordpress/data'; import { postType, isNewPost, @@ -16,7 +16,7 @@ import { defaultDate, statusesSelectOptions } from "&config.classic-editor"; -import { render } from "&ReactDOM"; +import { render } from "react-dom"; if (! isGutenbergEnabled()) { const storeName = 'publishpress-future/future-action'; diff --git a/assets/jsx/components/CheckboxControl.jsx b/assets/jsx/components/CheckboxControl.jsx index 962a45fd0..bda8221a5 100644 --- a/assets/jsx/components/CheckboxControl.jsx +++ b/assets/jsx/components/CheckboxControl.jsx @@ -1,8 +1,8 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment, useState } from "&wp.element"; -import { CheckboxControl as WPCheckboxControl } from "&wp.components"; +import { Fragment, useState } from "@wordpress/element"; +import { CheckboxControl as WPCheckboxControl } from "@wordpress/components"; export const CheckboxControl = function (props) { const [checked, setChecked] = useState(props.checked || false); diff --git a/assets/jsx/components/DateTimePicker.jsx b/assets/jsx/components/DateTimePicker.jsx index 0a892a611..bd1a231a3 100644 --- a/assets/jsx/components/DateTimePicker.jsx +++ b/assets/jsx/components/DateTimePicker.jsx @@ -1,5 +1,5 @@ import { normalizeUnixTimeToMilliseconds } from "../time"; -import { DateTimePicker as WPDateTimePicker } from "&wp.components"; +import { DateTimePicker as WPDateTimePicker } from "@wordpress/components"; export const DateTimePicker = ({currentDate, onChange, is12Hour, startOfWeek}) => { diff --git a/assets/jsx/components/FutureActionPanel.jsx b/assets/jsx/components/FutureActionPanel.jsx index 8b5545e10..3e73df017 100644 --- a/assets/jsx/components/FutureActionPanel.jsx +++ b/assets/jsx/components/FutureActionPanel.jsx @@ -1,5 +1,9 @@ import { compact } from '../utils'; import { ToggleCalendarDatePicker } from './ToggleCalendarDatePicker'; +import { PluginArea } from '@wordpress/plugins'; +import { Fill, Slot, SlotFillProvider } from '@wordpress/components'; +import { FutureActionPanelAfterActionField } from './FutureActionPanelAfterActionField'; +import { FutureActionPanelTop } from './FutureActionPanelTop'; const { PanelRow, CheckboxControl, SelectControl, FormTokenField, Spinner, BaseControl } = wp.components; const { Fragment, useEffect, useState } = wp.element; @@ -53,7 +57,7 @@ export const FutureActionPanel = (props) => { } const insertTerm = (term) => { - termsListByName[term] = {id: term, count: 0, description: "", link: "", name: term, slug: term, taxonomy: taxonomy}; + termsListByName[term] = { id: term, count: 0, description: "", link: "", name: term, slug: term, taxonomy: taxonomy }; termsListById[term] = term; setTermsListByName(termsListByName); setTermsListById(termsListById); @@ -159,7 +163,7 @@ export const FutureActionPanel = (props) => { } useEffect(() => { - if (props.autoEnableAndHideCheckbox) { + if (props.autoEnableAndHideCheckbox) { setEnabled(true); } else { setEnabled(props.enabled); @@ -197,7 +201,7 @@ export const FutureActionPanel = (props) => { props.onDataIsValid(); } - if (! hasValidData && props.onDataIsInvalid) { + if (!hasValidData && props.onDataIsInvalid) { props.onDataIsInvalid(); } }, [hasValidData]); @@ -222,7 +226,7 @@ export const FutureActionPanel = (props) => { let is24hour; if (props.timeFormat === 'inherited') { - is24hour = ! props.is12Hour; + is24hour = !props.is12Hour; } else { is24hour = props.timeFormat === '24h'; } @@ -248,7 +252,7 @@ export const FutureActionPanel = (props) => { // Remove items from actions list if related to taxonomies and there is no taxonmoy for the post type let actionsSelectOptions = props.actionsSelectOptions; - if (! props.taxonomy) { + if (!props.taxonomy) { actionsSelectOptions = props.actionsSelectOptions.filter((item) => { return ['category', 'category-add', 'category-remove', 'category-remove-all'].indexOf(item.value) === -1; }); @@ -273,17 +277,17 @@ export const FutureActionPanel = (props) => { const validateData = () => { let valid = true; - if (! enabled) { + if (!enabled) { setValidationError(''); return true; } - if (! action) { + if (!action) { setValidationError(props.strings.errorActionRequired); valid = false; } - if (! date) { + if (!date) { setValidationError(props.strings.errorDateRequired); valid = false; } @@ -310,7 +314,7 @@ export const FutureActionPanel = (props) => { } useEffect(() => { - if (! enabled) { + if (!enabled) { setHasValidData(true); setValidationError(''); @@ -329,123 +333,130 @@ export const FutureActionPanel = (props) => { } return ( -
- {props.autoEnableAndHideCheckbox && ( - - )} - - {! props.autoEnableAndHideCheckbox && ( - - - - )} - - {enabled && ( - - - +
+ {props.autoEnableAndHideCheckbox && ( + + )} + + + + {!props.autoEnableAndHideCheckbox && ( + + + )} - {action === 'change-status' && - + {enabled && ( + + - } - - { - displayTaxonomyField && ( - isFetchingTerms && ( - - - {`${props.strings.loading} (${taxonomyName})`} - - - - ) - || (!taxonomy && ( - - -
- {props.strings.noTaxonomyFound} -
-
-
- ) - || ( - termsListByNameKeys.length === 0 && ( - - -
- {props.strings.noTermsFound} -
-
-
- ) + + + + {action === 'change-status' && + + + + } + + { + displayTaxonomyField && ( + isFetchingTerms && ( + + + {`${props.strings.loading} (${taxonomyName})`} + + + + ) + || (!taxonomy && ( + + +
+ {props.strings.noTaxonomyFound} +
+
+
+ ) || ( - - - - - + termsListByNameKeys.length === 0 && ( + + +
+ {props.strings.noTermsFound} +
+
+
+ ) + || ( + + + + + + ) ) ) ) - ) - } - - - setCalendarIsVisible(!calendarIsVisible)} - is12Hour={!is24hour} - startOfWeek={props.startOfWeek} - isExpanded={calendarIsVisible} - strings={props.strings} - /> - - - -
-
- - {HelpText} -
-
+ } + + + setCalendarIsVisible(!calendarIsVisible)} + is12Hour={!is24hour} + startOfWeek={props.startOfWeek} + isExpanded={calendarIsVisible} + strings={props.strings} + /> + - {! hasValidData && ( - -
{validationError}
-
+
+
+ + {HelpText} +
- )} -
- )} -
+ + {!hasValidData && ( + + +
{validationError}
+
+
+ )} +
+ )} +
+ + ); }; diff --git a/assets/jsx/components/FutureActionPanelAfterActionField.jsx b/assets/jsx/components/FutureActionPanelAfterActionField.jsx new file mode 100644 index 000000000..765cadf52 --- /dev/null +++ b/assets/jsx/components/FutureActionPanelAfterActionField.jsx @@ -0,0 +1,15 @@ +import { Slot, Fill } from '@wordpress/components'; + +export const FutureActionPanelAfterActionField = ({ children }) => ( + + {children} + +); + +const FutureActionPanelAfterActionFieldSlot = (props) => ( + +); + +FutureActionPanelAfterActionField.Slot = FutureActionPanelAfterActionFieldSlot; + +export default FutureActionPanelAfterActionField; diff --git a/assets/jsx/components/FutureActionPanelBlockEditor.jsx b/assets/jsx/components/FutureActionPanelBlockEditor.jsx index e5482180d..f36c8705d 100644 --- a/assets/jsx/components/FutureActionPanelBlockEditor.jsx +++ b/assets/jsx/components/FutureActionPanelBlockEditor.jsx @@ -32,6 +32,7 @@ export const FutureActionPanelBlockEditor = (props) => { newAttribute['date'] = store.getDate(); newAttribute['terms'] = store.getTerms(); newAttribute['taxonomy'] = store.getTaxonomy(); + newAttribute['extraData'] = store.getExtraData(); } editPostAttribute(newAttribute); diff --git a/assets/jsx/components/FutureActionPanelClassicEditor.jsx b/assets/jsx/components/FutureActionPanelClassicEditor.jsx index 6f77c32c7..082348a1f 100644 --- a/assets/jsx/components/FutureActionPanelClassicEditor.jsx +++ b/assets/jsx/components/FutureActionPanelClassicEditor.jsx @@ -1,6 +1,6 @@ import { FutureActionPanel } from "./"; -import { select, useSelect } from "&wp.data"; -import { useEffect } from "&wp.element"; +import { select, useSelect } from "@wordpress/data"; +import { useEffect } from "@wordpress/element"; export const FutureActionPanelClassicEditor = (props) => { const browserTimezoneOffset = new Date().getTimezoneOffset(); diff --git a/assets/jsx/components/FutureActionPanelQuickEdit.jsx b/assets/jsx/components/FutureActionPanelQuickEdit.jsx index ee42e2bf7..13edf60cd 100644 --- a/assets/jsx/components/FutureActionPanelQuickEdit.jsx +++ b/assets/jsx/components/FutureActionPanelQuickEdit.jsx @@ -1,6 +1,6 @@ import { FutureActionPanel } from './'; -import { useSelect, select } from '&wp.data'; -import { useEffect } from '&wp.element'; +import { useSelect, select } from '@wordpress/data'; +import { useEffect } from '@wordpress/element'; export const FutureActionPanelQuickEdit = (props) => { const onChangeData = (attribute, value) => {}; diff --git a/assets/jsx/components/FutureActionPanelTop.jsx b/assets/jsx/components/FutureActionPanelTop.jsx new file mode 100644 index 000000000..48b5a89f2 --- /dev/null +++ b/assets/jsx/components/FutureActionPanelTop.jsx @@ -0,0 +1,15 @@ +import { Slot, Fill } from '@wordpress/components'; + +export const FutureActionPanelTop = ({ children }) => ( + + {children} + +); + +const FutureActionPanelTopSlot = (props) => ( + +); + +FutureActionPanelTop.Slot = FutureActionPanelTopSlot; + +export default FutureActionPanelTop; diff --git a/assets/jsx/components/NonceControl.jsx b/assets/jsx/components/NonceControl.jsx index 3242db646..3b63fa9d5 100644 --- a/assets/jsx/components/NonceControl.jsx +++ b/assets/jsx/components/NonceControl.jsx @@ -1,7 +1,7 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment } from "&wp.element"; +import { Fragment } from "@wordpress/element"; export const NonceControl = function (props) { if (! props.name) { diff --git a/assets/jsx/components/PostTypeSettingsPanel.jsx b/assets/jsx/components/PostTypeSettingsPanel.jsx index e8b32057e..084ae6cb4 100644 --- a/assets/jsx/components/PostTypeSettingsPanel.jsx +++ b/assets/jsx/components/PostTypeSettingsPanel.jsx @@ -11,9 +11,9 @@ import { TokensControl, CheckboxControl } from './'; -import { useEffect, useState, Fragment } from '&wp.element'; -import { addQueryArgs } from '&wp.url'; -import { applyFilters } from '&wp.hooks'; +import { useEffect, useState, Fragment } from '@wordpress/element'; +import { addQueryArgs } from '@wordpress/url'; +import { applyFilters } from '@wordpress/hooks'; import { apiFetch } from '&wp'; const { PanelRow, BaseControl } = wp.components; diff --git a/assets/jsx/components/SelectControl.jsx b/assets/jsx/components/SelectControl.jsx index 410fdd90e..94c465127 100644 --- a/assets/jsx/components/SelectControl.jsx +++ b/assets/jsx/components/SelectControl.jsx @@ -1,8 +1,8 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment } from "&wp.element"; -import { SelectControl as WPSelectControl } from "&wp.components"; +import { Fragment } from "@wordpress/element"; +import { SelectControl as WPSelectControl } from "@wordpress/components"; export const SelectControl = function (props) { const onChange = (value) => { diff --git a/assets/jsx/components/SettingRow.jsx b/assets/jsx/components/SettingRow.jsx index 60fdd608b..4d1705dc4 100644 --- a/assets/jsx/components/SettingRow.jsx +++ b/assets/jsx/components/SettingRow.jsx @@ -1,7 +1,7 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment } from "&wp.element"; +import { Fragment } from "@wordpress/element"; export const SettingRow = function (props) { return ( diff --git a/assets/jsx/components/SettingsSection.jsx b/assets/jsx/components/SettingsSection.jsx index 2e7a08916..c5b6a967c 100644 --- a/assets/jsx/components/SettingsSection.jsx +++ b/assets/jsx/components/SettingsSection.jsx @@ -1,7 +1,7 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment } from "&wp.element"; +import { Fragment } from "@wordpress/element"; export const SettingsSection = function (props) { return ( diff --git a/assets/jsx/components/TaxonomiesControl.jsx b/assets/jsx/components/TaxonomiesControl.jsx index 729e73426..b9fb5b21f 100644 --- a/assets/jsx/components/TaxonomiesControl.jsx +++ b/assets/jsx/components/TaxonomiesControl.jsx @@ -3,7 +3,7 @@ */ import { SelectControl } from "."; -import { Fragment } from "&wp.element"; +import { Fragment } from "@wordpress/element"; export const TaxonomiesControl = function (props) { const taxonomiesOptions = []; diff --git a/assets/jsx/components/TextControl.jsx b/assets/jsx/components/TextControl.jsx index 7f74c30eb..9ba37d5c8 100644 --- a/assets/jsx/components/TextControl.jsx +++ b/assets/jsx/components/TextControl.jsx @@ -1,8 +1,8 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment } from "&wp.element"; -import { TextControl as WPTextControl } from "&wp.components"; +import { Fragment } from "@wordpress/element"; +import { TextControl as WPTextControl } from "@wordpress/components"; import { Spinner } from "./"; export const TextControl = function (props) { diff --git a/assets/jsx/components/ToggleArrowButton.jsx b/assets/jsx/components/ToggleArrowButton.jsx index 3976c24c9..99506820c 100644 --- a/assets/jsx/components/ToggleArrowButton.jsx +++ b/assets/jsx/components/ToggleArrowButton.jsx @@ -1,4 +1,4 @@ -import { Button } from '&wp.components'; +import { Button } from '@wordpress/components'; export const ToggleArrowButton = function (props) { const onClick = function () { diff --git a/assets/jsx/components/ToggleCalendarDatePicker.jsx b/assets/jsx/components/ToggleCalendarDatePicker.jsx index 2a59bdac8..ae4b8cde8 100644 --- a/assets/jsx/components/ToggleCalendarDatePicker.jsx +++ b/assets/jsx/components/ToggleCalendarDatePicker.jsx @@ -1,6 +1,6 @@ import { ToggleArrowButton } from "./ToggleArrowButton"; import { DateTimePicker } from "./DateTimePicker"; -import { Fragment, useEffect } from "&wp.element"; +import { Fragment, useEffect } from "@wordpress/element"; export const ToggleCalendarDatePicker = ( { diff --git a/assets/jsx/components/TokensControl.jsx b/assets/jsx/components/TokensControl.jsx index 1902ebf89..08583a4a2 100644 --- a/assets/jsx/components/TokensControl.jsx +++ b/assets/jsx/components/TokensControl.jsx @@ -1,8 +1,8 @@ /* * Copyright (c) 2023. PublishPress, All rights reserved. */ -import { Fragment, useState, useEffect } from "&wp.element"; -import { FormTokenField } from "&wp.components"; +import { Fragment, useState, useEffect } from "@wordpress/element"; +import { FormTokenField } from "@wordpress/components"; export const TokensControl = (props) => { const [stringValue, setStringValue] = useState(''); diff --git a/assets/jsx/data.jsx b/assets/jsx/data.jsx index 8845d6fce..f4989c523 100644 --- a/assets/jsx/data.jsx +++ b/assets/jsx/data.jsx @@ -1,6 +1,6 @@ import { formatUnixTimeToTimestamp, getCurrentTimeAsTimestamp, normalizeUnixTimeToSeconds } from './time'; import { isNumber } from './utils'; -import { register, createReduxStore } from '&wp.data'; +import { register, createReduxStore } from '@wordpress/data'; export const createStore = (props) => { if (props.defaultState.terms && typeof props.defaultState.terms === 'string') { @@ -21,6 +21,7 @@ export const createStore = (props) => { changeAction: 'no-change', calendarIsVisible: true, hasValidData: true, + extraData: props.defaultState.extraData ? props.defaultState.extraData : {}, } const store = createReduxStore(props.name, { @@ -102,6 +103,25 @@ export const createStore = (props) => { ...state, hasValidData: action.hasValidData, } + + case 'SET_EXTRA_DATA': + return { + ...state, + extraData: { + ...action.extraData, + } + } + + case 'SET_EXTRA_DATA_BY_NAME': + const extraData = { + ...state.extraData, + [action.name]: action.value + }; + + return { + ...state, + extraData: {...extraData} + } } return state; @@ -184,6 +204,19 @@ export const createStore = (props) => { type: 'SET_HAS_VALID_DATA', hasValidData: hasValidData } + }, + setExtraData(extraData) { + return { + type: 'SET_EXTRA_DATA', + extraData: extraData + } + }, + setExtraDataByName(name, value) { + return { + type: 'SET_EXTRA_DATA_BY_NAME', + name: name, + value: value + } } }, selectors: { @@ -226,6 +259,12 @@ export const createStore = (props) => { getHasValidData(state) { return state.hasValidData; }, + getExtraData(state) { + return state.extraData; + }, + getExtraDataByName(state, name) { + return state.extraData[name] || null; + } } }); diff --git a/assets/jsx/quick-edit.jsx b/assets/jsx/quick-edit.jsx index 632384279..ccc2e10b0 100644 --- a/assets/jsx/quick-edit.jsx +++ b/assets/jsx/quick-edit.jsx @@ -1,8 +1,8 @@ import { FutureActionPanelQuickEdit } from './components'; import { createStore } from './data'; import { getActionSettingsFromColumnData } from './utils'; -import { createRoot } from '&wp.element'; -import { select, dispatch } from '&wp.data'; +import { createRoot } from '@wordpress/element'; +import { select, dispatch } from '@wordpress/data'; import { inlineEditPost } from "&window"; import { postType, @@ -49,6 +49,10 @@ inlineEditPost.edit = function (button, id) { const postId = getPostIdFromButton(button); const data = getActionSettingsFromColumnData(postId); + if (!data) { + return; + } + const enabled = data.enabled; const action = data.action; const date = data.date; @@ -84,6 +88,9 @@ inlineEditPost.edit = function (button, id) { } const container = document.getElementById("publishpress-future-quick-edit"); + if (!container) { + return; + } const root = createRoot(container); const saveButton = document.querySelector('.inline-edit-save .save'); diff --git a/assets/jsx/settings-post-types.jsx b/assets/jsx/settings-post-types.jsx index 4cb397357..4c2e81128 100644 --- a/assets/jsx/settings-post-types.jsx +++ b/assets/jsx/settings-post-types.jsx @@ -11,7 +11,7 @@ import { NonceControl } from "./components"; -import { StrictMode, createRoot, useState, useEffect } from "&wp.element"; +import { StrictMode, createRoot, useState, useEffect } from "@wordpress/element"; import { nonce, @@ -22,7 +22,7 @@ import { text, statusesList } from "&config.settings-post-types"; -import { render } from "&ReactDOM"; +import { render } from "react-dom"; const SettingsFormPanel = (props) => { const [formValidationStatusPerPostType, setFormValidationStatusPerPostType] = useState({}); diff --git a/assets/jsx/utils.jsx b/assets/jsx/utils.jsx index 441c2eb68..40068b888 100644 --- a/assets/jsx/utils.jsx +++ b/assets/jsx/utils.jsx @@ -69,6 +69,10 @@ export const getFieldValueByNameAsBool = (name, postId) => { export const getActionSettingsFromColumnData = (postId) => { const columnData = document.querySelector(`#post-expire-column-${postId}`); + if (!columnData) { + return {}; + } + return { enabled: columnData.dataset.actionEnabled === '1', action: columnData.dataset.actionType, diff --git a/composer.json b/composer.json index 7cb6d658c..0641ae3bc 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,8 @@ "dealerdirect/phpcodesniffer-composer-installer": true, "phpstan/extension-installer": true, "automattic/jetpack-autoloader": true - } + }, + "process-timeout": 0 }, "autoload-dev": { "psr-4": { @@ -74,10 +75,15 @@ "build:clean": "pbuild clean", "build:js": "wp-scripts build --mode production", "build:js-dev": "wp-scripts build --mode development", - "build:js-watch": "wp-scripts build --mode development --watch", + "profile:js": "webpack --profile --json > webpack-bundle-stats.json", + "watch:js": "wp-scripts build --mode development --watch", "get:version": "pbuild version", "gen:mo": "wp i18n make-mo ./languages ./languages --allow-root", "gen:pot": "wp i18n make-pot . languages/post-expirator.pot --domain=post-expirator --exclude=dev-workspace,.wordpress-org,.github,dist,tests, --allow-root", + "gen:lang": [ + "@gen:pot", + "@gen:mo" + ], "cleanup:gh-workflows": "user=publishpress repo=publishpress-future; gh api repos/$user/$repo/actions/runs --paginate -q '.workflow_runs[] | select(.head_branch != \"master\") | \"\\(.id)\"' | xargs -n1 -I % gh api --silent repos/$user/$repo/actions/runs/% -X DELETE", "dbox:up": "pdropbox upload && pdropbox share", "dbox:list": "pdropbox list", diff --git a/composer.lock b/composer.lock index ea1acf944..076a7f3af 100644 --- a/composer.lock +++ b/composer.lock @@ -9,32 +9,32 @@ "packages-dev": [ { "name": "automattic/vipwpcs", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/Automattic/VIP-Coding-Standards.git", - "reference": "1b8960ebff9ea3eb482258a906ece4d1ee1e25fd" + "reference": "2b1d206d81b74ed999023cffd924f862ff2753c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Automattic/VIP-Coding-Standards/zipball/1b8960ebff9ea3eb482258a906ece4d1ee1e25fd", - "reference": "1b8960ebff9ea3eb482258a906ece4d1ee1e25fd", + "url": "https://api.github.com/repos/Automattic/VIP-Coding-Standards/zipball/2b1d206d81b74ed999023cffd924f862ff2753c8", + "reference": "2b1d206d81b74ed999023cffd924f862ff2753c8", "shasum": "" }, "require": { "php": ">=5.4", - "phpcsstandards/phpcsextra": "^1.1.0", - "phpcsstandards/phpcsutils": "^1.0.8", - "sirbrillig/phpcs-variable-analysis": "^2.11.17", - "squizlabs/php_codesniffer": "^3.7.2", - "wp-coding-standards/wpcs": "^3.0" + "phpcsstandards/phpcsextra": "^1.2.1", + "phpcsstandards/phpcsutils": "^1.0.11", + "sirbrillig/phpcs-variable-analysis": "^2.11.18", + "squizlabs/php_codesniffer": "^3.9.2", + "wp-coding-standards/wpcs": "^3.1.0" }, "require-dev": { "php-parallel-lint/php-console-highlighter": "^1.0.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcompatibility/php-compatibility": "^9", "phpcsstandards/phpcsdevtools": "^1.0", - "phpunit/phpunit": "^4 || ^5 || ^6 || ^7" + "phpunit/phpunit": "^4 || ^5 || ^6 || ^7 || ^8 || ^9" }, "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", @@ -59,7 +59,7 @@ "source": "https://github.com/Automattic/VIP-Coding-Standards", "wiki": "https://github.com/Automattic/VIP-Coding-Standards/wiki" }, - "time": "2023-09-05T11:01:05+00:00" + "time": "2024-05-10T20:31:09+00:00" }, { "name": "behat/behat", @@ -260,6 +260,70 @@ }, "time": "2022-03-30T09:27:43+00:00" }, + { + "name": "clue/ndjson-react", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, { "name": "codeception/codeception", "version": "5.1.2", @@ -698,16 +762,16 @@ }, { "name": "codeception/module-db", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/Codeception/module-db.git", - "reference": "0d636cb8fa0d61fea10f42f6d434e998dfc80d53" + "reference": "06be16dcf4dda46eaef9454f1361d62bcb971c36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-db/zipball/0d636cb8fa0d61fea10f42f6d434e998dfc80d53", - "reference": "0d636cb8fa0d61fea10f42f6d434e998dfc80d53", + "url": "https://api.github.com/repos/Codeception/module-db/zipball/06be16dcf4dda46eaef9454f1361d62bcb971c36", + "reference": "06be16dcf4dda46eaef9454f1361d62bcb971c36", "shasum": "" }, "require": { @@ -720,6 +784,9 @@ "conflict": { "codeception/codeception": "<5.0" }, + "require-dev": { + "squizlabs/php_codesniffer": "*" + }, "type": "library", "autoload": { "classmap": [ @@ -747,9 +814,9 @@ ], "support": { "issues": "https://github.com/Codeception/module-db/issues", - "source": "https://github.com/Codeception/module-db/tree/3.1.3" + "source": "https://github.com/Codeception/module-db/tree/3.1.4" }, - "time": "2024-03-04T19:16:54+00:00" + "time": "2024-05-16T20:12:18+00:00" }, { "name": "codeception/module-filesystem", @@ -1116,16 +1183,16 @@ }, { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "04229f163664973f68f38f6f73d917799168ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { @@ -1167,7 +1234,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.1.4" }, "funding": [ { @@ -1183,7 +1250,7 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-05-27T13:40:54+00:00" }, { "name": "composer/semver", @@ -1268,16 +1335,16 @@ }, { "name": "composer/xdebug-handler", - "version": "3.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { @@ -1288,7 +1355,7 @@ "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -1312,9 +1379,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -1330,7 +1397,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T21:32:43+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -1602,27 +1669,142 @@ }, "time": "2021-04-17T13:49:01+00:00" }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" + }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.52.0", + "version": "v3.59.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "a3564bd66f4bce9bc871ef18b690e2dc67a7f969" + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a3564bd66f4bce9bc871ef18b690e2dc67a7f969", - "reference": "a3564bd66f4bce9bc871ef18b690e2dc67a7f969", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", "shasum": "" }, "require": { + "clue/ndjson-react": "^1.0", "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", @@ -1636,15 +1818,16 @@ "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, @@ -1659,7 +1842,10 @@ "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1684,7 +1870,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.52.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" }, "funding": [ { @@ -1692,20 +1878,20 @@ "type": "github" } ], - "time": "2024-03-18T18:40:11+00:00" + "time": "2024-06-16T14:17:03+00:00" }, { "name": "gettext/gettext", - "version": "v4.8.11", + "version": "v4.8.12", "source": { "type": "git", "url": "https://github.com/php-gettext/Gettext.git", - "reference": "b632aaf5e4579d0b2ae8bc61785e238bff4c5156" + "reference": "11af89ee6c087db3cf09ce2111a150bca5c46e12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/b632aaf5e4579d0b2ae8bc61785e238bff4c5156", - "reference": "b632aaf5e4579d0b2ae8bc61785e238bff4c5156", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/11af89ee6c087db3cf09ce2111a150bca5c46e12", + "reference": "11af89ee6c087db3cf09ce2111a150bca5c46e12", "shasum": "" }, "require": { @@ -1757,7 +1943,7 @@ "support": { "email": "oom@oscarotero.com", "issues": "https://github.com/oscarotero/Gettext/issues", - "source": "https://github.com/php-gettext/Gettext/tree/v4.8.11" + "source": "https://github.com/php-gettext/Gettext/tree/v4.8.12" }, "funding": [ { @@ -1773,7 +1959,7 @@ "type": "patreon" } ], - "time": "2023-08-14T15:15:05+00:00" + "time": "2024-05-18T10:25:07+00:00" }, { "name": "gettext/languages", @@ -2241,12 +2427,12 @@ "version": "v5.2.13", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", + "url": "https://github.com/jsonrainbow/json-schema.git", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, @@ -2301,23 +2487,23 @@ "schema" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/v5.2.13" }, "time": "2023-09-26T02:20:38+00:00" }, { "name": "lucatume/wp-browser", - "version": "4.1.4", + "version": "4.2.4", "source": { "type": "git", "url": "https://github.com/lucatume/wp-browser.git", - "reference": "531d01d9e1fb0b154a2231afc7572ac48bebb1f6" + "reference": "620a8e2901f0669a190b0e9eeebc9c8c564a07e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/531d01d9e1fb0b154a2231afc7572ac48bebb1f6", - "reference": "531d01d9e1fb0b154a2231afc7572ac48bebb1f6", + "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/620a8e2901f0669a190b0e9eeebc9c8c564a07e2", + "reference": "620a8e2901f0669a190b0e9eeebc9c8c564a07e2", "shasum": "" }, "require": { @@ -2345,7 +2531,7 @@ "gumlet/php-image-resize": "^1.6", "lucatume/codeception-snapshot-assertions": "^1.0.0", "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "*", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-symfony": "^1.3", "rector/rector": "0.19.8", "squizlabs/php_codesniffer": "^3.7", @@ -2395,7 +2581,7 @@ ], "support": { "issues": "https://github.com/lucatume/wp-browser/issues", - "source": "https://github.com/lucatume/wp-browser/tree/4.1.4" + "source": "https://github.com/lucatume/wp-browser/tree/4.2.4" }, "funding": [ { @@ -2403,20 +2589,20 @@ "type": "github" } ], - "time": "2024-03-19T10:03:44+00:00" + "time": "2024-06-06T06:06:07+00:00" }, { "name": "masterminds/html5", - "version": "2.8.1", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", - "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", "shasum": "" }, "require": { @@ -2424,7 +2610,7 @@ "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" }, "type": "library", "extra": { @@ -2468,9 +2654,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" }, - "time": "2023-05-10T11:58:31+00:00" + "time": "2024-03-31T07:05:07+00:00" }, { "name": "mck89/peast", @@ -2573,16 +2759,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -2590,11 +2776,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -2620,7 +2807,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -2628,7 +2815,7 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "nikic/php-parser", @@ -2690,16 +2877,16 @@ }, { "name": "overtrue/phplint", - "version": "9.1.2", + "version": "9.3.1", "source": { "type": "git", "url": "https://github.com/overtrue/phplint.git", - "reference": "7a9822c863d19fa8ec42f862c0e135da58b5cb4b" + "reference": "1e43e92e425c953f7c154460f0644517ea4f9317" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/phplint/zipball/7a9822c863d19fa8ec42f862c0e135da58b5cb4b", - "reference": "7a9822c863d19fa8ec42f862c0e135da58b5cb4b", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/1e43e92e425c953f7c154460f0644517ea4f9317", + "reference": "1e43e92e425c953f7c154460f0644517ea4f9317", "shasum": "" }, "require": { @@ -2717,8 +2904,9 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", + "bartlett/sarif-php-sdk": "^1.2", "brainmaestro/composer-git-hooks": "^2.8.5 || 3.0.0-alpha.1", - "jetbrains/phpstorm-stubs": "^2021.3 || ^2022.3 || ^2023.3", + "jetbrains/phpstorm-stubs": "^2021.3 || ^2022.3 || ^2023.3 || ^2024.1", "php-parallel-lint/php-console-highlighter": "^1.0" }, "bin": [ @@ -2726,6 +2914,11 @@ ], "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "target-directory": "vendor-bin", + "forward-command": true + }, "hooks": { "pre-commit": [ "composer style:fix", @@ -2736,7 +2929,7 @@ ] }, "branch-alias": { - "dev-main": "9.1.x-dev" + "dev-main": "9.3.x-dev" } }, "autoload": { @@ -2768,7 +2961,7 @@ ], "support": { "issues": "https://github.com/overtrue/phplint/issues", - "source": "https://github.com/overtrue/phplint/tree/9.1.2" + "source": "https://github.com/overtrue/phplint/tree/9.3.1" }, "funding": [ { @@ -2776,7 +2969,7 @@ "type": "github" } ], - "time": "2024-02-06T10:43:30+00:00" + "time": "2024-05-17T03:39:25+00:00" }, { "name": "pdepend/pdepend", @@ -2961,16 +3154,16 @@ }, { "name": "php-stubs/wordpress-stubs", - "version": "v6.4.3", + "version": "v6.5.3", "source": { "type": "git", "url": "https://github.com/php-stubs/wordpress-stubs.git", - "reference": "6105bdab2f26c0204fe90ecc53d5684754550e8f" + "reference": "e611a83292d02055a25f83291a98fadd0c21e092" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/6105bdab2f26c0204fe90ecc53d5684754550e8f", - "reference": "6105bdab2f26c0204fe90ecc53d5684754550e8f", + "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/e611a83292d02055a25f83291a98fadd0c21e092", + "reference": "e611a83292d02055a25f83291a98fadd0c21e092", "shasum": "" }, "require-dev": { @@ -2978,7 +3171,7 @@ "nikic/php-parser": "^4.13", "php": "^7.4 || ~8.0.0", "php-stubs/generator": "^0.8.3", - "phpdocumentor/reflection-docblock": "^5.3", + "phpdocumentor/reflection-docblock": "5.3", "phpstan/phpstan": "^1.10.49", "phpunit/phpunit": "^9.5", "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^0.11" @@ -3002,9 +3195,9 @@ ], "support": { "issues": "https://github.com/php-stubs/wordpress-stubs/issues", - "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.4.3" + "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.5.3" }, - "time": "2024-02-11T18:56:19+00:00" + "time": "2024-05-08T02:12:31+00:00" }, { "name": "php-webdriver/webdriver", @@ -3214,22 +3407,22 @@ }, { "name": "phpcsstandards/phpcsutils", - "version": "1.0.10", + "version": "1.0.12", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "51609a5b89f928e0c463d6df80eb38eff1eaf544" + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/51609a5b89f928e0c463d6df80eb38eff1eaf544", - "reference": "51609a5b89f928e0c463d6df80eb38eff1eaf544", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/87b233b00daf83fb70f40c9a28692be017ea7c6c", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.9.0 || 4.0.x-dev@dev" + "squizlabs/php_codesniffer": "^3.10.0 || 4.0.x-dev@dev" }, "require-dev": { "ext-filter": "*", @@ -3298,7 +3491,7 @@ "type": "open_collective" } ], - "time": "2024-03-17T23:44:50+00:00" + "time": "2024-05-20T13:34:27+00:00" }, { "name": "phpmd/phpmd", @@ -3460,16 +3653,16 @@ }, { "name": "phpstan/extension-installer", - "version": "1.3.1", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f6b87faf9fc7978eab2f7919a8760bc9f58f9203", + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203", "shasum": "" }, "require": { @@ -3498,22 +3691,22 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" + "source": "https://github.com/phpstan/extension-installer/tree/1.4.1" }, - "time": "2023-05-24T08:59:17+00:00" + "time": "2024-06-10T08:20:49+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.63", + "version": "1.11.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ad12836d9ca227301f5fb9960979574ed8628339" + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ad12836d9ca227301f5fb9960979574ed8628339", - "reference": "ad12836d9ca227301f5fb9960979574ed8628339", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/490f0ae1c92b082f154681d7849aee776a7c1443", + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443", "shasum": "" }, "require": { @@ -3556,13 +3749,9 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2024-03-18T16:53:53+00:00" + "time": "2024-06-17T15:10:54+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3885,16 +4074,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.17", + "version": "9.6.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd" + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd", - "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", "shasum": "" }, "require": { @@ -3968,7 +4157,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" }, "funding": [ { @@ -3984,7 +4173,7 @@ "type": "tidelift" } ], - "time": "2024-02-23T13:14:51+00:00" + "time": "2024-04-05T04:35:58+00:00" }, { "name": "psr/cache", @@ -4192,20 +4381,20 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -4229,7 +4418,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -4241,9 +4430,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -4350,16 +4539,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.2", + "version": "v0.12.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d" + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9185c66c2165bbf4d71de78a69dccf4974f9538d", - "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", "shasum": "" }, "require": { @@ -4423,9 +4612,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.2" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" }, - "time": "2024-03-17T01:53:00+00:00" + "time": "2024-06-10T01:18:23+00:00" }, { "name": "publishpress/publishpress-phpcs-standards", @@ -4518,6 +4707,536 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, { "name": "sebastian/cli-parser", "version": "1.0.2", @@ -5483,16 +6202,16 @@ }, { "name": "sirbrillig/phpcs-variable-analysis", - "version": "v2.11.17", + "version": "v2.11.18", "source": { "type": "git", "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", - "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049" + "reference": "ca242a0b7309e0f9d1f73b236e04ecf4ca3248d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/3b71162a6bf0cde2bff1752e40a1788d8273d049", - "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/ca242a0b7309e0f9d1f73b236e04ecf4ca3248d0", + "reference": "ca242a0b7309e0f9d1f73b236e04ecf4ca3248d0", "shasum": "" }, "require": { @@ -5537,7 +6256,7 @@ "source": "https://github.com/sirbrillig/phpcs-variable-analysis", "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" }, - "time": "2023-08-05T23:46:11+00:00" + "time": "2024-04-13T16:42:46+00:00" }, { "name": "softcreatr/jsonpath", @@ -5609,16 +6328,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.9.0", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b" + "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b", - "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", + "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", "shasum": "" }, "require": { @@ -5685,20 +6404,20 @@ "type": "open_collective" } ], - "time": "2024-02-16T15:06:51+00:00" + "time": "2024-05-22T21:24:41+00:00" }, { "name": "symfony/browser-kit", - "version": "v6.4.3", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "495ffa2e6d17e199213f93768efa01af32bbf70e" + "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/495ffa2e6d17e199213f93768efa01af32bbf70e", - "reference": "495ffa2e6d17e199213f93768efa01af32bbf70e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/62ab90b92066ef6cce5e79365625b4b1432464c8", + "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8", "shasum": "" }, "require": { @@ -5737,7 +6456,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.3" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.8" }, "funding": [ { @@ -5753,20 +6472,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/cache", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "0ef36534694c572ff526d91c7181f3edede176e7" + "reference": "287142df5579ce223c485b3872df3efae8390984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/0ef36534694c572ff526d91c7181f3edede176e7", - "reference": "0ef36534694c572ff526d91c7181f3edede176e7", + "url": "https://api.github.com/repos/symfony/cache/zipball/287142df5579ce223c485b3872df3efae8390984", + "reference": "287142df5579ce223c485b3872df3efae8390984", "shasum": "" }, "require": { @@ -5833,7 +6552,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.4" + "source": "https://github.com/symfony/cache/tree/v6.4.8" }, "funding": [ { @@ -5849,20 +6568,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { @@ -5872,7 +6591,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5909,7 +6628,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, "funding": [ { @@ -5925,20 +6644,20 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/config", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "6ea4affc27f2086c9d16b92ab5429ce1e3c38047" + "reference": "12e7e52515ce37191b193cf3365903c4f3951e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/6ea4affc27f2086c9d16b92ab5429ce1e3c38047", - "reference": "6ea4affc27f2086c9d16b92ab5429ce1e3c38047", + "url": "https://api.github.com/repos/symfony/config/zipball/12e7e52515ce37191b193cf3365903c4f3951e35", + "reference": "12e7e52515ce37191b193cf3365903c4f3951e35", "shasum": "" }, "require": { @@ -5984,7 +6703,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.4" + "source": "https://github.com/symfony/config/tree/v6.4.8" }, "funding": [ { @@ -6000,20 +6719,20 @@ "type": "tidelift" } ], - "time": "2024-02-26T07:52:26+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/console", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", - "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", "shasum": "" }, "require": { @@ -6078,7 +6797,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.4" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -6094,20 +6813,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.3", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229" + "reference": "4b61b02fe15db48e3687ce1c45ea385d1780fe08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ee0f7ed5cf298cc019431bb3b3977ebc52b86229", - "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4b61b02fe15db48e3687ce1c45ea385d1780fe08", + "reference": "4b61b02fe15db48e3687ce1c45ea385d1780fe08", "shasum": "" }, "require": { @@ -6143,7 +6862,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.3" + "source": "https://github.com/symfony/css-selector/tree/v6.4.8" }, "funding": [ { @@ -6159,20 +6878,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "6236e5e843cb763e9d0f74245678b994afea5363" + "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6236e5e843cb763e9d0f74245678b994afea5363", - "reference": "6236e5e843cb763e9d0f74245678b994afea5363", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d3b618176e8c3a9e5772151c51eba0c52a0c771c", + "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c", "shasum": "" }, "require": { @@ -6224,7 +6943,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.4" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.8" }, "funding": [ { @@ -6240,20 +6959,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { @@ -6262,7 +6981,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6291,7 +7010,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -6307,20 +7026,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "f0e7ec3fa17000e2d0cb4557b4b47c88a6a63531" + "reference": "105b56a0305d219349edeb60a800082eca864e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/f0e7ec3fa17000e2d0cb4557b4b47c88a6a63531", - "reference": "f0e7ec3fa17000e2d0cb4557b4b47c88a6a63531", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/105b56a0305d219349edeb60a800082eca864e4b", + "reference": "105b56a0305d219349edeb60a800082eca864e4b", "shasum": "" }, "require": { @@ -6358,7 +7077,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.4" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.8" }, "funding": [ { @@ -6374,20 +7093,20 @@ "type": "tidelift" } ], - "time": "2024-02-07T09:17:57+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.3", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", - "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", "shasum": "" }, "require": { @@ -6438,7 +7157,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" }, "funding": [ { @@ -6454,20 +7173,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { @@ -6477,7 +7196,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6514,7 +7233,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -6530,20 +7249,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.3", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", - "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3", + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3", "shasum": "" }, "require": { @@ -6551,6 +7270,9 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" + }, "type": "library", "autoload": { "psr-4": { @@ -6577,7 +7299,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.3" + "source": "https://github.com/symfony/filesystem/tree/v6.4.8" }, "funding": [ { @@ -6593,20 +7315,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/finder", - "version": "v6.4.0", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", "shasum": "" }, "require": { @@ -6641,7 +7363,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" + "source": "https://github.com/symfony/finder/tree/v6.4.8" }, "funding": [ { @@ -6657,20 +7379,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:30:12+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.4.0", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "22301f0e7fdeaacc14318928612dee79be99860e" + "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e", - "reference": "22301f0e7fdeaacc14318928612dee79be99860e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22ab9e9101ab18de37839074f8a1197f55590c1b", + "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b", "shasum": "" }, "require": { @@ -6708,7 +7430,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.8" }, "funding": [ { @@ -6724,7 +7446,7 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:16:24+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7278,16 +8000,16 @@ }, { "name": "symfony/process", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "710e27879e9be3395de2b98da3f52a946039f297" + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", - "reference": "710e27879e9be3395de2b98da3f52a946039f297", + "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", "shasum": "" }, "require": { @@ -7319,7 +8041,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.4" + "source": "https://github.com/symfony/process/tree/v6.4.8" }, "funding": [ { @@ -7335,25 +8057,26 @@ "type": "tidelift" } ], - "time": "2024-02-20T12:31:00+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -7361,7 +8084,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -7401,7 +8124,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -7417,20 +8140,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.3", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1" + "reference": "63e069eb616049632cde9674c46957819454b8aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1", - "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/63e069eb616049632cde9674c46957819454b8aa", + "reference": "63e069eb616049632cde9674c46957819454b8aa", "shasum": "" }, "require": { @@ -7463,7 +8186,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.3" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.8" }, "funding": [ { @@ -7479,20 +8202,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:35:58+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/string", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", - "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", "shasum": "" }, "require": { @@ -7549,7 +8272,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.4" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -7565,20 +8288,20 @@ "type": "tidelift" } ], - "time": "2024-02-01T13:16:41+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/translation", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", - "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", + "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a", + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a", "shasum": "" }, "require": { @@ -7644,7 +8367,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.4" + "source": "https://github.com/symfony/translation/tree/v6.4.8" }, "funding": [ { @@ -7660,20 +8383,20 @@ "type": "tidelift" } ], - "time": "2024-02-20T13:16:58+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { @@ -7682,7 +8405,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -7722,7 +8445,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -7738,20 +8461,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b439823f04c98b84d4366c79507e9da6230944b1" + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", - "reference": "b439823f04c98b84d4366c79507e9da6230944b1", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", "shasum": "" }, "require": { @@ -7807,7 +8530,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" }, "funding": [ { @@ -7823,20 +8546,20 @@ "type": "tidelift" } ], - "time": "2024-02-15T11:23:52+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b" + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0bd342e24aef49fc82a21bd4eedd3e665d177e5b", - "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/792ca836f99b340f2e9ca9497c7953948c49a504", + "reference": "792ca836f99b340f2e9ca9497c7953948c49a504", "shasum": "" }, "require": { @@ -7844,6 +8567,8 @@ "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", @@ -7882,7 +8607,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.4" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.8" }, "funding": [ { @@ -7898,20 +8623,20 @@ "type": "tidelift" } ], - "time": "2024-02-26T08:37:45+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.3", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d75715985f0f94f978e3a8fa42533e10db921b90" + "reference": "52903de178d542850f6f341ba92995d3d63e60c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90", - "reference": "d75715985f0f94f978e3a8fa42533e10db921b90", + "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9", + "reference": "52903de178d542850f6f341ba92995d3d63e60c9", "shasum": "" }, "require": { @@ -7954,7 +8679,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.3" + "source": "https://github.com/symfony/yaml/tree/v6.4.8" }, "funding": [ { @@ -7970,20 +8695,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "szepeviktor/phpstan-wordpress", - "version": "v1.3.3", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/szepeviktor/phpstan-wordpress.git", - "reference": "f7ff091331bc00c5688fe4ce0c4d51d06fa61553" + "reference": "891d0767855a32c886a439efae090408cc1fa156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/f7ff091331bc00c5688fe4ce0c4d51d06fa61553", - "reference": "f7ff091331bc00c5688fe4ce0c4d51d06fa61553", + "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/891d0767855a32c886a439efae090408cc1fa156", + "reference": "891d0767855a32c886a439efae090408cc1fa156", "shasum": "" }, "require": { @@ -8030,9 +8755,9 @@ ], "support": { "issues": "https://github.com/szepeviktor/phpstan-wordpress/issues", - "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v1.3.3" + "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v1.3.4" }, - "time": "2024-02-26T13:55:50+00:00" + "time": "2024-03-21T16:32:59+00:00" }, { "name": "theseer/tokenizer", @@ -8423,16 +9148,16 @@ }, { "name": "wp-coding-standards/wpcs", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", - "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1" + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/b4caf9689f1a0e4a4c632679a44e638c1c67aff1", - "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7", "shasum": "" }, "require": { @@ -8441,16 +9166,16 @@ "ext-tokenizer": "*", "ext-xmlreader": "*", "php": ">=5.4", - "phpcsstandards/phpcsextra": "^1.1.0", - "phpcsstandards/phpcsutils": "^1.0.8", - "squizlabs/php_codesniffer": "^3.7.2" + "phpcsstandards/phpcsextra": "^1.2.1", + "phpcsstandards/phpcsutils": "^1.0.10", + "squizlabs/php_codesniffer": "^3.9.0" }, "require-dev": { "php-parallel-lint/php-console-highlighter": "^1.0.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcompatibility/php-compatibility": "^9.0", "phpcsstandards/phpcsdevtools": "^1.2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "suggest": { "ext-iconv": "For improved results", @@ -8481,11 +9206,11 @@ }, "funding": [ { - "url": "https://opencollective.com/thewpcc/contribute/wp-php-63406", + "url": "https://opencollective.com/php_codesniffer", "type": "custom" } ], - "time": "2023-09-14T07:06:09+00:00" + "time": "2024-03-25T16:39:00+00:00" } ], "aliases": [], diff --git a/languages/post-expirator-es_ES.mo b/languages/post-expirator-es_ES.mo index ae66a1132..4ae4f4ce2 100644 Binary files a/languages/post-expirator-es_ES.mo and b/languages/post-expirator-es_ES.mo differ diff --git a/languages/post-expirator-es_ES.po b/languages/post-expirator-es_ES.po index c8d7ad506..dcdda8192 100644 --- a/languages/post-expirator-es_ES.po +++ b/languages/post-expirator-es_ES.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Plugins - PublishPress Future: Automatically Unpublish " "WordPress Posts - Stable (latest release)\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n" -"POT-Creation-Date: 2024-02-28T18:49:44+00:00\n" -"PO-Revision-Date: 2024-02-29 20:35+0100\n" +"POT-Creation-Date: 2024-06-19T17:27:41+00:00\n" +"PO-Revision-Date: 2024-06-20 06:15+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -14,17 +14,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.4.4\n" #. Plugin Name of the plugin #: post-expirator.php -#: src/Modules/Expirator/Controllers/BlockEditorController.php:114 -#: src/Modules/Expirator/Controllers/BulkEditController.php:152 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:145 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:330 -#: src/Modules/Expirator/Controllers/QuickEditController.php:210 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:115 +#: src/Modules/Expirator/Controllers/BulkEditController.php:159 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:146 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:363 +#: src/Modules/Expirator/Controllers/QuickEditController.php:239 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:84 -#: src/Views/tabs.php:59 msgid "PublishPress Future" msgstr "PublishPress Future" @@ -52,23 +51,27 @@ msgstr "PublishPress" msgid "http://publishpress.com" msgstr "https://publishpress.com" -#: legacy/classes/Display.class.php:93 +#: legacy/classes/Display.class.php:94 msgid "You do not have permission to configure PublishPress Future." msgstr "No tienes permisos para configurar PublishPress Future." -#: legacy/classes/Display.class.php:183 -msgid "Debugging Disabled" +#: legacy/classes/Display.class.php:108 +msgid "Debug is disabled" msgstr "Depuración desactivada" #: legacy/classes/Display.class.php:188 +msgid "Debugging Disabled" +msgstr "Depuración desactivada" + +#: legacy/classes/Display.class.php:193 msgid "Debugging Enabled" msgstr "Depuración activada" -#: legacy/classes/Display.class.php:196 +#: legacy/classes/Display.class.php:201 msgid "Debugging Table Emptied" msgstr "Tabla de depuración vaciada" -#: legacy/classes/Display.class.php:202 +#: legacy/classes/Display.class.php:207 msgid "" "The legacy future actions migration has been enqueued and will run " "asynchronously." @@ -76,7 +79,7 @@ msgstr "" "La migración de acciones Future heredadas se ha puesto en cola y se " "ejecutará de forma asíncrona." -#: legacy/classes/Display.class.php:211 +#: legacy/classes/Display.class.php:216 msgid "" "The legacy actions arguments restoration has been enqueued and will run " "asynchronously." @@ -84,46 +87,47 @@ msgstr "" "La restauración de los argumentos de las acciones heredadas se ha puesto en " "cola y se ejecutará de forma asíncrona." -#: legacy/classes/Display.class.php:221 +#: legacy/classes/Display.class.php:226 msgid "The database schema was fixed." msgstr "Se ha corregido el esquema de la base de datos." -#: legacy/classes/Display.class.php:226 +#: legacy/classes/Display.class.php:231 msgid "" "The database schema could not be fixed. Please, contact the support team." msgstr "" "No se ha podido corregir el esquema de la base de datos. Por favor, contacta " "con el equipo de soporte." -#: legacy/classes/Display.class.php:317 legacy/classes/Display.class.php:375 +#: legacy/classes/Display.class.php:322 legacy/classes/Display.class.php:380 msgid "Saved Options!" msgstr "¡Opciones guardadas!" -#: legacy/classes/Display.class.php:460 -msgid "If you like %s, please leave us a %s rating. Thank you!" -msgstr "Si te gusta %s, por favor déjanos una valoración de %s. ¡Gracias!" +#. translators: %1$s is the plugin name, %2$s is the star rating markup +#: legacy/classes/Display.class.php:466 +msgid "If you like %1$s, please leave us a %2$s rating. Thank you!" +msgstr "Si te gusta %1$s, por favor, déjanos una valoración de %2$s. ¡Gracias!" -#: legacy/classes/Display.class.php:475 +#: legacy/classes/Display.class.php:481 msgid "About PublishPress Future" msgstr "Acerca de PublishPress Future" -#: legacy/classes/Display.class.php:477 +#: legacy/classes/Display.class.php:483 msgid "About" msgstr "Acerca de" -#: legacy/classes/Display.class.php:483 +#: legacy/classes/Display.class.php:489 msgid "Future Documentation" msgstr "Documentación de Future" -#: legacy/classes/Display.class.php:485 +#: legacy/classes/Display.class.php:491 msgid "Documentation" msgstr "Documentación" -#: legacy/classes/Display.class.php:491 +#: legacy/classes/Display.class.php:497 msgid "Contact the PublishPress team" msgstr "Contacta con el equipo de PublishPress" -#: legacy/classes/Display.class.php:493 +#: legacy/classes/Display.class.php:499 msgid "Contact" msgstr "Contacto" @@ -131,84 +135,154 @@ msgstr "Contacto" msgid "No taxonomies found" msgstr "No se han encontrado taxonomías" -#: services.php:68 src/Modules/Settings/SettingsFacade.php:90 +#: services.php:70 src/Modules/Settings/SettingsFacade.php:92 msgid "l F jS, Y" msgstr "l, j F Y" -#: services.php:69 src/Modules/Settings/SettingsFacade.php:91 +#: services.php:74 src/Modules/Settings/SettingsFacade.php:93 msgid "g:ia" msgstr "g:ia" -#: services.php:70 src/Modules/Settings/SettingsFacade.php:92 +#: services.php:75 src/Modules/Settings/SettingsFacade.php:94 msgid "Post expires at EXPIRATIONTIME on ACTIONDATE" msgstr "La entrada caduca en EXPIRATIONTIME el ACTIONDATE" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:113 -#: src/Modules/Expirator/Controllers/BulkEditController.php:151 -#: src/Modules/Expirator/Controllers/QuickEditController.php:209 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:114 +#: src/Modules/Expirator/Controllers/BulkEditController.php:158 +#: src/Modules/Expirator/Controllers/QuickEditController.php:238 msgid "Categories" msgstr "Categorìas" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:115 -#: src/Modules/Expirator/Controllers/BulkEditController.php:153 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:331 -#: src/Modules/Expirator/Controllers/QuickEditController.php:211 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:116 +#: src/Modules/Expirator/Controllers/BulkEditController.php:160 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:364 +#: src/Modules/Expirator/Controllers/QuickEditController.php:240 msgid "Enable Future Action" msgstr "Activar caducidad de la entrada" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:116 -#: src/Modules/Expirator/Controllers/BulkEditController.php:154 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:332 -#: src/Modules/Expirator/Controllers/QuickEditController.php:212 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:117 +#: src/Modules/Expirator/Controllers/BulkEditController.php:161 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:365 +#: src/Modules/Expirator/Controllers/QuickEditController.php:241 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:46 msgid "Action" msgstr "Acción" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:117 -#: src/Modules/Expirator/Controllers/BulkEditController.php:157 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:335 -#: src/Modules/Expirator/Controllers/QuickEditController.php:215 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:118 +#: src/Modules/Expirator/Controllers/BulkEditController.php:164 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:368 +#: src/Modules/Expirator/Controllers/QuickEditController.php:244 msgid "Loading" msgstr "Cargando" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:118 -#: src/Modules/Expirator/Controllers/BulkEditController.php:155 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:333 -#: src/Modules/Expirator/Controllers/QuickEditController.php:213 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:119 +#: src/Modules/Expirator/Controllers/BulkEditController.php:162 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:366 +#: src/Modules/Expirator/Controllers/QuickEditController.php:242 msgid "Show Calendar" msgstr "Muestra el calendario" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:119 -#: src/Modules/Expirator/Controllers/BulkEditController.php:156 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:334 -#: src/Modules/Expirator/Controllers/QuickEditController.php:214 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:120 +#: src/Modules/Expirator/Controllers/BulkEditController.php:163 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:367 +#: src/Modules/Expirator/Controllers/QuickEditController.php:243 msgid "Hide Calendar" msgstr "Oculta el calendario" #. translators: the text between {} is the link to the settings page. #. translators: the text between {{}} is the link to the settings page. -#: src/Modules/Expirator/Controllers/BlockEditorController.php:121 -#: src/Modules/Expirator/Controllers/BulkEditController.php:159 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:337 -#: src/Modules/Expirator/Controllers/QuickEditController.php:217 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:122 +#: src/Modules/Expirator/Controllers/BulkEditController.php:166 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:370 +#: src/Modules/Expirator/Controllers/QuickEditController.php:246 msgid "Timezone is controlled by the {WordPress Settings}." msgstr "La zona horaria se controla mediante los {Ajustes de WordPress}." -#: src/Modules/Expirator/Controllers/BlockEditorController.php:124 -#: src/Modules/Expirator/Controllers/BulkEditController.php:162 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:340 -#: src/Modules/Expirator/Controllers/QuickEditController.php:220 +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:126 +#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:374 +#: src/Modules/Expirator/Controllers/QuickEditController.php:250 msgid "No %s found." msgstr "No se ha encontrado %s." -#: src/Modules/Expirator/Controllers/BlockEditorController.php:127 -#: src/Modules/Expirator/Controllers/BulkEditController.php:166 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:343 -#: src/Modules/Expirator/Controllers/QuickEditController.php:223 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:129 +#: src/Modules/Expirator/Controllers/BulkEditController.php:174 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:377 +#: src/Modules/Expirator/Controllers/QuickEditController.php:253 msgid "You must assign a taxonomy to this post type to use this feature." msgstr "" "Debe asignar una taxonomía a este tipo de entrada para utilizar esta función." +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:131 +#: src/Modules/Expirator/Controllers/BulkEditController.php:181 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:379 +#: src/Modules/Expirator/Controllers/QuickEditController.php:255 +msgid "New %s" +msgstr "Nuevo %s" + +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:133 +#: src/Modules/Expirator/Controllers/BulkEditController.php:183 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:381 +#: src/Modules/Expirator/Controllers/QuickEditController.php:257 +msgid "%s to remove" +msgstr "%s a eliminar" + +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:135 +#: src/Modules/Expirator/Controllers/BulkEditController.php:185 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:383 +#: src/Modules/Expirator/Controllers/QuickEditController.php:259 +msgid "%s to add" +msgstr "%s a añadir" + +#. translators: %s is the name of the taxonomy in singular form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:137 +#: src/Modules/Expirator/Controllers/BulkEditController.php:187 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:385 +#: src/Modules/Expirator/Controllers/QuickEditController.php:261 +msgid "Search for %s" +msgstr "Búsqueda por %s" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:138 +#: src/Modules/Expirator/Controllers/BulkEditController.php:188 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:386 +#: src/Modules/Expirator/Controllers/QuickEditController.php:262 +msgid "Select an action" +msgstr "Selecciona una acción" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:139 +#: src/Modules/Expirator/Controllers/BulkEditController.php:189 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:387 +#: src/Modules/Expirator/Controllers/QuickEditController.php:263 +msgid "Select a date" +msgstr "Selecciona una fecha" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:140 +#: src/Modules/Expirator/Controllers/BulkEditController.php:190 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:388 +#: src/Modules/Expirator/Controllers/QuickEditController.php:264 +msgid "Date cannot be in the past" +msgstr "La fecha no puede estar en el pasado" + +#. translators: %s is the name of the taxonomy in singular form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:143 +#: src/Modules/Expirator/Controllers/BulkEditController.php:193 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:391 +#: src/Modules/Expirator/Controllers/QuickEditController.php:267 +#: src/Modules/Settings/Controllers/Controller.php:243 +msgid "Please select one or more %s" +msgstr "Por favor, selecciona uno o más %s" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:146 +#: src/Modules/Expirator/Controllers/BulkEditController.php:196 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:394 +#: src/Modules/Expirator/Controllers/QuickEditController.php:270 +msgid "New status" +msgstr "Nuevo estado" + #: src/Modules/Expirator/Controllers/BulkActionController.php:82 msgid "No posts selected. Unable to sync Future Actions." msgstr "" @@ -226,36 +300,35 @@ msgid "Update Future Actions from Post Metadata" msgstr "" "Actualiza las acciones de Future a partir de los metadatos de la entrada" -#: src/Modules/Expirator/Controllers/BulkEditController.php:165 +#: src/Modules/Expirator/Controllers/BulkEditController.php:173 msgid "Future Action Update" msgstr "Actualizaciòn de las acciones de Future" -#: src/Modules/Expirator/Controllers/BulkEditController.php:167 +#: src/Modules/Expirator/Controllers/BulkEditController.php:175 msgid "— No Change —" msgstr "— Sin cambios —" -#: src/Modules/Expirator/Controllers/BulkEditController.php:168 +#: src/Modules/Expirator/Controllers/BulkEditController.php:176 msgid "Add or update action for posts" msgstr "Añade o actualiza la acción para las entradas" -#: src/Modules/Expirator/Controllers/BulkEditController.php:169 +#: src/Modules/Expirator/Controllers/BulkEditController.php:177 msgid "Add action if none exists for posts" msgstr "Añade una acción si no hay ninguna para las entradas" -#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/BulkEditController.php:178 msgid "Update the existing actions for posts" msgstr "Actualiza las acciones existentes para las entradas" -#: src/Modules/Expirator/Controllers/BulkEditController.php:171 +#: src/Modules/Expirator/Controllers/BulkEditController.php:179 msgid "Remove action from posts" msgstr "Quitar acción de las entradas" -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:329 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:362 msgid "Category" msgstr "Categorìa" -#: src/Modules/Expirator/Controllers/PluginsListController.php:39 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:107 +#: src/Modules/Expirator/Controllers/PluginsListController.php:45 msgid "Settings" msgstr "Ajustes" @@ -263,161 +336,195 @@ msgstr "Ajustes" msgid "Future Action" msgstr "Acción Future" +#: src/Modules/Expirator/Controllers/RestAPIController.php:196 +#: src/Modules/Expirator/Controllers/RestAPIController.php:202 +msgid "Invalid date time offset." +msgstr "Desplazamiento de fecha y hora no válido." + #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:85 msgid "Future" msgstr "Future" +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:94 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:95 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:96 +#: src/Views/tabs.php:59 +msgid "Action Settings" +msgstr "Ajustes de las acciones" + +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:103 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:104 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:43 -msgid "Future Actions" -msgstr "Acciones Future" +msgid "Scheduled Actions" +msgstr "Acción programada" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:174 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:172 msgid "Log format" msgstr "Formato del registro" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:181 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:179 msgid "List" msgstr "Lista" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:190 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:188 msgid "Popup" msgstr "Ventana emergente" -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:46 +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:54 +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:52 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:52 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:52 +msgid "Status didn't change." +msgstr "El estado no ha cambiado." + +#. translators: 1: old post status, 2: new post status +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:62 +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:60 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:60 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:60 +msgid "Status has been successfully changed from \"%1$s\" to \"%2$s\"." +msgstr "El estado se ha cambiado correctamente de «%1$s» a «%2$s»." + +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:89 +msgid "Change status" +msgstr "Cambiar estado" + +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:47 msgid "%s was not deleted." msgstr "%s no ha sido borrado." -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:52 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:54 msgid "%s has been successfully deleted." msgstr "%s ha sido borrado correctamente." -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:74 +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:76 msgid "Delete" msgstr "Borrar" -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:63 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:64 msgid "No terms were added to the %s." msgstr "No se han añadido términos a la %s." -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:73 +#. translators: %1$s is the taxonomy label, %2$s is the post type singular label, %3$s is the list of terms added, %4$s is the list of terms on the post +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:75 msgid "" -"The following terms (%s) were added to the %s: \"%s\". The full list of " -"terms on the post is: %s." +"The following terms (%1$s) were added to the %2$s: \"%3$s\". The full list " +"of terms on the post is: %4$s." msgstr "" -"Los siguientes términos (%s) fueron añadidos a la %s: «%s». La lista " -"completa de términos en la entrada es: %s." +"Los siguientes términos (%1$s) fueron añadidos a la %2$s: «%3$s». La lista " +"completa de términos en la entrada es: %4$s." -#. translators: %s is the taxonomy label (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:119 +#. translators: %s is the taxonomy name (plural) +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:118 msgid "Add extra %s" msgstr "Añadir extra %s" -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:55 -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:55 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:56 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:56 msgid "No terms were removed from the %s." msgstr "No se han eliminado términos de la %s." -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:65 +#. translators: %1$s is the taxonomy name, %2$s is the post type singular label, %3$s is the removed terms list, %4$s is the updated terms list +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:67 msgid "" -"The following terms (%s) were removed from the %s: %s. The new list of terms " -"on the post is: %s." +"The following terms (%1$s) were removed from the %2$s: %3$s. The new list of " +"terms on the post is: %4$s." msgstr "" -"Los siguientes términos (%s) fueron eliminados de la %s: «%s». La nueva " -"lista de términos en la entrada es: %s." +"Los siguientes términos (%1$s) fueron eliminados de la %2$s: «%3$s». La " +"nueva lista de términos en la entrada es: %4$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:113 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:112 msgid "Remove selected %s" msgstr "Eliminar %s seleccionados" -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:65 -msgid "The following terms (%s) were removed from the %s: %s." -msgstr "Los siguientes términos (%s) fueron eliminados de la %s: %s." +#. translators: %1$s is the taxonomy name, %2$s is the post type singular label, %3$s is the list of term names +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:67 +msgid "The following terms (%1$s) were removed from the %2$s: %3$s." +msgstr "Los siguientes términos (%1$s) fueron eliminados de la %2$s: «%3$s»." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:107 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:106 msgid "Remove all %s" msgstr "Eliminar todo %s" -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:57 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:58 msgid "No terms were changed on the %s." msgstr "No se han modificado los términos en la %s." -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:67 +#. translators: 1: taxonomy name, 2: post type singular label, 3: updated terms, 4: original terms +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:69 msgid "" -"The following terms (%s) were set to the %s: \"%s\". The old list of terms " -"on the post was: %s." +"The following terms (%1$s) were set to the %2$s: \"%3$s\". The old list of " +"terms on the post was: %4$s." msgstr "" -"Los siguientes términos (%s) se establecieron en la %s: «%s». La antigua " -"lista de términos de la entrada era: %s." +"Los siguientes términos (%1$s) se establecieron en la %2$s: «%3$s». La " +"antigua lista de términos de la entrada era: %4$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:110 +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:109 msgid "Replace all %s" msgstr "Sustituir todo %s" -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:49 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:49 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:49 -msgid "Status didn't change." -msgstr "El estado no ha cambiado." - -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:56 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:56 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:56 -msgid "Status has been successfully changed from \"%s\" to \"%s\"." -msgstr "El estado se ha cambiado correctamente de «%s» a «%s»." - -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:85 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:85 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:85 +#. translators: %s: new post status +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:90 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:90 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:90 msgid "Change status to %s" msgstr "Cambia el estado a %s" -#: src/Modules/Expirator/ExpirationActions/StickPost.php:45 -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:45 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/StickPost.php:46 +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:46 msgid "%s didn't change." msgstr "%s no ha cambiado." -#: src/Modules/Expirator/ExpirationActions/StickPost.php:51 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/StickPost.php:53 msgid "%s has been added to stickies list." msgstr "%s ha sido añadido a la lista de fijos." -#: src/Modules/Expirator/ExpirationActions/StickPost.php:73 +#: src/Modules/Expirator/ExpirationActions/StickPost.php:75 msgid "Stick" msgstr "Fijar" -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:51 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:53 msgid "%s has been removed from stickies list." msgstr "%s ha sido quitado de la lista de fijos." -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:73 +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:75 msgid "Unstick" msgstr "No fijar" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:410 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:463 msgid "Email is disabled" msgstr "Correo electrónico desactivado" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:414 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:467 msgid "Email sent" msgstr "Correo electrónico enviado" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:414 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:467 msgid "Email not sent" msgstr "Correo electrónico no enviado" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:560 -msgid "%s. %s on %s. The post link is %s" -msgstr "%s. %s en %s. El enlace de la entrada es %s" +#. translators: %1$s: post title placeholder, %2$s: notification text, %3$s: action date placeholder, %4$s: post link placeholder +#: src/Modules/Expirator/Models/ExpirablePostModel.php:617 +msgid "%1$s. %2$s on %3$s. The post link is %4$s" +msgstr "%1$s. %2$s el día %3$s. El enlace de la entrada es %4$s" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:577 +#. translators: %s is the post title +#: src/Modules/Expirator/Models/ExpirablePostModel.php:635 msgid "Future Action Complete \"%s\"" msgstr "Caducidad de la entrada completada «%s»" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:580 +#. translators: 1: is the blog name, 2: the email subject +#: src/Modules/Expirator/Models/ExpirablePostModel.php:639 msgid "[%1$s] %2$s" msgstr "[%1$s] %2$s" @@ -516,8 +623,9 @@ msgid "Uninitialized" msgstr "Sin inicializar" #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:274 -msgid "Pending" -msgstr "Pendiente" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:340 +msgid "Scheduled" +msgstr "Programado" #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:275 msgid "Complete" @@ -543,77 +651,87 @@ msgstr "Todos" msgid "Search hook, args and claim ID" msgstr "Buscar gancho, argumentos e ID de reclamación" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:340 -msgid "Scheduled" -msgstr "Programado" - #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:344 msgid "Completed" msgstr "Completado" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:446 -msgid "%s: [%d] %s%s%s" -msgstr "%s: [%d] %s%s%s" +#. translators: %1$s: post type label, %2$d: post ID, %3$s: post link tag start, %4$s: post title, %5$s: post link tag end +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:449 +msgid "%1$s: [%2$d] %3$s%4$s%5$s" +msgstr "%1$s: [%2$d] %3$s%4$s%5$s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:468 +#. translators: %s is the new status +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:484 +msgid "New Status: %s" +msgstr "Nuevo estado: %s" + +#. translators: %s is the list of terms +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:492 msgid "Terms: %s" msgstr "Términos: %s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:568 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:595 msgid "View log" msgstr "Ver registro" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:579 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:606 msgid "Action: " msgstr "Acción: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:585 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 msgid "Status: " msgstr "Estado: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:591 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:618 msgid "Arguments: " msgstr "Argumentos: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:597 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:624 msgid "Scheduled date: " msgstr "Fecha programada: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:611 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:638 #: src/Views/menu-diagnostics.php:190 msgid "Date" msgstr "Fecha" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:639 #: src/Views/menu-debug-log.php:37 msgid "Message" msgstr "Mensaje" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:646 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:673 msgid "Async" msgstr "Asíncrona" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:662 +#. translators: %s is the date interval in human readable format in the past +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:690 msgid " (%s ago)" msgstr " (hace %s)" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:668 +#. translators: %s is the date interval in human readable format in the present or future +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:696 msgid " (%s)" msgstr " (%s)" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:692 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:720 msgid "Now!" msgstr "¡Ahora!" #. translators: %s: time interval -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:739 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:769 msgid "Every %s" msgstr "Cada %s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:745 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:775 msgid "Non-repeating" msgstr "No-repetir" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:784 +#| msgid "Future Actions" +msgid "No Future Actions." +msgstr "Ninguna acción Future" + #: src/Modules/Settings/Controllers/Controller.php:202 msgid "Default Values" msgstr "Valores por defecto" @@ -671,7 +789,7 @@ msgstr "" "taxonomía no estarán disponibles." #: src/Modules/Settings/Controllers/Controller.php:222 -#: src/Views/menu-general.php:161 +#: src/Views/menu-general.php:157 msgid "Who to Notify" msgstr "A quién avisar" @@ -688,50 +806,60 @@ msgstr "" msgid "Default Date/Time Offset" msgstr "Duración por defecto de fecha/hora" +#. translators: %1$s is the link to the PHP strtotime function documentation, %2$s and %3$s are the opening and closing code tags. Please, do not translate the date format text, since PHP will not be able to calculate using non-english terms. #: src/Modules/Settings/Controllers/Controller.php:230 msgid "" "Set the offset to use for the default action date and time. For information " "on formatting, see %1$s\n" -" . For example, you could enter %2$s+1 " -"month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Please, use only terms in English." +" . For example, you could enter %2$s+1 " +"month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Please, use only terms in English." msgstr "" "Establece el desplazamiento que se utilizará para la fecha y hora de la " "acción por defecto. Para obtener información sobre el formato, consulta " "%1$s\n" " . Por ejemplo, puedes introducir %2$s+1 " -"month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Por favor, introduce solo términos en inglés." +"month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Por favor, introduce solo términos en inglés." #: src/Modules/Settings/Controllers/Controller.php:235 #: src/Views/menu-general.php:81 msgid "PHP strtotime function" msgstr "Función strtotime de PHP" -#: src/Modules/Settings/Controllers/Controller.php:246 +#: src/Modules/Settings/Controllers/Controller.php:239 msgid "Default terms:" msgstr "Términos por defecto:" -#: src/Modules/Settings/Controllers/Controller.php:247 +#: src/Modules/Settings/Controllers/Controller.php:240 msgid "Save changes" msgstr "Guardar los cambios" -#: src/Modules/Settings/Controllers/Controller.php:346 +#: src/Modules/Settings/Controllers/Controller.php:241 +msgid "Wait for the validation..." +msgstr "Espera la validación…" + +#: src/Modules/Settings/Controllers/Controller.php:244 +msgid "Date Preview" +msgstr "Vista previa de la fecha" + +#: src/Modules/Settings/Controllers/Controller.php:344 msgid "Form Validation Failure: Sorry, your nonce did not verify." msgstr "" "Fallo de validación del formulario: Lo sentimos, tu nonce no ha podido " "verificarse." -#: src/Modules/VersionNotices/Module.php:94 +#. translators: %1$s and %2$s are placeholders for the link to by the Pro version +#: src/Modules/VersionNotices/Module.php:95 msgid "" "You're using PublishPress Future Free. The Pro version has more features and " -"support. %sUpgrade to Pro%s" +"support. %1$sUpgrade to Pro%2$s" msgstr "" "Estás usando PublishPress Future Free. La versión Pro tiene más " -"características y soporte. %sActualizar a Pro%s" +"características y soporte. %1$sActualizar a Pro%2$s" -#: src/Modules/VersionNotices/Module.php:120 -#: src/Views/ad-banner-right-sidebar.php:33 +#: src/Modules/VersionNotices/Module.php:121 +#: src/Views/ad-banner-right-sidebar.php:35 msgid "Upgrade to Pro" msgstr "Actualizar a Pro" @@ -744,51 +872,56 @@ msgid "Enhance the power of PublishPress Future with the Pro version:" msgstr "Mejora la potencia de PublishPress Future con la versión Pro:" #: src/Views/ad-banner-right-sidebar.php:23 -msgid "Set the action date based on the post's publishing date" +msgid "Design custom workflows with multiple actions" +msgstr "Diseña flujo de trabajo con acciones múltiples" + +#: src/Views/ad-banner-right-sidebar.php:25 +msgid "Schedule actions based on the post's publishing date" msgstr "" -"Establece la fecha de la acción en función de la fecha de publicación de la " +"Programa la fecha de la acción en función de la fecha de publicación de la " "entrada" -#: src/Views/ad-banner-right-sidebar.php:25 +#: src/Views/ad-banner-right-sidebar.php:27 msgid "Move posts to custom statuses" msgstr "Mover entradas a estados personalizados" -#: src/Views/ad-banner-right-sidebar.php:27 +#: src/Views/ad-banner-right-sidebar.php:29 msgid "Use other plugins to control Future Actions" msgstr "Usa otros plugins para controlar las acciones de \"Future\"" -#: src/Views/ad-banner-right-sidebar.php:29 -msgid "Fast, professional support" -msgstr "Soporte rápido y profesional" +#: src/Views/ad-banner-right-sidebar.php:31 +msgid "Enjoy fast and professional support" +msgstr "Disfruta de una asistencia rápida y profesional" -#: src/Views/ad-banner-right-sidebar.php:41 +#: src/Views/ad-banner-right-sidebar.php:43 msgid "Need PublishPress Future Support?" msgstr "¿Necesitas soporte para PublishPress Future?" -#: src/Views/ad-banner-right-sidebar.php:47 +#: src/Views/ad-banner-right-sidebar.php:49 msgid "If you need help or have a new feature request, let us know." msgstr "" "Si necesitas ayuda o tienes una petición de nueva característica, háznoslo " "saber." -#: src/Views/ad-banner-right-sidebar.php:53 +#: src/Views/ad-banner-right-sidebar.php:55 msgid "Request Support" msgstr "Solicitar soporte" -#: src/Views/ad-banner-right-sidebar.php:64 +#: src/Views/ad-banner-right-sidebar.php:66 msgid "Detailed documentation is also available on the plugin website." msgstr "" "También hay disponible una documentación detallada en la web del plugin." -#: src/Views/ad-banner-right-sidebar.php:71 +#: src/Views/ad-banner-right-sidebar.php:73 msgid "View Knowledge Base" msgstr "Ver la base de conocimiento" -#: src/Views/expire-column.php:53 +#. translators: %1$s opens a span tag, %2$s is the action name, %3$s ends a span tag, %4$s is the a span tag, %5$s is the a span tag, %6$s is the a span tag +#: src/Views/expire-column.php:55 msgid "%1$s%2$s%3$s on %5$s%4$s%6$s" msgstr "%1$s%2$s%3$s el %5$s%4$s%6$s" -#: src/Views/expire-column.php:80 +#: src/Views/expire-column.php:92 msgid "" "Action was not scheduled due to a configuration issue. Please attempt to " "schedule it again." @@ -796,7 +929,7 @@ msgstr "" "No se ha podido programar la acción debido a un problema de configuración. " "Intenta programarla de nuevo." -#: src/Views/expire-column.php:85 +#: src/Views/expire-column.php:97 msgid "No future action" msgstr "Ninguna acción Future" @@ -870,8 +1003,8 @@ msgid "" msgstr "" "Alterna entre preservar o guardar los datos después de desactivar el plugin." -#: src/Views/menu-advanced.php:175 src/Views/menu-display.php:183 -#: src/Views/menu-general.php:179 +#: src/Views/menu-advanced.php:175 src/Views/menu-display.php:184 +#: src/Views/menu-general.php:175 msgid "Save Changes" msgstr "Guardar los cambios" @@ -933,8 +1066,8 @@ msgstr "Corregir base de datos" msgid "Debug Logging" msgstr "Registro de depuración" -#: src/Views/menu-diagnostics.php:97 src/Views/menu-display.php:92 -#: src/Views/menu-general.php:112 src/Views/menu-general.php:140 +#: src/Views/menu-diagnostics.php:97 src/Views/menu-display.php:94 +#: src/Views/menu-general.php:108 src/Views/menu-general.php:136 msgid "Enabled" msgstr "Activado" @@ -950,8 +1083,8 @@ msgstr "Purgar el registro de depuración" msgid "View Debug Logs" msgstr "Ver registro de depuración" -#: src/Views/menu-diagnostics.php:117 src/Views/menu-display.php:98 -#: src/Views/menu-general.php:120 src/Views/menu-general.php:149 +#: src/Views/menu-diagnostics.php:117 src/Views/menu-display.php:100 +#: src/Views/menu-general.php:116 src/Views/menu-general.php:145 msgid "Disabled" msgstr "Desactivado" @@ -1027,7 +1160,8 @@ msgstr "Formatos por defecto" msgid "Date Format" msgstr "Formato de fecha" -#: src/Views/menu-display.php:47 +#. translators: %s is a link to the PHP date function documentation +#: src/Views/menu-display.php:48 msgid "" "The default format to use when displaying the action date within a post " "using the shortcode or within the footer. For information on valid " @@ -1037,15 +1171,16 @@ msgstr "" "de una entrada usando el shortcode o dentro del pie de página. Para " "información sobre las opciones de formato válidas, consulta: %s." -#: src/Views/menu-display.php:51 src/Views/menu-display.php:68 +#: src/Views/menu-display.php:52 src/Views/menu-display.php:70 msgid "PHP Date Function" msgstr "Función de fecha PHP" -#: src/Views/menu-display.php:57 +#: src/Views/menu-display.php:58 msgid "Time Format" msgstr "Formato de hora" -#: src/Views/menu-display.php:64 +#. translators: %s is a link to the PHP date function documentation +#: src/Views/menu-display.php:66 msgid "" "The default format to use when displaying the action time within a post " "using the shortcode or within the footer. For information on valid " @@ -1055,11 +1190,11 @@ msgstr "" "de una entrada usando el shortcode o dentro del pie de página. Para " "información sobre las opciones de formato válidas, consulta: %s." -#: src/Views/menu-display.php:77 +#: src/Views/menu-display.php:79 msgid "Post Footer Display" msgstr "Mostrar pie de pagina de la entrada" -#: src/Views/menu-display.php:79 +#: src/Views/menu-display.php:81 msgid "" "Enabling this below will display the action date automatically at the end of " "any post which is set to run an action." @@ -1067,11 +1202,11 @@ msgstr "" "Se mostrará la fecha de caducidad de forma automática al final de cualquier " "entrada que esté a punto de caducar." -#: src/Views/menu-display.php:86 +#: src/Views/menu-display.php:88 msgid "Show in Post Footer?" msgstr "¿Mostrar en el pie de página de la entrada?" -#: src/Views/menu-display.php:101 +#: src/Views/menu-display.php:103 msgid "" "This will enable or disable displaying the future action date in the post " "footer." @@ -1079,11 +1214,11 @@ msgstr "" "Esto activa o desactiva la visualización de la fecha de caducidad en pie de " "página." -#: src/Views/menu-display.php:109 +#: src/Views/menu-display.php:111 msgid "Footer Contents" msgstr "Contenidos del pie de página" -#: src/Views/menu-display.php:114 +#: src/Views/menu-display.php:116 msgid "" "Enter the text you would like to appear at the bottom of every post which " "has an action scheduled. The following placeholders will be replaced with " @@ -1093,36 +1228,41 @@ msgstr "" "entrada con caducidad. Los siguientes marcadores de posición se reemplazarán " "por la fecha de vencimiento de la entrada en el siguiente formato:" -#: src/Views/menu-display.php:132 +#: src/Views/menu-display.php:134 msgid "Footer Style" msgstr "Estilo del pie de página" -#: src/Views/menu-display.php:137 +#: src/Views/menu-display.php:139 msgid "The inline css which will be used to style the footer text." msgstr "" "El css incrustado que se utilizará para dar estilo al texto del pie de " "página." -#: src/Views/menu-display.php:140 +#: src/Views/menu-display.php:142 msgid "Example: " msgstr "Ejemplo: " -#: src/Views/menu-display.php:151 +#: src/Views/menu-display.php:153 msgid "Shortcode" msgstr "Shortcode" -#: src/Views/menu-display.php:153 +#. translators: %s is the shortcode code wrapped in code tags +#: src/Views/menu-display.php:156 msgid "Valid %s attributes:" msgstr "Atributos válidos de %s:" -#: src/Views/menu-display.php:157 +#. translators: %1$s and %2$s are code tags that wrap the shortcode attribute names +#: src/Views/menu-display.php:161 msgid "" -"%1$s - valid options are %2$sfull%3$s (default), %4$sdate%5$s, %6$stime%7$s" +"%1$stype%2$s - valid options are %1$sfull%2$s (default), %1$sdate%2$s, " +"%1$stime%2$s" msgstr "" -"%1$s - Las opciones válidas son %2$sfull%3$s (por defecto), %4$sdate%5$s y " -"%6$stime%7$s" +"%1$stype%2$s - Las opciones válidas son %1$sfull%2$s (por defecto), " +"%1$sdate%2$s y %1$stime%2$s" -#: src/Views/menu-display.php:171 src/Views/menu-display.php:176 +#. translators: %s is a code tag that wraps the shortcode attribute dateformat +#. translators: %s is a code tag that wraps the shortcode attribute timeformat +#: src/Views/menu-display.php:171 src/Views/menu-display.php:177 msgid "%s - format set here will override the value set on the settings page" msgstr "" "%s - el formato establecido aquí anulará el valor establecido en la página " @@ -1132,54 +1272,55 @@ msgstr "" msgid "Defaults" msgstr "Valores por defecto" +#. translators: %1$s is the link to the PHP strtotime function documentation, %2$s and %3$s are the opening and closing code tags. Please, do not translate the date format text, since PHP will not be able to calculate using non-english terms. #: src/Views/menu-general.php:76 msgid "" "Set the offset to use for the default action date and time. For information " "on formatting, see %1$s\n" " . For example, you could enter " -"%2$s+1 month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Please, use only terms in English." +"%2$s+1 month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Please, use only terms in English." msgstr "" "Establece el desplazamiento que se utilizará para la fecha y hora de la " "acción por defecto. Para obtener información sobre el formato, consulta " "%1$s\n" -" . Por ejemplo, puedes introducir %2$s+1 " -"month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Por favor, introduce solo términos en inglés." +" . Por ejemplo, puedes introducir " +"%2$s+1 month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Por favor, introduce solo términos en inglés." -#: src/Views/menu-general.php:95 +#: src/Views/menu-general.php:91 msgid "Email Notification" msgstr "Correo electrónico para notificación del vencimiento" -#: src/Views/menu-general.php:97 +#: src/Views/menu-general.php:93 msgid "Whenever an action runs, an email can be sent to alert users." msgstr "" "Cuando caduca un post, puede enviarse un correo electrónico alertando a los " "usuarios del vencimiento." -#: src/Views/menu-general.php:104 +#: src/Views/menu-general.php:100 msgid "Enable Email Notification?" msgstr "¿Activar la notificación por correo electrónico?" -#: src/Views/menu-general.php:123 +#: src/Views/menu-general.php:119 msgid "" "This will enable or disable the send of email notification on future action." msgstr "" "Esto activará o desactivará el envío de la notificación por correo " "electrónico después del vencimiento." -#: src/Views/menu-general.php:131 +#: src/Views/menu-general.php:127 msgid "Include Blog Administrators?" msgstr "¿Incluir a administradores de blog?" -#: src/Views/menu-general.php:152 +#: src/Views/menu-general.php:148 msgid "" "This will include all users with the role of \"Administrator\" in the email." msgstr "" "Esto incluirá a todos los usuarios con el perfil de «Administrador» en el " "correo electrónico de caducidad de la entrada." -#: src/Views/menu-general.php:168 +#: src/Views/menu-general.php:164 msgid "" "Enter a comma separate list of emails that you would like to be notified " "when the action runs. This will be applied to ALL post types. You can set " @@ -1214,6 +1355,9 @@ msgstr "Diagnóstico y herramientas" msgid "Debug" msgstr "Depurar" +#~ msgid "Pending" +#~ msgstr "Pendiente" + #~ msgid "Select the taxonomy to be used for \"category\" based expiration." #~ msgstr "" #~ "Seleccione la taxonomía que se utilizará para la caducidad basada en " diff --git a/languages/post-expirator-fr_FR.mo b/languages/post-expirator-fr_FR.mo index 0ee3ff4a9..733e53934 100644 Binary files a/languages/post-expirator-fr_FR.mo and b/languages/post-expirator-fr_FR.mo differ diff --git a/languages/post-expirator-fr_FR.po b/languages/post-expirator-fr_FR.po index 65e49fda0..6c88d239f 100644 --- a/languages/post-expirator-fr_FR.po +++ b/languages/post-expirator-fr_FR.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Plugins - PublishPress Future: Automatically Unpublish " "WordPress Posts - Stable (latest release)\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n" -"POT-Creation-Date: 2024-02-28T18:49:44+00:00\n" -"PO-Revision-Date: 2024-02-29 20:37+0100\n" +"POT-Creation-Date: 2024-06-19T17:27:41+00:00\n" +"PO-Revision-Date: 2024-06-20 06:23+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -14,17 +14,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.4.4\n" #. Plugin Name of the plugin #: post-expirator.php -#: src/Modules/Expirator/Controllers/BlockEditorController.php:114 -#: src/Modules/Expirator/Controllers/BulkEditController.php:152 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:145 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:330 -#: src/Modules/Expirator/Controllers/QuickEditController.php:210 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:115 +#: src/Modules/Expirator/Controllers/BulkEditController.php:159 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:146 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:363 +#: src/Modules/Expirator/Controllers/QuickEditController.php:239 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:84 -#: src/Views/tabs.php:59 msgid "PublishPress Future" msgstr "PublishPress Future" @@ -52,24 +51,28 @@ msgstr "PublishPress" msgid "http://publishpress.com" msgstr "http://publishpress.com" -#: legacy/classes/Display.class.php:93 +#: legacy/classes/Display.class.php:94 msgid "You do not have permission to configure PublishPress Future." msgstr "" "Vous n’avez pas les droits nécessaires pour configurer PublishPress Future." -#: legacy/classes/Display.class.php:183 -msgid "Debugging Disabled" +#: legacy/classes/Display.class.php:108 +msgid "Debug is disabled" msgstr "Débogage désactivé" #: legacy/classes/Display.class.php:188 +msgid "Debugging Disabled" +msgstr "Débogage désactivé" + +#: legacy/classes/Display.class.php:193 msgid "Debugging Enabled" msgstr "Débogage activé" -#: legacy/classes/Display.class.php:196 +#: legacy/classes/Display.class.php:201 msgid "Debugging Table Emptied" msgstr "Table de débogage vidée" -#: legacy/classes/Display.class.php:202 +#: legacy/classes/Display.class.php:207 msgid "" "The legacy future actions migration has been enqueued and will run " "asynchronously." @@ -77,7 +80,7 @@ msgstr "" "La migration des actions Future héritées a été mise en file d’attente et " "s’exécutera de manière asynchrone." -#: legacy/classes/Display.class.php:211 +#: legacy/classes/Display.class.php:216 msgid "" "The legacy actions arguments restoration has been enqueued and will run " "asynchronously." @@ -85,46 +88,48 @@ msgstr "" "La restauration des arguments des actions héritées a été mise en file " "d’attente et s’exécutera de manière asynchrone." -#: legacy/classes/Display.class.php:221 +#: legacy/classes/Display.class.php:226 msgid "The database schema was fixed." msgstr "Le schéma de la base de données a été corrigé." -#: legacy/classes/Display.class.php:226 +#: legacy/classes/Display.class.php:231 msgid "" "The database schema could not be fixed. Please, contact the support team." msgstr "" "Le schéma de la base de données n’a pas pu être corrigé. Veuillez contacter " "l’équipe de support." -#: legacy/classes/Display.class.php:317 legacy/classes/Display.class.php:375 +#: legacy/classes/Display.class.php:322 legacy/classes/Display.class.php:380 msgid "Saved Options!" msgstr "Options enregistrées !" -#: legacy/classes/Display.class.php:460 -msgid "If you like %s, please leave us a %s rating. Thank you!" -msgstr "Si vous appréciez %s, veuillez nous laisser une note de %s. Merci !" +#. translators: %1$s is the plugin name, %2$s is the star rating markup +#: legacy/classes/Display.class.php:466 +msgid "If you like %1$s, please leave us a %2$s rating. Thank you!" +msgstr "" +"Si vous appréciez %1$s, veuillez nous laisser une note de %2$s. Merci !" -#: legacy/classes/Display.class.php:475 +#: legacy/classes/Display.class.php:481 msgid "About PublishPress Future" msgstr "À propos de PublishPress Future" -#: legacy/classes/Display.class.php:477 +#: legacy/classes/Display.class.php:483 msgid "About" msgstr "À propos" -#: legacy/classes/Display.class.php:483 +#: legacy/classes/Display.class.php:489 msgid "Future Documentation" msgstr "Documentation de Future" -#: legacy/classes/Display.class.php:485 +#: legacy/classes/Display.class.php:491 msgid "Documentation" msgstr "Documentation" -#: legacy/classes/Display.class.php:491 +#: legacy/classes/Display.class.php:497 msgid "Contact the PublishPress team" msgstr "Contacter l’équipe PublishPress" -#: legacy/classes/Display.class.php:493 +#: legacy/classes/Display.class.php:499 msgid "Contact" msgstr "Contact" @@ -132,87 +137,157 @@ msgstr "Contact" msgid "No taxonomies found" msgstr "Aucune taxonomie trouvée" -#: services.php:68 src/Modules/Settings/SettingsFacade.php:90 +#: services.php:70 src/Modules/Settings/SettingsFacade.php:92 msgid "l F jS, Y" msgstr "I j F Y" -#: services.php:69 src/Modules/Settings/SettingsFacade.php:91 +#: services.php:74 src/Modules/Settings/SettingsFacade.php:93 msgid "g:ia" msgstr "g\\hia" -#: services.php:70 src/Modules/Settings/SettingsFacade.php:92 +#: services.php:75 src/Modules/Settings/SettingsFacade.php:94 msgid "Post expires at EXPIRATIONTIME on ACTIONDATE" msgstr "" "La publication expire à la date d’expiration (EXPIRATIONTIME) de la date " "d’action (ACTIONDATE)." -#: src/Modules/Expirator/Controllers/BlockEditorController.php:113 -#: src/Modules/Expirator/Controllers/BulkEditController.php:151 -#: src/Modules/Expirator/Controllers/QuickEditController.php:209 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:114 +#: src/Modules/Expirator/Controllers/BulkEditController.php:158 +#: src/Modules/Expirator/Controllers/QuickEditController.php:238 msgid "Categories" msgstr "Catégories" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:115 -#: src/Modules/Expirator/Controllers/BulkEditController.php:153 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:331 -#: src/Modules/Expirator/Controllers/QuickEditController.php:211 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:116 +#: src/Modules/Expirator/Controllers/BulkEditController.php:160 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:364 +#: src/Modules/Expirator/Controllers/QuickEditController.php:240 msgid "Enable Future Action" msgstr "Activer l’action Future" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:116 -#: src/Modules/Expirator/Controllers/BulkEditController.php:154 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:332 -#: src/Modules/Expirator/Controllers/QuickEditController.php:212 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:117 +#: src/Modules/Expirator/Controllers/BulkEditController.php:161 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:365 +#: src/Modules/Expirator/Controllers/QuickEditController.php:241 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:46 msgid "Action" msgstr "Action" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:117 -#: src/Modules/Expirator/Controllers/BulkEditController.php:157 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:335 -#: src/Modules/Expirator/Controllers/QuickEditController.php:215 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:118 +#: src/Modules/Expirator/Controllers/BulkEditController.php:164 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:368 +#: src/Modules/Expirator/Controllers/QuickEditController.php:244 msgid "Loading" msgstr "Chargement" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:118 -#: src/Modules/Expirator/Controllers/BulkEditController.php:155 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:333 -#: src/Modules/Expirator/Controllers/QuickEditController.php:213 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:119 +#: src/Modules/Expirator/Controllers/BulkEditController.php:162 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:366 +#: src/Modules/Expirator/Controllers/QuickEditController.php:242 msgid "Show Calendar" msgstr "Afficher le calendrier" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:119 -#: src/Modules/Expirator/Controllers/BulkEditController.php:156 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:334 -#: src/Modules/Expirator/Controllers/QuickEditController.php:214 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:120 +#: src/Modules/Expirator/Controllers/BulkEditController.php:163 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:367 +#: src/Modules/Expirator/Controllers/QuickEditController.php:243 msgid "Hide Calendar" msgstr "Masquer le calendrier" #. translators: the text between {} is the link to the settings page. #. translators: the text between {{}} is the link to the settings page. -#: src/Modules/Expirator/Controllers/BlockEditorController.php:121 -#: src/Modules/Expirator/Controllers/BulkEditController.php:159 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:337 -#: src/Modules/Expirator/Controllers/QuickEditController.php:217 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:122 +#: src/Modules/Expirator/Controllers/BulkEditController.php:166 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:370 +#: src/Modules/Expirator/Controllers/QuickEditController.php:246 msgid "Timezone is controlled by the {WordPress Settings}." msgstr "Le fuseau horaire est contrôlé par les {Reglages de WordPress}." -#: src/Modules/Expirator/Controllers/BlockEditorController.php:124 -#: src/Modules/Expirator/Controllers/BulkEditController.php:162 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:340 -#: src/Modules/Expirator/Controllers/QuickEditController.php:220 +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:126 +#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:374 +#: src/Modules/Expirator/Controllers/QuickEditController.php:250 msgid "No %s found." msgstr "Aucune %s trouvée" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:127 -#: src/Modules/Expirator/Controllers/BulkEditController.php:166 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:343 -#: src/Modules/Expirator/Controllers/QuickEditController.php:223 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:129 +#: src/Modules/Expirator/Controllers/BulkEditController.php:174 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:377 +#: src/Modules/Expirator/Controllers/QuickEditController.php:253 msgid "You must assign a taxonomy to this post type to use this feature." msgstr "" "Vous devez assigner une taxonomie à ce type de publication pour utiliser " "cette fonctionnalité." +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:131 +#: src/Modules/Expirator/Controllers/BulkEditController.php:181 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:379 +#: src/Modules/Expirator/Controllers/QuickEditController.php:255 +msgid "New %s" +msgstr "Nouveau %s" + +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:133 +#: src/Modules/Expirator/Controllers/BulkEditController.php:183 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:381 +#: src/Modules/Expirator/Controllers/QuickEditController.php:257 +msgid "%s to remove" +msgstr "%s à retirer" + +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:135 +#: src/Modules/Expirator/Controllers/BulkEditController.php:185 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:383 +#: src/Modules/Expirator/Controllers/QuickEditController.php:259 +msgid "%s to add" +msgstr "%s à ajouter" + +#. translators: %s is the name of the taxonomy in singular form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:137 +#: src/Modules/Expirator/Controllers/BulkEditController.php:187 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:385 +#: src/Modules/Expirator/Controllers/QuickEditController.php:261 +msgid "Search for %s" +msgstr "Recherche pour %s" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:138 +#: src/Modules/Expirator/Controllers/BulkEditController.php:188 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:386 +#: src/Modules/Expirator/Controllers/QuickEditController.php:262 +msgid "Select an action" +msgstr "Sélectionner une action" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:139 +#: src/Modules/Expirator/Controllers/BulkEditController.php:189 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:387 +#: src/Modules/Expirator/Controllers/QuickEditController.php:263 +msgid "Select a date" +msgstr "Sélectionner la date" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:140 +#: src/Modules/Expirator/Controllers/BulkEditController.php:190 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:388 +#: src/Modules/Expirator/Controllers/QuickEditController.php:264 +msgid "Date cannot be in the past" +msgstr "La date ne peut pas être dans le passé" + +#. translators: %s is the name of the taxonomy in singular form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:143 +#: src/Modules/Expirator/Controllers/BulkEditController.php:193 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:391 +#: src/Modules/Expirator/Controllers/QuickEditController.php:267 +#: src/Modules/Settings/Controllers/Controller.php:243 +msgid "Please select one or more %s" +msgstr "Veuillez sélectionner un ou plusieurs %s" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:146 +#: src/Modules/Expirator/Controllers/BulkEditController.php:196 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:394 +#: src/Modules/Expirator/Controllers/QuickEditController.php:270 +msgid "New status" +msgstr "Nouvel état" + #: src/Modules/Expirator/Controllers/BulkActionController.php:82 msgid "No posts selected. Unable to sync Future Actions." msgstr "" @@ -231,36 +306,35 @@ msgstr "" "Mettre à jour les actions de Future à partir des métadonnées de la " "publication" -#: src/Modules/Expirator/Controllers/BulkEditController.php:165 +#: src/Modules/Expirator/Controllers/BulkEditController.php:173 msgid "Future Action Update" msgstr "Mise à jour des actions Future" -#: src/Modules/Expirator/Controllers/BulkEditController.php:167 +#: src/Modules/Expirator/Controllers/BulkEditController.php:175 msgid "— No Change —" msgstr "— Aucune modification —" -#: src/Modules/Expirator/Controllers/BulkEditController.php:168 +#: src/Modules/Expirator/Controllers/BulkEditController.php:176 msgid "Add or update action for posts" msgstr "Ajouter ou mettre à jour l’action pour les publications" -#: src/Modules/Expirator/Controllers/BulkEditController.php:169 +#: src/Modules/Expirator/Controllers/BulkEditController.php:177 msgid "Add action if none exists for posts" msgstr "Ajouter une action si aucune n’existe pour les publications" -#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/BulkEditController.php:178 msgid "Update the existing actions for posts" msgstr "Mise à jour des actions existantes pour les publications" -#: src/Modules/Expirator/Controllers/BulkEditController.php:171 +#: src/Modules/Expirator/Controllers/BulkEditController.php:179 msgid "Remove action from posts" msgstr "Retirer l’action de las publications" -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:329 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:362 msgid "Category" msgstr "Catégoria" -#: src/Modules/Expirator/Controllers/PluginsListController.php:39 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:107 +#: src/Modules/Expirator/Controllers/PluginsListController.php:45 msgid "Settings" msgstr "Réglages" @@ -268,161 +342,195 @@ msgstr "Réglages" msgid "Future Action" msgstr "Action Future" +#: src/Modules/Expirator/Controllers/RestAPIController.php:196 +#: src/Modules/Expirator/Controllers/RestAPIController.php:202 +msgid "Invalid date time offset." +msgstr "Décalage de la date et de l’heure invalide." + #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:85 msgid "Future" msgstr "Future" +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:94 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:95 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:96 +#: src/Views/tabs.php:59 +msgid "Action Settings" +msgstr "Réglages des actions" + +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:103 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:104 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:43 -msgid "Future Actions" -msgstr "Actions Future" +msgid "Scheduled Actions" +msgstr "Action planifiée" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:174 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:172 msgid "Log format" msgstr "Format du journal" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:181 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:179 msgid "List" msgstr "Liste" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:190 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:188 msgid "Popup" msgstr "Fenêtre surgissante" -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:46 +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:54 +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:52 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:52 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:52 +msgid "Status didn't change." +msgstr "L’état n’a pas été modifié." + +#. translators: 1: old post status, 2: new post status +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:62 +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:60 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:60 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:60 +msgid "Status has been successfully changed from \"%1$s\" to \"%2$s\"." +msgstr "L’état a bien été modifié de « %1$s » à « %2$s »." + +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:89 +msgid "Change status" +msgstr "Modifier l’état" + +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:47 msgid "%s was not deleted." msgstr "%s n’a pas été supprimée." -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:52 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:54 msgid "%s has been successfully deleted." msgstr "%s a bien été supprimée." -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:74 +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:76 msgid "Delete" msgstr "Supprimer" -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:63 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:64 msgid "No terms were added to the %s." msgstr "Aucun terme n’a été ajouté à la %s." -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:73 +#. translators: %1$s is the taxonomy label, %2$s is the post type singular label, %3$s is the list of terms added, %4$s is the list of terms on the post +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:75 msgid "" -"The following terms (%s) were added to the %s: \"%s\". The full list of " -"terms on the post is: %s." +"The following terms (%1$s) were added to the %2$s: \"%3$s\". The full list " +"of terms on the post is: %4$s." msgstr "" -"Les termes suivants (%s) ont été ajoutés aux %s : « %s ». La liste complète " -"des termes de la publication est la suivante : %s." +"Les termes suivants (%1$s) ont été ajoutés aux %2$s : « %3$s ». La liste " +"complète des termes de la publication est la suivante : %4$s." -#. translators: %s is the taxonomy label (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:119 +#. translators: %s is the taxonomy name (plural) +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:118 msgid "Add extra %s" msgstr "Ajouter des %s supplémentaires" -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:55 -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:55 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:56 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:56 msgid "No terms were removed from the %s." msgstr "Aucun terme n’a été supprimé des %s." -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:65 +#. translators: %1$s is the taxonomy name, %2$s is the post type singular label, %3$s is the removed terms list, %4$s is the updated terms list +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:67 msgid "" -"The following terms (%s) were removed from the %s: %s. The new list of terms " -"on the post is: %s." +"The following terms (%1$s) were removed from the %2$s: %3$s. The new list of " +"terms on the post is: %4$s." msgstr "" -"Les termes suivants (%s) ont été retirés des %s : %s. La nouvelle liste de " -"termes dans la publication est la suivante : %s." +"Les termes suivants (%1$s) ont été retirés des %2$s : %3$s. La nouvelle " +"liste de termes dans la publication est la suivante : %4$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:113 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:112 msgid "Remove selected %s" msgstr "Retirer les %s sélectionnés" -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:65 -msgid "The following terms (%s) were removed from the %s: %s." -msgstr "Les termes suivants (%s) ont été retirés des %s : %s." +#. translators: %1$s is the taxonomy name, %2$s is the post type singular label, %3$s is the list of term names +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:67 +msgid "The following terms (%1$s) were removed from the %2$s: %3$s." +msgstr "Les termes suivants (%1$s) ont été retirés des %2$s : %3$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:107 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:106 msgid "Remove all %s" msgstr "Supprimer tous les %s" -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:57 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:58 msgid "No terms were changed on the %s." msgstr "Aucun terme n’a été modifié dans la %s." -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:67 +#. translators: 1: taxonomy name, 2: post type singular label, 3: updated terms, 4: original terms +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:69 msgid "" -"The following terms (%s) were set to the %s: \"%s\". The old list of terms " -"on the post was: %s." +"The following terms (%1$s) were set to the %2$s: \"%3$s\". The old list of " +"terms on the post was: %4$s." msgstr "" -"Les termes suivants (%s) ont été définis dans les %s : « %s ». L’ancienne " -"liste de termes de la publication était : %s." +"Les termes suivants (%1$s) ont été définis dans les %2$s : %3$s. L’ancienne " +"liste de termes de la publication était : %4$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:110 +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:109 msgid "Replace all %s" msgstr "Remplacer tous les %s" -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:49 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:49 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:49 -msgid "Status didn't change." -msgstr "L’état n’a pas été modifié." - -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:56 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:56 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:56 -msgid "Status has been successfully changed from \"%s\" to \"%s\"." -msgstr "L’état a bien été modifié de « %s » à « %s »." - -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:85 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:85 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:85 +#. translators: %s: new post status +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:90 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:90 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:90 msgid "Change status to %s" msgstr "Modifier l’état en %s" -#: src/Modules/Expirator/ExpirationActions/StickPost.php:45 -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:45 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/StickPost.php:46 +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:46 msgid "%s didn't change." msgstr "%s n’a pas été modifié." -#: src/Modules/Expirator/ExpirationActions/StickPost.php:51 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/StickPost.php:53 msgid "%s has been added to stickies list." msgstr "%s a été ajoutée à la liste des épinglées." -#: src/Modules/Expirator/ExpirationActions/StickPost.php:73 +#: src/Modules/Expirator/ExpirationActions/StickPost.php:75 msgid "Stick" msgstr "Épingler" -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:51 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:53 msgid "%s has been removed from stickies list." msgstr "%s a été retirée de la liste des épinglées." -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:73 +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:75 msgid "Unstick" msgstr "Ne plus épingler" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:410 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:463 msgid "Email is disabled" msgstr "L’e-mail est désactivé" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:414 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:467 msgid "Email sent" msgstr "L’e-mail a été envoyé" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:414 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:467 msgid "Email not sent" msgstr "L’e-mail n’a pas été envoyé" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:560 -msgid "%s. %s on %s. The post link is %s" -msgstr "%s. %s sur %s. Le lien de la publication est %s" +#. translators: %1$s: post title placeholder, %2$s: notification text, %3$s: action date placeholder, %4$s: post link placeholder +#: src/Modules/Expirator/Models/ExpirablePostModel.php:617 +msgid "%1$s. %2$s on %3$s. The post link is %4$s" +msgstr "%1$s. %2$s le %3$s. Le lien de la publication est %s" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:577 +#. translators: %s is the post title +#: src/Modules/Expirator/Models/ExpirablePostModel.php:635 msgid "Future Action Complete \"%s\"" msgstr "Action Future terminée « %s »" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:580 +#. translators: 1: is the blog name, 2: the email subject +#: src/Modules/Expirator/Models/ExpirablePostModel.php:639 msgid "[%1$s] %2$s" msgstr "[%1$s] %2$s" @@ -521,8 +629,9 @@ msgid "Uninitialized" msgstr "Non initialisé" #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:274 -msgid "Pending" -msgstr "En attente" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:340 +msgid "Scheduled" +msgstr "Planifié" #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:275 msgid "Complete" @@ -548,77 +657,86 @@ msgstr "Tout" msgid "Search hook, args and claim ID" msgstr "Rechercher le crochet, les arguments et l’ID de la demande" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:340 -msgid "Scheduled" -msgstr "Planifié" - #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:344 msgid "Completed" msgstr "Terminé" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:446 -msgid "%s: [%d] %s%s%s" -msgstr "%s : [%d] %s%s%s" +#. translators: %1$s: post type label, %2$d: post ID, %3$s: post link tag start, %4$s: post title, %5$s: post link tag end +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:449 +msgid "%1$s: [%2$d] %3$s%4$s%5$s" +msgstr "%s : [%2$d] %3$s%4$s%5$s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:468 +#. translators: %s is the new status +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:484 +msgid "New Status: %s" +msgstr "Nouvel état : %s" + +#. translators: %s is the list of terms +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:492 msgid "Terms: %s" msgstr "Termes : %s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:568 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:595 msgid "View log" msgstr "Voir le journal" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:579 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:606 msgid "Action: " msgstr "Action : " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:585 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 msgid "Status: " msgstr "État : " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:591 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:618 msgid "Arguments: " msgstr "Arguments : " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:597 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:624 msgid "Scheduled date: " msgstr "Date planifiée : " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:611 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:638 #: src/Views/menu-diagnostics.php:190 msgid "Date" msgstr "Date" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:639 #: src/Views/menu-debug-log.php:37 msgid "Message" msgstr "Message" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:646 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:673 msgid "Async" msgstr "Asynchrone" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:662 +#. translators: %s is the date interval in human readable format in the past +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:690 msgid " (%s ago)" msgstr " (il y a %s)" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:668 +#. translators: %s is the date interval in human readable format in the present or future +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:696 msgid " (%s)" msgstr " (%s)" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:692 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:720 msgid "Now!" msgstr "Maintenant !" #. translators: %s: time interval -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:739 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:769 msgid "Every %s" msgstr "Tous les %s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:745 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:775 msgid "Non-repeating" msgstr "Pas de répétition" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:784 +msgid "No Future Actions." +msgstr "Aucune action future" + #: src/Modules/Settings/Controllers/Controller.php:202 msgid "Default Values" msgstr "Valeurs par défaut" @@ -676,7 +794,7 @@ msgstr "" "taxonomie ne seront pas disponibles." #: src/Modules/Settings/Controllers/Controller.php:222 -#: src/Views/menu-general.php:161 +#: src/Views/menu-general.php:157 msgid "Who to Notify" msgstr "Personne à notifier" @@ -693,19 +811,20 @@ msgstr "" msgid "Default Date/Time Offset" msgstr "Décalage date/heure par défaut" +#. translators: %1$s is the link to the PHP strtotime function documentation, %2$s and %3$s are the opening and closing code tags. Please, do not translate the date format text, since PHP will not be able to calculate using non-english terms. #: src/Modules/Settings/Controllers/Controller.php:230 msgid "" "Set the offset to use for the default action date and time. For information " "on formatting, see %1$s\n" -" . For example, you could enter %2$s+1 " -"month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Please, use only terms in English." +" . For example, you could enter %2$s+1 " +"month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Please, use only terms in English." msgstr "" -"Définissez le décalage à utiliser pour la date et l’heure de l’action par " +"Définir le décalage à utiliser pour la date et l’heure de l’action par " "défaut\n" -" . Pour plus d’informations sur le " -"formatage, voir %1$s. Par exemple, vous pouvez saisir %2$s+1 mois%3$s ou " -"%4$s+1 semaine 2 jours 4 heures 2 secondes%5$s ou %6$sprochain jeudi%7$s. " +" . Pour plus d’informations sur le " +"formatage, voir %1$s. Par exemple, vous pouvez saisir %2$s + 1 mois%3$s ou " +"%2$s + 1 semaine 2 jours 4 heures 2 secondes%3$s ou %2$sprochain jeudi%3$s. " "Pour ces valeurs, veuillez utiliser uniquement des termes en anglais." #: src/Modules/Settings/Controllers/Controller.php:235 @@ -713,30 +832,39 @@ msgstr "" msgid "PHP strtotime function" msgstr "Fonction strtotime de PHP" -#: src/Modules/Settings/Controllers/Controller.php:246 +#: src/Modules/Settings/Controllers/Controller.php:239 msgid "Default terms:" msgstr "Termes par défaut :" -#: src/Modules/Settings/Controllers/Controller.php:247 +#: src/Modules/Settings/Controllers/Controller.php:240 msgid "Save changes" msgstr "Enregistrer les modifications" -#: src/Modules/Settings/Controllers/Controller.php:346 +#: src/Modules/Settings/Controllers/Controller.php:241 +msgid "Wait for the validation..." +msgstr "Attendre la validation…" + +#: src/Modules/Settings/Controllers/Controller.php:244 +msgid "Date Preview" +msgstr "Aperçu de la date" + +#: src/Modules/Settings/Controllers/Controller.php:344 msgid "Form Validation Failure: Sorry, your nonce did not verify." msgstr "" "Échec de la validation du formulaire : Désolé, votre nonce n’a pas été " "vérifié." -#: src/Modules/VersionNotices/Module.php:94 +#. translators: %1$s and %2$s are placeholders for the link to by the Pro version +#: src/Modules/VersionNotices/Module.php:95 msgid "" "You're using PublishPress Future Free. The Pro version has more features and " -"support. %sUpgrade to Pro%s" +"support. %1$sUpgrade to Pro%2$s" msgstr "" "Vous utilisez PublishPress Future Free. La version Pro offre plus de " -"fonctionnalités et de support. %sPasser à la version Pro%s" +"fonctionnalités et de support. %1$sPasser à la version Pro%2$s" -#: src/Modules/VersionNotices/Module.php:120 -#: src/Views/ad-banner-right-sidebar.php:33 +#: src/Modules/VersionNotices/Module.php:121 +#: src/Views/ad-banner-right-sidebar.php:35 msgid "Upgrade to Pro" msgstr "Passez à la version Pro" @@ -749,53 +877,57 @@ msgid "Enhance the power of PublishPress Future with the Pro version:" msgstr "Augmentez la puissance de PublishPress Future avec la version Pro :" #: src/Views/ad-banner-right-sidebar.php:23 -msgid "Set the action date based on the post's publishing date" -msgstr "" -"Définir la date d’action en fonction de la date de publication de la " -"publication" +msgid "Design custom workflows with multiple actions" +msgstr "Créer des flux de travail personnalisés avec des actions multiples" #: src/Views/ad-banner-right-sidebar.php:25 +msgid "Schedule actions based on the post's publishing date" +msgstr "" +"Planifier les actions en fonction de la date de publication de la publication" + +#: src/Views/ad-banner-right-sidebar.php:27 msgid "Move posts to custom statuses" msgstr "Déplacer les publications vers des états personnalisés" -#: src/Views/ad-banner-right-sidebar.php:27 +#: src/Views/ad-banner-right-sidebar.php:29 msgid "Use other plugins to control Future Actions" msgstr "" "Utiliser les autres extensions pour contrôler les actions de « Future »" -#: src/Views/ad-banner-right-sidebar.php:29 -msgid "Fast, professional support" -msgstr "Un support rapide et professionnel" +#: src/Views/ad-banner-right-sidebar.php:31 +msgid "Enjoy fast and professional support" +msgstr "Bénéficier du support rapide et professionnel" -#: src/Views/ad-banner-right-sidebar.php:41 +#: src/Views/ad-banner-right-sidebar.php:43 msgid "Need PublishPress Future Support?" msgstr "Vous avez besoin du support de PublishPress Future ?" -#: src/Views/ad-banner-right-sidebar.php:47 +#: src/Views/ad-banner-right-sidebar.php:49 msgid "If you need help or have a new feature request, let us know." msgstr "" "Si vous avez besoin d’aide ou si vous avez une nouvelle demande de " "fonctionnalité, faites-le nous savoir." -#: src/Views/ad-banner-right-sidebar.php:53 +#: src/Views/ad-banner-right-sidebar.php:55 msgid "Request Support" msgstr "Demande de support" -#: src/Views/ad-banner-right-sidebar.php:64 +#: src/Views/ad-banner-right-sidebar.php:66 msgid "Detailed documentation is also available on the plugin website." msgstr "" "Une documentation détaillée est également disponible sur le site de " "l’extension." -#: src/Views/ad-banner-right-sidebar.php:71 +#: src/Views/ad-banner-right-sidebar.php:73 msgid "View Knowledge Base" msgstr "Voir la base de connaissances" -#: src/Views/expire-column.php:53 +#. translators: %1$s opens a span tag, %2$s is the action name, %3$s ends a span tag, %4$s is the a span tag, %5$s is the a span tag, %6$s is the a span tag +#: src/Views/expire-column.php:55 msgid "%1$s%2$s%3$s on %5$s%4$s%6$s" msgstr "%1$s%2$s%3$s sur %5$s%4$s%6$s" -#: src/Views/expire-column.php:80 +#: src/Views/expire-column.php:92 msgid "" "Action was not scheduled due to a configuration issue. Please attempt to " "schedule it again." @@ -803,7 +935,7 @@ msgstr "" "L’action n’a pas pu être planifiée en raison d’un problème de configuration. " "Veuillez essayer de la replanifier." -#: src/Views/expire-column.php:85 +#: src/Views/expire-column.php:97 msgid "No future action" msgstr "Aucune action future" @@ -878,8 +1010,8 @@ msgstr "" "Permutez entre la conservation ou la suppression des données après la " "désactivation de l’extension." -#: src/Views/menu-advanced.php:175 src/Views/menu-display.php:183 -#: src/Views/menu-general.php:179 +#: src/Views/menu-advanced.php:175 src/Views/menu-display.php:184 +#: src/Views/menu-general.php:175 msgid "Save Changes" msgstr "Enregistrer les modifications" @@ -941,8 +1073,8 @@ msgstr "Corriger la base de données" msgid "Debug Logging" msgstr "Journalisation de débogage" -#: src/Views/menu-diagnostics.php:97 src/Views/menu-display.php:92 -#: src/Views/menu-general.php:112 src/Views/menu-general.php:140 +#: src/Views/menu-diagnostics.php:97 src/Views/menu-display.php:94 +#: src/Views/menu-general.php:108 src/Views/menu-general.php:136 msgid "Enabled" msgstr "Activé" @@ -958,8 +1090,8 @@ msgstr "Purge le log de débogage" msgid "View Debug Logs" msgstr "Voir les logs de déboguage" -#: src/Views/menu-diagnostics.php:117 src/Views/menu-display.php:98 -#: src/Views/menu-general.php:120 src/Views/menu-general.php:149 +#: src/Views/menu-diagnostics.php:117 src/Views/menu-display.php:100 +#: src/Views/menu-general.php:116 src/Views/menu-general.php:145 msgid "Disabled" msgstr "Désactivé" @@ -1037,7 +1169,8 @@ msgstr "Formats par défaut" msgid "Date Format" msgstr "Format de date" -#: src/Views/menu-display.php:47 +#. translators: %s is a link to the PHP date function documentation +#: src/Views/menu-display.php:48 msgid "" "The default format to use when displaying the action date within a post " "using the shortcode or within the footer. For information on valid " @@ -1047,15 +1180,16 @@ msgstr "" "publication à l’aide du code court ou dans le pied de page. Pour plus " "d’informations sur les options de formatage valides, voir : %s." -#: src/Views/menu-display.php:51 src/Views/menu-display.php:68 +#: src/Views/menu-display.php:52 src/Views/menu-display.php:70 msgid "PHP Date Function" msgstr "Fonction date de PHP" -#: src/Views/menu-display.php:57 +#: src/Views/menu-display.php:58 msgid "Time Format" msgstr "Format d’heure" -#: src/Views/menu-display.php:64 +#. translators: %s is a link to the PHP date function documentation +#: src/Views/menu-display.php:66 msgid "" "The default format to use when displaying the action time within a post " "using the shortcode or within the footer. For information on valid " @@ -1065,11 +1199,11 @@ msgstr "" "publication à l’aide du code court ou dans le pied de page. Pour plus " "d’informations sur les options de formatage valides, voir : %s." -#: src/Views/menu-display.php:77 +#: src/Views/menu-display.php:79 msgid "Post Footer Display" msgstr "Affichage dans le pied de page" -#: src/Views/menu-display.php:79 +#: src/Views/menu-display.php:81 msgid "" "Enabling this below will display the action date automatically at the end of " "any post which is set to run an action." @@ -1078,11 +1212,11 @@ msgstr "" "automatiquement à la fin de toutes les publications qui sont configurées " "pour exécuter une action." -#: src/Views/menu-display.php:86 +#: src/Views/menu-display.php:88 msgid "Show in Post Footer?" msgstr "Afficher dans le pied de page de la publication ?" -#: src/Views/menu-display.php:101 +#: src/Views/menu-display.php:103 msgid "" "This will enable or disable displaying the future action date in the post " "footer." @@ -1090,11 +1224,11 @@ msgstr "" "Cette option permet d’activer ou de désactiver l’affichage de la date de " "l’action Future dans le pied de page de la publication." -#: src/Views/menu-display.php:109 +#: src/Views/menu-display.php:111 msgid "Footer Contents" msgstr "Contenus du pied de page" -#: src/Views/menu-display.php:114 +#: src/Views/menu-display.php:116 msgid "" "Enter the text you would like to appear at the bottom of every post which " "has an action scheduled. The following placeholders will be replaced with " @@ -1105,35 +1239,40 @@ msgstr "" "suivants seront remplacés par la date de l’action future dans le format " "suivant :" -#: src/Views/menu-display.php:132 +#: src/Views/menu-display.php:134 msgid "Footer Style" msgstr "Style du pied de page" -#: src/Views/menu-display.php:137 +#: src/Views/menu-display.php:139 msgid "The inline css which will be used to style the footer text." msgstr "" "Les CSS en ligne qui seront utilisées pour styler le texte de pied de page." -#: src/Views/menu-display.php:140 +#: src/Views/menu-display.php:142 msgid "Example: " msgstr "Exemple : " -#: src/Views/menu-display.php:151 +#: src/Views/menu-display.php:153 msgid "Shortcode" msgstr "Code court" -#: src/Views/menu-display.php:153 +#. translators: %s is the shortcode code wrapped in code tags +#: src/Views/menu-display.php:156 msgid "Valid %s attributes:" msgstr "Attributs %s valides :" -#: src/Views/menu-display.php:157 +#. translators: %1$s and %2$s are code tags that wrap the shortcode attribute names +#: src/Views/menu-display.php:161 msgid "" -"%1$s - valid options are %2$sfull%3$s (default), %4$sdate%5$s, %6$stime%7$s" +"%1$stype%2$s - valid options are %1$sfull%2$s (default), %1$sdate%2$s, " +"%1$stime%2$s" msgstr "" -"%1$s - les options valides sont %2$sfull%3$s (par défaut), %4$sdate%5$s, " -"%6$stime%7$s" +"%1$stype%2$s - les options valides sont %1$sfull%2$s (par défaut), " +"%1$sdate%2$s, %1$stime%2$s" -#: src/Views/menu-display.php:171 src/Views/menu-display.php:176 +#. translators: %s is a code tag that wraps the shortcode attribute dateformat +#. translators: %s is a code tag that wraps the shortcode attribute timeformat +#: src/Views/menu-display.php:171 src/Views/menu-display.php:177 msgid "%s - format set here will override the value set on the settings page" msgstr "" "%s - le format défini ici remplacera la valeur définie sur la page des " @@ -1143,54 +1282,55 @@ msgstr "" msgid "Defaults" msgstr "Défaut" +#. translators: %1$s is the link to the PHP strtotime function documentation, %2$s and %3$s are the opening and closing code tags. Please, do not translate the date format text, since PHP will not be able to calculate using non-english terms. #: src/Views/menu-general.php:76 msgid "" "Set the offset to use for the default action date and time. For information " "on formatting, see %1$s\n" " . For example, you could enter " -"%2$s+1 month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Please, use only terms in English." +"%2$s+1 month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Please, use only terms in English." msgstr "" -"Définissez le décalage à utiliser pour la date et l’heure de l’action par " +"Définir le décalage à utiliser pour la date et l’heure de l’action par " "défaut\n" -" . Pour plus d’informations sur le " -"formatage, voir %1$s. Par exemple, vous pouvez saisir %2$s+1 mois%3$s ou " -"%4$s+1 semaine 2 jours 4 heures 2 secondes%5$s ou %6$sprochain jeudi%7$s. " +" . Pour plus d’informations sur le " +"formatage, voir %1$s. Par exemple, vous pouvez saisir %2$s + 1 mois%3$s ou " +"%2$s + 1 semaine 2 jours 4 heures 2 secondes%3$s ou %2$sprochain jeudi%3$s. " "Pour ces valeurs, veuillez utiliser uniquement des termes en anglais." -#: src/Views/menu-general.php:95 +#: src/Views/menu-general.php:91 msgid "Email Notification" msgstr "Notification par e-mail" -#: src/Views/menu-general.php:97 +#: src/Views/menu-general.php:93 msgid "Whenever an action runs, an email can be sent to alert users." msgstr "" "Chaque fois qu’une action est exécutée, un e-mail peut être envoyé pour " "alerter les utilisateurs/utilisatrices." -#: src/Views/menu-general.php:104 +#: src/Views/menu-general.php:100 msgid "Enable Email Notification?" msgstr "Activer la notification par e-mail ?" -#: src/Views/menu-general.php:123 +#: src/Views/menu-general.php:119 msgid "" "This will enable or disable the send of email notification on future action." msgstr "" "Ceci vous permet d’activer ou de désactiver l’envoi d’une notification par e-" "mail pour les actions Future." -#: src/Views/menu-general.php:131 +#: src/Views/menu-general.php:127 msgid "Include Blog Administrators?" msgstr "Inclure les Admins ?" -#: src/Views/menu-general.php:152 +#: src/Views/menu-general.php:148 msgid "" "This will include all users with the role of \"Administrator\" in the email." msgstr "" "Tous les utilisateurs et utilisatrices ayant le rôle d’administrateur ou " "administratrice seront inclus dans l’e-mail." -#: src/Views/menu-general.php:168 +#: src/Views/menu-general.php:164 msgid "" "Enter a comma separate list of emails that you would like to be notified " "when the action runs. This will be applied to ALL post types. You can set " @@ -1225,6 +1365,9 @@ msgstr "Diagnostics et outils" msgid "Debug" msgstr "Débogage" +#~ msgid "Pending" +#~ msgstr "En attente" + #~ msgid "Keep all current terms and add new terms" #~ msgstr "Garder tous les termes actuels et en ajouter de nouveaux" diff --git a/languages/post-expirator-it_IT.mo b/languages/post-expirator-it_IT.mo index d968bdff8..0707be588 100644 Binary files a/languages/post-expirator-it_IT.mo and b/languages/post-expirator-it_IT.mo differ diff --git a/languages/post-expirator-it_IT.po b/languages/post-expirator-it_IT.po index 040c18b15..5356effa4 100644 --- a/languages/post-expirator-it_IT.po +++ b/languages/post-expirator-it_IT.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Plugins - PublishPress Future: Automatically Unpublish " "WordPress Posts - Stable (latest release)\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n" -"POT-Creation-Date: 2024-02-28T18:49:44+00:00\n" -"PO-Revision-Date: 2024-02-29 20:33+0100\n" +"POT-Creation-Date: 2024-06-19T17:27:41+00:00\n" +"PO-Revision-Date: 2024-06-20 06:14+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: it\n" @@ -14,17 +14,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.4.4\n" #. Plugin Name of the plugin #: post-expirator.php -#: src/Modules/Expirator/Controllers/BlockEditorController.php:114 -#: src/Modules/Expirator/Controllers/BulkEditController.php:152 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:145 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:330 -#: src/Modules/Expirator/Controllers/QuickEditController.php:210 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:115 +#: src/Modules/Expirator/Controllers/BulkEditController.php:159 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:146 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:363 +#: src/Modules/Expirator/Controllers/QuickEditController.php:239 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:84 -#: src/Views/tabs.php:59 msgid "PublishPress Future" msgstr "PublishPress Future" @@ -52,23 +51,27 @@ msgstr "PublishPress" msgid "http://publishpress.com" msgstr "http://publishpress.com" -#: legacy/classes/Display.class.php:93 +#: legacy/classes/Display.class.php:94 msgid "You do not have permission to configure PublishPress Future." msgstr "Non hai i permessi per configurare PublishPress Future." -#: legacy/classes/Display.class.php:183 +#: legacy/classes/Display.class.php:108 +msgid "Debug is disabled" +msgstr "Il debug è disabilitato" + +#: legacy/classes/Display.class.php:188 msgid "Debugging Disabled" msgstr "Debug disabilitato" -#: legacy/classes/Display.class.php:188 +#: legacy/classes/Display.class.php:193 msgid "Debugging Enabled" msgstr "Debug abilitato" -#: legacy/classes/Display.class.php:196 +#: legacy/classes/Display.class.php:201 msgid "Debugging Table Emptied" msgstr "Tabella di debug svuotata" -#: legacy/classes/Display.class.php:202 +#: legacy/classes/Display.class.php:207 msgid "" "The legacy future actions migration has been enqueued and will run " "asynchronously." @@ -76,7 +79,7 @@ msgstr "" "La migrazione delle azioni Future legacy è stata messa in coda e verrà " "eseguita in modo asincrono." -#: legacy/classes/Display.class.php:211 +#: legacy/classes/Display.class.php:216 msgid "" "The legacy actions arguments restoration has been enqueued and will run " "asynchronously." @@ -84,46 +87,47 @@ msgstr "" "Il ripristino degli argomenti delle azioni legacy è stato messo in coda e " "verrà eseguito in modo asincrono." -#: legacy/classes/Display.class.php:221 +#: legacy/classes/Display.class.php:226 msgid "The database schema was fixed." msgstr "Lo schema del database è stato corretto." -#: legacy/classes/Display.class.php:226 +#: legacy/classes/Display.class.php:231 msgid "" "The database schema could not be fixed. Please, contact the support team." msgstr "" "Non è stato possibile correggere lo schema del database. Contattare il team " "di assistenza." -#: legacy/classes/Display.class.php:317 legacy/classes/Display.class.php:375 +#: legacy/classes/Display.class.php:322 legacy/classes/Display.class.php:380 msgid "Saved Options!" msgstr "Opzioni salvate!" -#: legacy/classes/Display.class.php:460 -msgid "If you like %s, please leave us a %s rating. Thank you!" -msgstr "Se %s ti piace, lasciaci una valutazione di %s!" +#. translators: %1$s is the plugin name, %2$s is the star rating markup +#: legacy/classes/Display.class.php:466 +msgid "If you like %1$s, please leave us a %2$s rating. Thank you!" +msgstr "Se ti piace %1$s, lasciaci una valutazione di %2$s. Grazie!" -#: legacy/classes/Display.class.php:475 +#: legacy/classes/Display.class.php:481 msgid "About PublishPress Future" msgstr "Informazioni su PublishPress Future" -#: legacy/classes/Display.class.php:477 +#: legacy/classes/Display.class.php:483 msgid "About" msgstr "Chi siamo" -#: legacy/classes/Display.class.php:483 +#: legacy/classes/Display.class.php:489 msgid "Future Documentation" msgstr "Documentazione di Future" -#: legacy/classes/Display.class.php:485 +#: legacy/classes/Display.class.php:491 msgid "Documentation" msgstr "Documentazione" -#: legacy/classes/Display.class.php:491 +#: legacy/classes/Display.class.php:497 msgid "Contact the PublishPress team" msgstr "Contatta il team di PublishPress" -#: legacy/classes/Display.class.php:493 +#: legacy/classes/Display.class.php:499 msgid "Contact" msgstr "Contatto" @@ -131,85 +135,155 @@ msgstr "Contatto" msgid "No taxonomies found" msgstr "Nessuna tassonomia trovata" -#: services.php:68 src/Modules/Settings/SettingsFacade.php:90 +#: services.php:70 src/Modules/Settings/SettingsFacade.php:92 msgid "l F jS, Y" msgstr "l j F Y" -#: services.php:69 src/Modules/Settings/SettingsFacade.php:91 +#: services.php:74 src/Modules/Settings/SettingsFacade.php:93 msgid "g:ia" msgstr "G:i" -#: services.php:70 src/Modules/Settings/SettingsFacade.php:92 +#: services.php:75 src/Modules/Settings/SettingsFacade.php:94 msgid "Post expires at EXPIRATIONTIME on ACTIONDATE" msgstr "L'articolo scade alle EXPIRATIONTIME del ACTIONDATE" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:113 -#: src/Modules/Expirator/Controllers/BulkEditController.php:151 -#: src/Modules/Expirator/Controllers/QuickEditController.php:209 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:114 +#: src/Modules/Expirator/Controllers/BulkEditController.php:158 +#: src/Modules/Expirator/Controllers/QuickEditController.php:238 msgid "Categories" msgstr "Categorie" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:115 -#: src/Modules/Expirator/Controllers/BulkEditController.php:153 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:331 -#: src/Modules/Expirator/Controllers/QuickEditController.php:211 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:116 +#: src/Modules/Expirator/Controllers/BulkEditController.php:160 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:364 +#: src/Modules/Expirator/Controllers/QuickEditController.php:240 msgid "Enable Future Action" msgstr "Abilita scadenza articolo" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:116 -#: src/Modules/Expirator/Controllers/BulkEditController.php:154 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:332 -#: src/Modules/Expirator/Controllers/QuickEditController.php:212 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:117 +#: src/Modules/Expirator/Controllers/BulkEditController.php:161 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:365 +#: src/Modules/Expirator/Controllers/QuickEditController.php:241 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:46 msgid "Action" msgstr "Come applicare la scadenza" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:117 -#: src/Modules/Expirator/Controllers/BulkEditController.php:157 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:335 -#: src/Modules/Expirator/Controllers/QuickEditController.php:215 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:118 +#: src/Modules/Expirator/Controllers/BulkEditController.php:164 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:368 +#: src/Modules/Expirator/Controllers/QuickEditController.php:244 msgid "Loading" msgstr "Caricamento in corso" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:118 -#: src/Modules/Expirator/Controllers/BulkEditController.php:155 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:333 -#: src/Modules/Expirator/Controllers/QuickEditController.php:213 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:119 +#: src/Modules/Expirator/Controllers/BulkEditController.php:162 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:366 +#: src/Modules/Expirator/Controllers/QuickEditController.php:242 msgid "Show Calendar" msgstr "Mostra il calendario" -#: src/Modules/Expirator/Controllers/BlockEditorController.php:119 -#: src/Modules/Expirator/Controllers/BulkEditController.php:156 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:334 -#: src/Modules/Expirator/Controllers/QuickEditController.php:214 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:120 +#: src/Modules/Expirator/Controllers/BulkEditController.php:163 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:367 +#: src/Modules/Expirator/Controllers/QuickEditController.php:243 msgid "Hide Calendar" msgstr "Nascondi il calendario" #. translators: the text between {} is the link to the settings page. #. translators: the text between {{}} is the link to the settings page. -#: src/Modules/Expirator/Controllers/BlockEditorController.php:121 -#: src/Modules/Expirator/Controllers/BulkEditController.php:159 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:337 -#: src/Modules/Expirator/Controllers/QuickEditController.php:217 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:122 +#: src/Modules/Expirator/Controllers/BulkEditController.php:166 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:370 +#: src/Modules/Expirator/Controllers/QuickEditController.php:246 msgid "Timezone is controlled by the {WordPress Settings}." msgstr "Il fuso orario è controllato dalle {Impostazioni di WordPress}." -#: src/Modules/Expirator/Controllers/BlockEditorController.php:124 -#: src/Modules/Expirator/Controllers/BulkEditController.php:162 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:340 -#: src/Modules/Expirator/Controllers/QuickEditController.php:220 +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:126 +#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:374 +#: src/Modules/Expirator/Controllers/QuickEditController.php:250 msgid "No %s found." msgstr "Nessun %s trovato." -#: src/Modules/Expirator/Controllers/BlockEditorController.php:127 -#: src/Modules/Expirator/Controllers/BulkEditController.php:166 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:343 -#: src/Modules/Expirator/Controllers/QuickEditController.php:223 +#: src/Modules/Expirator/Controllers/BlockEditorController.php:129 +#: src/Modules/Expirator/Controllers/BulkEditController.php:174 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:377 +#: src/Modules/Expirator/Controllers/QuickEditController.php:253 msgid "You must assign a taxonomy to this post type to use this feature." msgstr "" "Devi assegnare una tassonomia a questo tipo di contenuto per usare questa " "caratteristica." +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:131 +#: src/Modules/Expirator/Controllers/BulkEditController.php:181 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:379 +#: src/Modules/Expirator/Controllers/QuickEditController.php:255 +msgid "New %s" +msgstr "Nuovo %s" + +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:133 +#: src/Modules/Expirator/Controllers/BulkEditController.php:183 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:381 +#: src/Modules/Expirator/Controllers/QuickEditController.php:257 +msgid "%s to remove" +msgstr "%s da rimuovere" + +#. translators: %s is the name of the taxonomy in plural form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:135 +#: src/Modules/Expirator/Controllers/BulkEditController.php:185 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:383 +#: src/Modules/Expirator/Controllers/QuickEditController.php:259 +msgid "%s to add" +msgstr "%s da aggiungere" + +#. translators: %s is the name of the taxonomy in singular form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:137 +#: src/Modules/Expirator/Controllers/BulkEditController.php:187 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:385 +#: src/Modules/Expirator/Controllers/QuickEditController.php:261 +msgid "Search for %s" +msgstr "Ricerca per %s" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:138 +#: src/Modules/Expirator/Controllers/BulkEditController.php:188 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:386 +#: src/Modules/Expirator/Controllers/QuickEditController.php:262 +msgid "Select an action" +msgstr "Seleziona un'azione" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:139 +#: src/Modules/Expirator/Controllers/BulkEditController.php:189 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:387 +#: src/Modules/Expirator/Controllers/QuickEditController.php:263 +msgid "Select a date" +msgstr "Seleziona una data" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:140 +#: src/Modules/Expirator/Controllers/BulkEditController.php:190 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:388 +#: src/Modules/Expirator/Controllers/QuickEditController.php:264 +msgid "Date cannot be in the past" +msgstr "La data non può essere già passata" + +#. translators: %s is the name of the taxonomy in singular form. +#: src/Modules/Expirator/Controllers/BlockEditorController.php:143 +#: src/Modules/Expirator/Controllers/BulkEditController.php:193 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:391 +#: src/Modules/Expirator/Controllers/QuickEditController.php:267 +#: src/Modules/Settings/Controllers/Controller.php:243 +msgid "Please select one or more %s" +msgstr "Seleziona uno o più %s" + +#: src/Modules/Expirator/Controllers/BlockEditorController.php:146 +#: src/Modules/Expirator/Controllers/BulkEditController.php:196 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:394 +#: src/Modules/Expirator/Controllers/QuickEditController.php:270 +msgid "New status" +msgstr "Nuovo stato" + #: src/Modules/Expirator/Controllers/BulkActionController.php:82 msgid "No posts selected. Unable to sync Future Actions." msgstr "" @@ -223,36 +297,35 @@ msgstr "Azioni di Future sincronizzate correttamente con metadati articoli." msgid "Update Future Actions from Post Metadata" msgstr "Aggiorna le azioni di Future dai metadati degli articoli" -#: src/Modules/Expirator/Controllers/BulkEditController.php:165 +#: src/Modules/Expirator/Controllers/BulkEditController.php:173 msgid "Future Action Update" msgstr "Aggiornamento azioni Future" -#: src/Modules/Expirator/Controllers/BulkEditController.php:167 +#: src/Modules/Expirator/Controllers/BulkEditController.php:175 msgid "— No Change —" msgstr "— Non cambiare —" -#: src/Modules/Expirator/Controllers/BulkEditController.php:168 +#: src/Modules/Expirator/Controllers/BulkEditController.php:176 msgid "Add or update action for posts" msgstr "Aggiungi o aggiorna azione per gli articoli" -#: src/Modules/Expirator/Controllers/BulkEditController.php:169 +#: src/Modules/Expirator/Controllers/BulkEditController.php:177 msgid "Add action if none exists for posts" msgstr "Aggiungi un'azione se non ne esistono per gli articoli" -#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/BulkEditController.php:178 msgid "Update the existing actions for posts" msgstr "Aggiorna le azioni esistenti per gli articoli" -#: src/Modules/Expirator/Controllers/BulkEditController.php:171 +#: src/Modules/Expirator/Controllers/BulkEditController.php:179 msgid "Remove action from posts" msgstr "Rimuovi l'azione dagli articoli" -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:329 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:362 msgid "Category" msgstr "Categoria" -#: src/Modules/Expirator/Controllers/PluginsListController.php:39 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:107 +#: src/Modules/Expirator/Controllers/PluginsListController.php:45 msgid "Settings" msgstr "Impostazioni" @@ -260,161 +333,195 @@ msgstr "Impostazioni" msgid "Future Action" msgstr "Azione Future" +#: src/Modules/Expirator/Controllers/RestAPIController.php:196 +#: src/Modules/Expirator/Controllers/RestAPIController.php:202 +msgid "Invalid date time offset." +msgstr "Offset della data non valido." + #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:85 msgid "Future" msgstr "Future" +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:94 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:95 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:96 +#: src/Views/tabs.php:59 +msgid "Action Settings" +msgstr "Impostazioni delle azioni" + +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:103 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:104 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:43 -msgid "Future Actions" -msgstr "Azioni Future" +msgid "Scheduled Actions" +msgstr "Azioni programmate" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:174 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:172 msgid "Log format" msgstr "Formato del registro" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:181 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:179 msgid "List" msgstr "Elenco" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:190 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:188 msgid "Popup" msgstr "Popup" -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:46 +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:54 +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:52 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:52 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:52 +msgid "Status didn't change." +msgstr "Lo stato non è cambiato." + +#. translators: 1: old post status, 2: new post status +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:62 +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:60 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:60 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:60 +msgid "Status has been successfully changed from \"%1$s\" to \"%2$s\"." +msgstr "Lo stato è stato cambiado con successo da \"%1$s\" a \"%2$s\"." + +#: src/Modules/Expirator/ExpirationActions/ChangePostStatus.php:89 +msgid "Change status" +msgstr "Cambia stato" + +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:47 msgid "%s was not deleted." msgstr "%s non è stato eliminato." -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:52 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:54 msgid "%s has been successfully deleted." msgstr "%s è stato eliminato correttamente." -#: src/Modules/Expirator/ExpirationActions/DeletePost.php:74 +#: src/Modules/Expirator/ExpirationActions/DeletePost.php:76 msgid "Delete" msgstr "Elimina" -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:63 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:64 msgid "No terms were added to the %s." msgstr "Nessun termine è stato aggiunto a %s." -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:73 +#. translators: %1$s is the taxonomy label, %2$s is the post type singular label, %3$s is the list of terms added, %4$s is the list of terms on the post +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:75 msgid "" -"The following terms (%s) were added to the %s: \"%s\". The full list of " -"terms on the post is: %s." +"The following terms (%1$s) were added to the %2$s: \"%3$s\". The full list " +"of terms on the post is: %4$s." msgstr "" -"I seguenti (%s) termini sono stati aggiunti all'%s: \"%s\". La lista " -"completa dei termini nell'articolo è: %s." +"I seguenti (%1$s) termini sono stati aggiunti nell'%2$s: \"%3$s\". La lista " +"completa dei termini nell'articolo è: %4$s." -#. translators: %s is the taxonomy label (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:119 +#. translators: %s is the taxonomy name (plural) +#: src/Modules/Expirator/ExpirationActions/PostCategoryAdd.php:118 msgid "Add extra %s" msgstr "Aggiungi %s extra" -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:55 -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:55 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:56 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:56 msgid "No terms were removed from the %s." msgstr "Nessun termine è stato rimosso da %s." -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:65 +#. translators: %1$s is the taxonomy name, %2$s is the post type singular label, %3$s is the removed terms list, %4$s is the updated terms list +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:67 msgid "" -"The following terms (%s) were removed from the %s: %s. The new list of terms " -"on the post is: %s." +"The following terms (%1$s) were removed from the %2$s: %3$s. The new list of " +"terms on the post is: %4$s." msgstr "" -"I seguenti (%s) termini sono stati rimossi dall'%s: \"%s\". La nuova lista " -"dei termini nell'articolo è: %s." +"I seguenti (%1$s) termini sono stati rimossi dall'%2$s: \"%3$s\". La nuova " +"lista dei termini nell'articolo è: %4$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:113 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemove.php:112 msgid "Remove selected %s" msgstr "Rimuovi i %s selezionati" -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:65 -msgid "The following terms (%s) were removed from the %s: %s." -msgstr "I seguenti termini (%s) sono stati rimossi da %s: %s." +#. translators: %1$s is the taxonomy name, %2$s is the post type singular label, %3$s is the list of term names +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:67 +msgid "The following terms (%1$s) were removed from the %2$s: %3$s." +msgstr "I seguenti (%1$s) termini sono stati rimossi dall'%2$s: %3$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:107 +#: src/Modules/Expirator/ExpirationActions/PostCategoryRemoveAll.php:106 msgid "Remove all %s" msgstr "Rimuovi tutte le %s" -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:57 +#. translators: %s is the post type singular label +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:58 msgid "No terms were changed on the %s." msgstr "Nessun termine è stato modificato nel %s." -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:67 +#. translators: 1: taxonomy name, 2: post type singular label, 3: updated terms, 4: original terms +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:69 msgid "" -"The following terms (%s) were set to the %s: \"%s\". The old list of terms " -"on the post was: %s." +"The following terms (%1$s) were set to the %2$s: \"%3$s\". The old list of " +"terms on the post was: %4$s." msgstr "" -"I seguenti (%s) termini sono stati impostati nell'%s: \"%s\". La vecchia " -"lista dei termini nell'articolo era: %s." +"I seguenti termini (%1$s) sono stati impostati su %2$s: \"%3$s\". La vecchia " +"lista dei termini nell'articolo era: %4$s." #. translators: %s is the taxonomy name (plural) -#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:110 +#: src/Modules/Expirator/ExpirationActions/PostCategorySet.php:109 msgid "Replace all %s" msgstr "Sostituisci tutti i %s" -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:49 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:49 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:49 -msgid "Status didn't change." -msgstr "Lo stato non è cambiato." - -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:56 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:56 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:56 -msgid "Status has been successfully changed from \"%s\" to \"%s\"." -msgstr "Lo stato è stato cambiato correttamente da \"%s\" a \"%s\"." - -#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:85 -#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:85 -#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:85 +#. translators: %s: new post status +#: src/Modules/Expirator/ExpirationActions/PostStatusToDraft.php:90 +#: src/Modules/Expirator/ExpirationActions/PostStatusToPrivate.php:90 +#: src/Modules/Expirator/ExpirationActions/PostStatusToTrash.php:90 msgid "Change status to %s" msgstr "Cambia lo stato in %s" -#: src/Modules/Expirator/ExpirationActions/StickPost.php:45 -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:45 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/StickPost.php:46 +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:46 msgid "%s didn't change." msgstr "%s non è cambiato" -#: src/Modules/Expirator/ExpirationActions/StickPost.php:51 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/StickPost.php:53 msgid "%s has been added to stickies list." msgstr "%s è stato aggiunto alla lista in evidenza." -#: src/Modules/Expirator/ExpirationActions/StickPost.php:73 +#: src/Modules/Expirator/ExpirationActions/StickPost.php:75 msgid "Stick" msgstr "Metti in evidenza" -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:51 +#. translators: %s: post type singular label +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:53 msgid "%s has been removed from stickies list." msgstr "%s è stato rimosso dalla lista in evidenza." -#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:73 +#: src/Modules/Expirator/ExpirationActions/UnstickPost.php:75 msgid "Unstick" msgstr "Rimuovi in evidenza" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:410 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:463 msgid "Email is disabled" msgstr "L'email è disabilitata" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:414 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:467 msgid "Email sent" msgstr "Email inviata" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:414 +#: src/Modules/Expirator/Models/ExpirablePostModel.php:467 msgid "Email not sent" msgstr "Email non inviata" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:560 -msgid "%s. %s on %s. The post link is %s" -msgstr "%s. %s il %s. Il link dell'articolo è %s" +#. translators: %1$s: post title placeholder, %2$s: notification text, %3$s: action date placeholder, %4$s: post link placeholder +#: src/Modules/Expirator/Models/ExpirablePostModel.php:617 +msgid "%1$s. %2$s on %3$s. The post link is %4$s" +msgstr "%1$s. %2$s il %3$s. Il link dell'articolo è %4$s" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:577 +#. translators: %s is the post title +#: src/Modules/Expirator/Models/ExpirablePostModel.php:635 msgid "Future Action Complete \"%s\"" msgstr "Scadenza articolo completata \"%s\"" -#: src/Modules/Expirator/Models/ExpirablePostModel.php:580 +#. translators: 1: is the blog name, 2: the email subject +#: src/Modules/Expirator/Models/ExpirablePostModel.php:639 msgid "[%1$s] %2$s" msgstr "[%1$s] %2$s" @@ -513,8 +620,9 @@ msgid "Uninitialized" msgstr "Non inizializzato" #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:274 -msgid "Pending" -msgstr "In attesa" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:340 +msgid "Scheduled" +msgstr "Programmato" #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:275 msgid "Complete" @@ -540,77 +648,86 @@ msgstr "Tutto" msgid "Search hook, args and claim ID" msgstr "Cerca hook, argomenti e ID richiesta" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:340 -msgid "Scheduled" -msgstr "Programmato" - #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:344 msgid "Completed" msgstr "Completato" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:446 -msgid "%s: [%d] %s%s%s" -msgstr "%s: [%d] %s%s%s" +#. translators: %1$s: post type label, %2$d: post ID, %3$s: post link tag start, %4$s: post title, %5$s: post link tag end +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:449 +msgid "%1$s: [%2$d] %3$s%4$s%5$s" +msgstr "%1$s: [%2$d] %3$s%4$s%5$s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:468 +#. translators: %s is the new status +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:484 +msgid "New Status: %s" +msgstr "Nuovo stato: %s" + +#. translators: %s is the list of terms +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:492 msgid "Terms: %s" msgstr "Termini: %s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:568 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:595 msgid "View log" msgstr "Visualizza registro" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:579 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:606 msgid "Action: " msgstr "Aazione: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:585 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 msgid "Status: " msgstr "Stato: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:591 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:618 msgid "Arguments: " msgstr "Argomenti: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:597 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:624 msgid "Scheduled date: " msgstr "Data programmata: " -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:611 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:638 #: src/Views/menu-diagnostics.php:190 msgid "Date" msgstr "Data" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:639 #: src/Views/menu-debug-log.php:37 msgid "Message" msgstr "Messaggio" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:646 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:673 msgid "Async" msgstr "Asincrono" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:662 +#. translators: %s is the date interval in human readable format in the past +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:690 msgid " (%s ago)" msgstr " (%s fa)" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:668 +#. translators: %s is the date interval in human readable format in the present or future +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:696 msgid " (%s)" msgstr " (%s)" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:692 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:720 msgid "Now!" msgstr "Adesso!" #. translators: %s: time interval -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:739 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:769 msgid "Every %s" msgstr "Ogni %s" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:745 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:775 msgid "Non-repeating" msgstr "Non ripetibile" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:784 +msgid "No Future Actions." +msgstr "Nessuna azione Future" + #: src/Modules/Settings/Controllers/Controller.php:202 msgid "Default Values" msgstr "Valori predefiniti" @@ -668,7 +785,7 @@ msgstr "" "della tassonomia non saranno disponibili." #: src/Modules/Settings/Controllers/Controller.php:222 -#: src/Views/menu-general.php:161 +#: src/Views/menu-general.php:157 msgid "Who to Notify" msgstr "Chi avvisare" @@ -685,47 +802,57 @@ msgstr "" msgid "Default Date/Time Offset" msgstr "Offset data/ora predefinito" +#. translators: %1$s is the link to the PHP strtotime function documentation, %2$s and %3$s are the opening and closing code tags. Please, do not translate the date format text, since PHP will not be able to calculate using non-english terms. #: src/Modules/Settings/Controllers/Controller.php:230 msgid "" "Set the offset to use for the default action date and time. For information " "on formatting, see %1$s\n" -" . For example, you could enter %2$s+1 " -"month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Please, use only terms in English." +" . For example, you could enter %2$s+1 " +"month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Please, use only terms in English." msgstr "" -"Imposta l'offset da utilizzare per la data e l'ora di scadenza predefinite. " +"Imposta l'offset da utilizzare per la data e l'ora delle azioni predefinite. " "Per informazioni sulla formattazione, vedere %1$s\n" " . Ad esempio, si può inserire %2$s+1 " -"mese%3$s o %4$s+1 settimana 2 giorni 4 ore 2 secondi%5$s o %6$sil prossimo " -"giovedì%7$s. Comunque ricordati che puoi inserire solo valori in inglese." +"mese%3$s o %2$s+1 settimana 2 giorni 4 ore 2 secondi%3$s o %2$sil prossimo " +"giovedì%3$s. Comunque ricordati che puoi inserire solo valori in inglese." #: src/Modules/Settings/Controllers/Controller.php:235 #: src/Views/menu-general.php:81 msgid "PHP strtotime function" msgstr "Funzione PHP strtotime" -#: src/Modules/Settings/Controllers/Controller.php:246 +#: src/Modules/Settings/Controllers/Controller.php:239 msgid "Default terms:" msgstr "Termini predefiniti:" -#: src/Modules/Settings/Controllers/Controller.php:247 +#: src/Modules/Settings/Controllers/Controller.php:240 msgid "Save changes" msgstr "Salva modifiche" -#: src/Modules/Settings/Controllers/Controller.php:346 +#: src/Modules/Settings/Controllers/Controller.php:241 +msgid "Wait for the validation..." +msgstr "Aspetta, validazione in corso…" + +#: src/Modules/Settings/Controllers/Controller.php:244 +msgid "Date Preview" +msgstr "Anteprima della data" + +#: src/Modules/Settings/Controllers/Controller.php:344 msgid "Form Validation Failure: Sorry, your nonce did not verify." msgstr "Errore di convalida del modulo: il nonce non è stato verificato." -#: src/Modules/VersionNotices/Module.php:94 +#. translators: %1$s and %2$s are placeholders for the link to by the Pro version +#: src/Modules/VersionNotices/Module.php:95 msgid "" "You're using PublishPress Future Free. The Pro version has more features and " -"support. %sUpgrade to Pro%s" +"support. %1$sUpgrade to Pro%2$s" msgstr "" "Stai utilizzando PublishPress Future Free. La versione Pro ha più " -"caratteristiche e supporto. %sAggiorna a Pro%s" +"caratteristiche e supporto. %1$sAggiorna a Pro%2$s" -#: src/Modules/VersionNotices/Module.php:120 -#: src/Views/ad-banner-right-sidebar.php:33 +#: src/Modules/VersionNotices/Module.php:121 +#: src/Views/ad-banner-right-sidebar.php:35 msgid "Upgrade to Pro" msgstr "Aggiorna a Pro" @@ -738,51 +865,56 @@ msgid "Enhance the power of PublishPress Future with the Pro version:" msgstr "Aumenta le potenzialità di PublishPress Future con la versione Pro:" #: src/Views/ad-banner-right-sidebar.php:23 -msgid "Set the action date based on the post's publishing date" +msgid "Design custom workflows with multiple actions" +msgstr "Disegna flussi di lavoro personalizzati con azioni multiple" + +#: src/Views/ad-banner-right-sidebar.php:25 +msgid "Schedule actions based on the post's publishing date" msgstr "" -"Impostare la data dell'azione basata sulla data di pubblicazione " +"Programma la data dell'azione basata sulla data di pubblicazione " "dell'articolo" -#: src/Views/ad-banner-right-sidebar.php:25 +#: src/Views/ad-banner-right-sidebar.php:27 msgid "Move posts to custom statuses" msgstr "Sposta gli articoli negli stati personalizzati" -#: src/Views/ad-banner-right-sidebar.php:27 +#: src/Views/ad-banner-right-sidebar.php:29 msgid "Use other plugins to control Future Actions" msgstr "Utilizza gli altri plugin per controllare le azioni di \"Future\"" -#: src/Views/ad-banner-right-sidebar.php:29 -msgid "Fast, professional support" -msgstr "Supporto veloce e professionale" +#: src/Views/ad-banner-right-sidebar.php:31 +msgid "Enjoy fast and professional support" +msgstr "Godi di un supporto rapido e professionale" -#: src/Views/ad-banner-right-sidebar.php:41 +#: src/Views/ad-banner-right-sidebar.php:43 msgid "Need PublishPress Future Support?" msgstr "Hai bisogno del supporto di PublishPress Future?" -#: src/Views/ad-banner-right-sidebar.php:47 +#: src/Views/ad-banner-right-sidebar.php:49 msgid "If you need help or have a new feature request, let us know." msgstr "" "Se hai bisogno di aiuto o hai delle richieste di funzionalità, faccelo " "sapere." -#: src/Views/ad-banner-right-sidebar.php:53 +#: src/Views/ad-banner-right-sidebar.php:55 msgid "Request Support" msgstr "Rchiesta di supporto" -#: src/Views/ad-banner-right-sidebar.php:64 +#: src/Views/ad-banner-right-sidebar.php:66 msgid "Detailed documentation is also available on the plugin website." msgstr "" "Una documentazione dettagliata è anche disponibile sul sito web del plugin." -#: src/Views/ad-banner-right-sidebar.php:71 +#: src/Views/ad-banner-right-sidebar.php:73 msgid "View Knowledge Base" msgstr "Vedi la documentazione" -#: src/Views/expire-column.php:53 +#. translators: %1$s opens a span tag, %2$s is the action name, %3$s ends a span tag, %4$s is the a span tag, %5$s is the a span tag, %6$s is the a span tag +#: src/Views/expire-column.php:55 msgid "%1$s%2$s%3$s on %5$s%4$s%6$s" msgstr "%1$s%2$s%3$s il %5$s%4$s%6$s" -#: src/Views/expire-column.php:80 +#: src/Views/expire-column.php:92 msgid "" "Action was not scheduled due to a configuration issue. Please attempt to " "schedule it again." @@ -790,7 +922,7 @@ msgstr "" "L'azione non può essere programmata a causa di un problema di " "configurazione. Prova a riprogrammarla nuovamente." -#: src/Views/expire-column.php:85 +#: src/Views/expire-column.php:97 msgid "No future action" msgstr "Nessuna azione Future" @@ -865,8 +997,8 @@ msgstr "" "Attiva/disattiva la conservazione o l'eliminazione dei dati dopo la " "disattivazione del plugin." -#: src/Views/menu-advanced.php:175 src/Views/menu-display.php:183 -#: src/Views/menu-general.php:179 +#: src/Views/menu-advanced.php:175 src/Views/menu-display.php:184 +#: src/Views/menu-general.php:175 msgid "Save Changes" msgstr "Salva modifiche" @@ -929,8 +1061,8 @@ msgstr "Correggi database" msgid "Debug Logging" msgstr "Registrazione di debug" -#: src/Views/menu-diagnostics.php:97 src/Views/menu-display.php:92 -#: src/Views/menu-general.php:112 src/Views/menu-general.php:140 +#: src/Views/menu-diagnostics.php:97 src/Views/menu-display.php:94 +#: src/Views/menu-general.php:108 src/Views/menu-general.php:136 msgid "Enabled" msgstr "Abilitato" @@ -946,8 +1078,8 @@ msgstr "Svuota il registro di debug" msgid "View Debug Logs" msgstr "Visualizza i log di debug" -#: src/Views/menu-diagnostics.php:117 src/Views/menu-display.php:98 -#: src/Views/menu-general.php:120 src/Views/menu-general.php:149 +#: src/Views/menu-diagnostics.php:117 src/Views/menu-display.php:100 +#: src/Views/menu-general.php:116 src/Views/menu-general.php:145 msgid "Disabled" msgstr "Disabilitato" @@ -1023,7 +1155,8 @@ msgstr "Formati predefiniti" msgid "Date Format" msgstr "Formato data" -#: src/Views/menu-display.php:47 +#. translators: %s is a link to the PHP date function documentation +#: src/Views/menu-display.php:48 msgid "" "The default format to use when displaying the action date within a post " "using the shortcode or within the footer. For information on valid " @@ -1033,15 +1166,16 @@ msgstr "" "scadenza all'interno di un articolo utilizzando lo shortcode o nel footer. " "Per informazioni sulle opzioni di formattazione valide, vedere: %s." -#: src/Views/menu-display.php:51 src/Views/menu-display.php:68 +#: src/Views/menu-display.php:52 src/Views/menu-display.php:70 msgid "PHP Date Function" msgstr "Funzione data PHP" -#: src/Views/menu-display.php:57 +#: src/Views/menu-display.php:58 msgid "Time Format" msgstr "Formato ora" -#: src/Views/menu-display.php:64 +#. translators: %s is a link to the PHP date function documentation +#: src/Views/menu-display.php:66 msgid "" "The default format to use when displaying the action time within a post " "using the shortcode or within the footer. For information on valid " @@ -1051,11 +1185,11 @@ msgstr "" "all'interno di un articolo utilizzando lo shortcode o nel footer. Per " "informazioni sulle opzioni di formattazione valide, vedere: %s." -#: src/Views/menu-display.php:77 +#: src/Views/menu-display.php:79 msgid "Post Footer Display" msgstr "Visualizzazione nel footer" -#: src/Views/menu-display.php:79 +#: src/Views/menu-display.php:81 msgid "" "Enabling this below will display the action date automatically at the end of " "any post which is set to run an action." @@ -1063,11 +1197,11 @@ msgstr "" "Abilitando l'opzione seguente verrà mostrata automaticamente la data di " "scadenza alla fine di ogni articolo che è impostato per scadere." -#: src/Views/menu-display.php:86 +#: src/Views/menu-display.php:88 msgid "Show in Post Footer?" msgstr "Mostrare nel footer dell'articolo?" -#: src/Views/menu-display.php:101 +#: src/Views/menu-display.php:103 msgid "" "This will enable or disable displaying the future action date in the post " "footer." @@ -1075,11 +1209,11 @@ msgstr "" "Questo abiliterà o disabiliterà la visualizzazione della data di scadenza " "dell'articolo nel footer dello stesso." -#: src/Views/menu-display.php:109 +#: src/Views/menu-display.php:111 msgid "Footer Contents" msgstr "Contenuto del footer" -#: src/Views/menu-display.php:114 +#: src/Views/menu-display.php:116 msgid "" "Enter the text you would like to appear at the bottom of every post which " "has an action scheduled. The following placeholders will be replaced with " @@ -1089,36 +1223,41 @@ msgstr "" "impostato con una scadenza. I seguenti segnaposto verranno sostituiti con la " "data di scadenza nel modo indicato:" -#: src/Views/menu-display.php:132 +#: src/Views/menu-display.php:134 msgid "Footer Style" msgstr "Stile del footer" -#: src/Views/menu-display.php:137 +#: src/Views/menu-display.php:139 msgid "The inline css which will be used to style the footer text." msgstr "" "Il css inline che verrà utilizzato per definire lo stile del testo del " "footer." -#: src/Views/menu-display.php:140 +#: src/Views/menu-display.php:142 msgid "Example: " msgstr "Esempio: " -#: src/Views/menu-display.php:151 +#: src/Views/menu-display.php:153 msgid "Shortcode" msgstr "Shortcode" -#: src/Views/menu-display.php:153 +#. translators: %s is the shortcode code wrapped in code tags +#: src/Views/menu-display.php:156 msgid "Valid %s attributes:" msgstr "Attributi %s validi:" -#: src/Views/menu-display.php:157 +#. translators: %1$s and %2$s are code tags that wrap the shortcode attribute names +#: src/Views/menu-display.php:161 msgid "" -"%1$s - valid options are %2$sfull%3$s (default), %4$sdate%5$s, %6$stime%7$s" +"%1$stype%2$s - valid options are %1$sfull%2$s (default), %1$sdate%2$s, " +"%1$stime%2$s" msgstr "" -"%1$s - le opzioni valide sono %2$sfull%3$s (predefinito), %4$sdata%5$s, " -"%6$sora%7$s" +"%1$stipo%2$s - le opzioni valide sono %1$scompleta%2$s (predefinito), " +"%1$sdata%2$s, %1$sora%2$s" -#: src/Views/menu-display.php:171 src/Views/menu-display.php:176 +#. translators: %s is a code tag that wraps the shortcode attribute dateformat +#. translators: %s is a code tag that wraps the shortcode attribute timeformat +#: src/Views/menu-display.php:171 src/Views/menu-display.php:177 msgid "%s - format set here will override the value set on the settings page" msgstr "" "%s - il formato impostato qui sovrascrive il valore configurato nella pagina " @@ -1128,54 +1267,54 @@ msgstr "" msgid "Defaults" msgstr "Valori predefiniti" +#. translators: %1$s is the link to the PHP strtotime function documentation, %2$s and %3$s are the opening and closing code tags. Please, do not translate the date format text, since PHP will not be able to calculate using non-english terms. #: src/Views/menu-general.php:76 msgid "" "Set the offset to use for the default action date and time. For information " "on formatting, see %1$s\n" " . For example, you could enter " -"%2$s+1 month%3$s or %4$s+1 week 2 days 4 hours 2 seconds%5$s or %6$snext " -"Thursday%7$s. Please, use only terms in English." +"%2$s+1 month%3$s or %2$s+1 week 2 days 4 hours 2 seconds%3$s or %2$snext " +"Thursday%3$s. Please, use only terms in English." msgstr "" -"Imposta l'offset da utilizzare per la data e l'ora di scadenza predefinite. " +"Imposta l'offset da utilizzare per la data e l'ora delle azioni predefinite. " "Per informazioni sulla formattazione, vedere %1$s\n" -" . Ad esempio, si può inserire %2$s+1 " -"mese%3$s o %4$s+1 settimana 2 giorni 4 ore 2 secondi%5$s o %6$sil prossimo " -"giovedì%7$s. Comunque il valore dei termini può essere inserito solo in " -"inglese." +" . Ad esempio, si può inserire %2$s+1 " +"mese%3$s o %2$s+1 settimana 2 giorni 4 ore 2 secondi%3$s o %2$sil prossimo " +"giovedì%3$s. Comunque ricordati che puoi inserire solo valori in inglese." -#: src/Views/menu-general.php:95 +#: src/Views/menu-general.php:91 msgid "Email Notification" msgstr "Email di notifica scadenza" -#: src/Views/menu-general.php:97 +#: src/Views/menu-general.php:93 msgid "Whenever an action runs, an email can be sent to alert users." msgstr "" "Ogni volta che un articolo scade, un'email può essere spedita per avvisare " "gli utenti della scadenza." -#: src/Views/menu-general.php:104 +#: src/Views/menu-general.php:100 msgid "Enable Email Notification?" msgstr "Abilita notifica email?" -#: src/Views/menu-general.php:123 +#: src/Views/menu-general.php:119 msgid "" "This will enable or disable the send of email notification on future action." msgstr "" "Questo abiliterà o disabiliterà l'invio della notifica via email alla " "scadenza dell'articolo." -#: src/Views/menu-general.php:131 +#: src/Views/menu-general.php:127 msgid "Include Blog Administrators?" msgstr "Includere gli amministratori del blog?" -#: src/Views/menu-general.php:152 +#: src/Views/menu-general.php:148 msgid "" "This will include all users with the role of \"Administrator\" in the email." msgstr "" "Ciò includerà tutti gli utenti con il ruolo di \"Amministratore\" nell'email " "di scadenza dell'articolo." -#: src/Views/menu-general.php:168 +#: src/Views/menu-general.php:164 msgid "" "Enter a comma separate list of emails that you would like to be notified " "when the action runs. This will be applied to ALL post types. You can set " @@ -1210,6 +1349,9 @@ msgstr "Diagnostica e strumenti" msgid "Debug" msgstr "Debug" +#~ msgid "Pending" +#~ msgstr "In attesa" + #~ msgid "Keep all current terms and add new terms" #~ msgstr "Mantieni tutti i termini attuali e aggiungine di nuovi" diff --git a/languages/post-expirator.pot b/languages/post-expirator.pot index 2f7594bf9..e28f8cfab 100644 --- a/languages/post-expirator.pot +++ b/languages/post-expirator.pot @@ -2,14 +2,14 @@ # This file is distributed under the same license as the PublishPress Future plugin. msgid "" msgstr "" -"Project-Id-Version: PublishPress Future 3.3.1\n" +"Project-Id-Version: PublishPress Future 3.4.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2024-03-19T14:57:39+00:00\n" +"POT-Creation-Date: 2024-06-20T13:52:58+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.10.0\n" "X-Domain: post-expirator\n" @@ -17,12 +17,11 @@ msgstr "" #. Plugin Name of the plugin #: post-expirator.php #: src/Modules/Expirator/Controllers/BlockEditorController.php:115 -#: src/Modules/Expirator/Controllers/BulkEditController.php:154 +#: src/Modules/Expirator/Controllers/BulkEditController.php:159 #: src/Modules/Expirator/Controllers/ClassicEditorController.php:146 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:358 -#: src/Modules/Expirator/Controllers/QuickEditController.php:232 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:363 +#: src/Modules/Expirator/Controllers/QuickEditController.php:239 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:84 -#: src/Views/tabs.php:59 msgid "PublishPress Future" msgstr "" @@ -50,65 +49,69 @@ msgstr "" msgid "You do not have permission to configure PublishPress Future." msgstr "" -#: legacy/classes/Display.class.php:184 +#: legacy/classes/Display.class.php:108 +msgid "Debug is disabled" +msgstr "" + +#: legacy/classes/Display.class.php:188 msgid "Debugging Disabled" msgstr "" -#: legacy/classes/Display.class.php:189 +#: legacy/classes/Display.class.php:193 msgid "Debugging Enabled" msgstr "" -#: legacy/classes/Display.class.php:197 +#: legacy/classes/Display.class.php:201 msgid "Debugging Table Emptied" msgstr "" -#: legacy/classes/Display.class.php:203 +#: legacy/classes/Display.class.php:207 msgid "The legacy future actions migration has been enqueued and will run asynchronously." msgstr "" -#: legacy/classes/Display.class.php:212 +#: legacy/classes/Display.class.php:216 msgid "The legacy actions arguments restoration has been enqueued and will run asynchronously." msgstr "" -#: legacy/classes/Display.class.php:222 +#: legacy/classes/Display.class.php:226 msgid "The database schema was fixed." msgstr "" -#: legacy/classes/Display.class.php:227 +#: legacy/classes/Display.class.php:231 msgid "The database schema could not be fixed. Please, contact the support team." msgstr "" -#: legacy/classes/Display.class.php:318 -#: legacy/classes/Display.class.php:376 +#: legacy/classes/Display.class.php:322 +#: legacy/classes/Display.class.php:380 msgid "Saved Options!" msgstr "" #. translators: %1$s is the plugin name, %2$s is the star rating markup -#: legacy/classes/Display.class.php:462 +#: legacy/classes/Display.class.php:466 msgid "If you like %1$s, please leave us a %2$s rating. Thank you!" msgstr "" -#: legacy/classes/Display.class.php:477 +#: legacy/classes/Display.class.php:481 msgid "About PublishPress Future" msgstr "" -#: legacy/classes/Display.class.php:479 +#: legacy/classes/Display.class.php:483 msgid "About" msgstr "" -#: legacy/classes/Display.class.php:485 +#: legacy/classes/Display.class.php:489 msgid "Future Documentation" msgstr "" -#: legacy/classes/Display.class.php:487 +#: legacy/classes/Display.class.php:491 msgid "Documentation" msgstr "" -#: legacy/classes/Display.class.php:493 +#: legacy/classes/Display.class.php:497 msgid "Contact the PublishPress team" msgstr "" -#: legacy/classes/Display.class.php:495 +#: legacy/classes/Display.class.php:499 msgid "Contact" msgstr "" @@ -116,153 +119,153 @@ msgstr "" msgid "No taxonomies found" msgstr "" -#: services.php:69 +#: services.php:70 #: src/Modules/Settings/SettingsFacade.php:92 msgid "l F jS, Y" msgstr "" -#: services.php:73 +#: services.php:74 #: src/Modules/Settings/SettingsFacade.php:93 msgid "g:ia" msgstr "" -#: services.php:74 +#: services.php:75 #: src/Modules/Settings/SettingsFacade.php:94 msgid "Post expires at EXPIRATIONTIME on ACTIONDATE" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:114 -#: src/Modules/Expirator/Controllers/BulkEditController.php:153 -#: src/Modules/Expirator/Controllers/QuickEditController.php:231 +#: src/Modules/Expirator/Controllers/BulkEditController.php:158 +#: src/Modules/Expirator/Controllers/QuickEditController.php:238 msgid "Categories" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:116 -#: src/Modules/Expirator/Controllers/BulkEditController.php:155 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:359 -#: src/Modules/Expirator/Controllers/QuickEditController.php:233 +#: src/Modules/Expirator/Controllers/BulkEditController.php:160 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:364 +#: src/Modules/Expirator/Controllers/QuickEditController.php:240 msgid "Enable Future Action" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:117 -#: src/Modules/Expirator/Controllers/BulkEditController.php:156 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:360 -#: src/Modules/Expirator/Controllers/QuickEditController.php:234 +#: src/Modules/Expirator/Controllers/BulkEditController.php:161 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:365 +#: src/Modules/Expirator/Controllers/QuickEditController.php:241 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:46 msgid "Action" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:118 -#: src/Modules/Expirator/Controllers/BulkEditController.php:159 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:363 -#: src/Modules/Expirator/Controllers/QuickEditController.php:237 +#: src/Modules/Expirator/Controllers/BulkEditController.php:164 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:368 +#: src/Modules/Expirator/Controllers/QuickEditController.php:244 msgid "Loading" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:119 -#: src/Modules/Expirator/Controllers/BulkEditController.php:157 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:361 -#: src/Modules/Expirator/Controllers/QuickEditController.php:235 +#: src/Modules/Expirator/Controllers/BulkEditController.php:162 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:366 +#: src/Modules/Expirator/Controllers/QuickEditController.php:242 msgid "Show Calendar" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:120 -#: src/Modules/Expirator/Controllers/BulkEditController.php:158 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:362 -#: src/Modules/Expirator/Controllers/QuickEditController.php:236 +#: src/Modules/Expirator/Controllers/BulkEditController.php:163 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:367 +#: src/Modules/Expirator/Controllers/QuickEditController.php:243 msgid "Hide Calendar" msgstr "" #. translators: the text between {} is the link to the settings page. #. translators: the text between {{}} is the link to the settings page. #: src/Modules/Expirator/Controllers/BlockEditorController.php:122 -#: src/Modules/Expirator/Controllers/BulkEditController.php:161 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:365 -#: src/Modules/Expirator/Controllers/QuickEditController.php:239 +#: src/Modules/Expirator/Controllers/BulkEditController.php:166 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:370 +#: src/Modules/Expirator/Controllers/QuickEditController.php:246 msgid "Timezone is controlled by the {WordPress Settings}." msgstr "" #. translators: %s is the name of the taxonomy in plural form. #: src/Modules/Expirator/Controllers/BlockEditorController.php:126 -#: src/Modules/Expirator/Controllers/BulkEditController.php:165 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:369 -#: src/Modules/Expirator/Controllers/QuickEditController.php:243 +#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:374 +#: src/Modules/Expirator/Controllers/QuickEditController.php:250 msgid "No %s found." msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:129 -#: src/Modules/Expirator/Controllers/BulkEditController.php:169 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:372 -#: src/Modules/Expirator/Controllers/QuickEditController.php:246 +#: src/Modules/Expirator/Controllers/BulkEditController.php:174 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:377 +#: src/Modules/Expirator/Controllers/QuickEditController.php:253 msgid "You must assign a taxonomy to this post type to use this feature." msgstr "" #. translators: %s is the name of the taxonomy in plural form. #: src/Modules/Expirator/Controllers/BlockEditorController.php:131 -#: src/Modules/Expirator/Controllers/BulkEditController.php:176 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:374 -#: src/Modules/Expirator/Controllers/QuickEditController.php:248 +#: src/Modules/Expirator/Controllers/BulkEditController.php:181 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:379 +#: src/Modules/Expirator/Controllers/QuickEditController.php:255 msgid "New %s" msgstr "" #. translators: %s is the name of the taxonomy in plural form. #: src/Modules/Expirator/Controllers/BlockEditorController.php:133 -#: src/Modules/Expirator/Controllers/BulkEditController.php:178 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:376 -#: src/Modules/Expirator/Controllers/QuickEditController.php:250 +#: src/Modules/Expirator/Controllers/BulkEditController.php:183 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:381 +#: src/Modules/Expirator/Controllers/QuickEditController.php:257 msgid "%s to remove" msgstr "" #. translators: %s is the name of the taxonomy in plural form. #: src/Modules/Expirator/Controllers/BlockEditorController.php:135 -#: src/Modules/Expirator/Controllers/BulkEditController.php:180 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:378 -#: src/Modules/Expirator/Controllers/QuickEditController.php:252 +#: src/Modules/Expirator/Controllers/BulkEditController.php:185 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:383 +#: src/Modules/Expirator/Controllers/QuickEditController.php:259 msgid "%s to add" msgstr "" #. translators: %s is the name of the taxonomy in singular form. #: src/Modules/Expirator/Controllers/BlockEditorController.php:137 -#: src/Modules/Expirator/Controllers/BulkEditController.php:182 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:380 -#: src/Modules/Expirator/Controllers/QuickEditController.php:254 +#: src/Modules/Expirator/Controllers/BulkEditController.php:187 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:385 +#: src/Modules/Expirator/Controllers/QuickEditController.php:261 msgid "Search for %s" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:138 -#: src/Modules/Expirator/Controllers/BulkEditController.php:183 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:381 -#: src/Modules/Expirator/Controllers/QuickEditController.php:255 +#: src/Modules/Expirator/Controllers/BulkEditController.php:188 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:386 +#: src/Modules/Expirator/Controllers/QuickEditController.php:262 msgid "Select an action" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:139 -#: src/Modules/Expirator/Controllers/BulkEditController.php:184 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:382 -#: src/Modules/Expirator/Controllers/QuickEditController.php:256 +#: src/Modules/Expirator/Controllers/BulkEditController.php:189 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:387 +#: src/Modules/Expirator/Controllers/QuickEditController.php:263 msgid "Select a date" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:140 -#: src/Modules/Expirator/Controllers/BulkEditController.php:185 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:383 -#: src/Modules/Expirator/Controllers/QuickEditController.php:257 +#: src/Modules/Expirator/Controllers/BulkEditController.php:190 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:388 +#: src/Modules/Expirator/Controllers/QuickEditController.php:264 msgid "Date cannot be in the past" msgstr "" #. translators: %s is the name of the taxonomy in singular form. #: src/Modules/Expirator/Controllers/BlockEditorController.php:143 -#: src/Modules/Expirator/Controllers/BulkEditController.php:188 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:386 -#: src/Modules/Expirator/Controllers/QuickEditController.php:260 +#: src/Modules/Expirator/Controllers/BulkEditController.php:193 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:391 +#: src/Modules/Expirator/Controllers/QuickEditController.php:267 #: src/Modules/Settings/Controllers/Controller.php:243 msgid "Please select one or more %s" msgstr "" #: src/Modules/Expirator/Controllers/BlockEditorController.php:146 -#: src/Modules/Expirator/Controllers/BulkEditController.php:191 -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:389 -#: src/Modules/Expirator/Controllers/QuickEditController.php:263 +#: src/Modules/Expirator/Controllers/BulkEditController.php:196 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:394 +#: src/Modules/Expirator/Controllers/QuickEditController.php:270 msgid "New status" msgstr "" @@ -278,36 +281,35 @@ msgstr "" msgid "Update Future Actions from Post Metadata" msgstr "" -#: src/Modules/Expirator/Controllers/BulkEditController.php:168 +#: src/Modules/Expirator/Controllers/BulkEditController.php:173 msgid "Future Action Update" msgstr "" -#: src/Modules/Expirator/Controllers/BulkEditController.php:170 +#: src/Modules/Expirator/Controllers/BulkEditController.php:175 msgid "— No Change —" msgstr "" -#: src/Modules/Expirator/Controllers/BulkEditController.php:171 +#: src/Modules/Expirator/Controllers/BulkEditController.php:176 msgid "Add or update action for posts" msgstr "" -#: src/Modules/Expirator/Controllers/BulkEditController.php:172 +#: src/Modules/Expirator/Controllers/BulkEditController.php:177 msgid "Add action if none exists for posts" msgstr "" -#: src/Modules/Expirator/Controllers/BulkEditController.php:173 +#: src/Modules/Expirator/Controllers/BulkEditController.php:178 msgid "Update the existing actions for posts" msgstr "" -#: src/Modules/Expirator/Controllers/BulkEditController.php:174 +#: src/Modules/Expirator/Controllers/BulkEditController.php:179 msgid "Remove action from posts" msgstr "" -#: src/Modules/Expirator/Controllers/ClassicEditorController.php:357 +#: src/Modules/Expirator/Controllers/ClassicEditorController.php:362 msgid "Category" msgstr "" -#: src/Modules/Expirator/Controllers/PluginsListController.php:39 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:107 +#: src/Modules/Expirator/Controllers/PluginsListController.php:45 msgid "Settings" msgstr "" @@ -324,21 +326,27 @@ msgstr "" msgid "Future" msgstr "" +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:94 #: src/Modules/Expirator/Controllers/ScheduledActionsController.php:95 -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:96 +#: src/Views/tabs.php:59 +msgid "Action Settings" +msgstr "" + +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:103 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:104 #: src/Modules/Expirator/Tables/ScheduledActionsTable.php:43 -msgid "Future Actions" +msgid "Scheduled Actions" msgstr "" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:174 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:172 msgid "Log format" msgstr "" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:181 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:179 msgid "List" msgstr "" -#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:190 +#: src/Modules/Expirator/Controllers/ScheduledActionsController.php:188 msgid "Popup" msgstr "" @@ -616,77 +624,81 @@ msgid "Completed" msgstr "" #. translators: %1$s: post type label, %2$d: post ID, %3$s: post link tag start, %4$s: post title, %5$s: post link tag end -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:446 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:449 msgid "%1$s: [%2$d] %3$s%4$s%5$s" msgstr "" #. translators: %s is the new status -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:478 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:484 msgid "New Status: %s" msgstr "" #. translators: %s is the list of terms -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:486 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:492 msgid "Terms: %s" msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:586 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:595 msgid "View log" msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:597 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:606 msgid "Action: " msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:603 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:612 msgid "Status: " msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:609 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:618 msgid "Arguments: " msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:615 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:624 msgid "Scheduled date: " msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:629 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:638 #: src/Views/menu-diagnostics.php:190 msgid "Date" msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:630 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:639 #: src/Views/menu-debug-log.php:37 msgid "Message" msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:664 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:673 msgid "Async" msgstr "" #. translators: %s is the date interval in human readable format in the past -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:681 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:690 msgid " (%s ago)" msgstr "" #. translators: %s is the date interval in human readable format in the present or future -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:687 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:696 msgid " (%s)" msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:711 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:720 msgid "Now!" msgstr "" #. translators: %s: time interval -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:760 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:769 msgid "Every %s" msgstr "" -#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:766 +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:775 msgid "Non-repeating" msgstr "" +#: src/Modules/Expirator/Tables/ScheduledActionsTable.php:784 +msgid "No Future Actions." +msgstr "" + #: src/Modules/Settings/Controllers/Controller.php:202 msgid "Default Values" msgstr "" @@ -784,7 +796,7 @@ msgid "You're using PublishPress Future Free. The Pro version has more features msgstr "" #: src/Modules/VersionNotices/Module.php:121 -#: src/Views/ad-banner-right-sidebar.php:33 +#: src/Views/ad-banner-right-sidebar.php:35 msgid "Upgrade to Pro" msgstr "" @@ -797,38 +809,42 @@ msgid "Enhance the power of PublishPress Future with the Pro version:" msgstr "" #: src/Views/ad-banner-right-sidebar.php:23 -msgid "Set the action date based on the post's publishing date" +msgid "Design custom workflows with multiple actions" msgstr "" #: src/Views/ad-banner-right-sidebar.php:25 -msgid "Move posts to custom statuses" +msgid "Schedule actions based on the post's publishing date" msgstr "" #: src/Views/ad-banner-right-sidebar.php:27 -msgid "Use other plugins to control Future Actions" +msgid "Move posts to custom statuses" msgstr "" #: src/Views/ad-banner-right-sidebar.php:29 -msgid "Fast, professional support" +msgid "Use other plugins to control Future Actions" +msgstr "" + +#: src/Views/ad-banner-right-sidebar.php:31 +msgid "Enjoy fast and professional support" msgstr "" -#: src/Views/ad-banner-right-sidebar.php:41 +#: src/Views/ad-banner-right-sidebar.php:43 msgid "Need PublishPress Future Support?" msgstr "" -#: src/Views/ad-banner-right-sidebar.php:47 +#: src/Views/ad-banner-right-sidebar.php:49 msgid "If you need help or have a new feature request, let us know." msgstr "" -#: src/Views/ad-banner-right-sidebar.php:53 +#: src/Views/ad-banner-right-sidebar.php:55 msgid "Request Support" msgstr "" -#: src/Views/ad-banner-right-sidebar.php:64 +#: src/Views/ad-banner-right-sidebar.php:66 msgid "Detailed documentation is also available on the plugin website." msgstr "" -#: src/Views/ad-banner-right-sidebar.php:71 +#: src/Views/ad-banner-right-sidebar.php:73 msgid "View Knowledge Base" msgstr "" diff --git a/legacy/classes/Display.class.php b/legacy/classes/Display.class.php index 1b1391ce1..371e6f427 100644 --- a/legacy/classes/Display.class.php +++ b/legacy/classes/Display.class.php @@ -94,12 +94,21 @@ public function settings_tabs() wp_die(esc_html__('You do not have permission to configure PublishPress Future.', 'post-expirator')); } - $allowed_tabs = ['defaults', 'general', 'display', 'advanced', 'diagnostics', 'viewdebug', ]; + // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : ''; + $allowed_tabs = ['defaults', 'general', 'display', 'advanced', 'diagnostics', 'viewdebug', ]; $allowed_tabs = $this->hooks->applyFilters(SettingsHooksAbstract::FILTER_ALLOWED_TABS, $allowed_tabs); - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : ''; + $debugIsEnabled = (bool)$this->hooks->applyFilters(SettingsHooksAbstract::FILTER_DEBUG_ENABLED, false); + if (! $debugIsEnabled) { + unset($allowed_tabs['viewdebug']); + + if ($tab === 'viewdebug') { + wp_die(esc_html__('Debug is disabled', 'post-expirator')); + } + } + if (empty($tab) || ! in_array($tab, $allowed_tabs, true)) { $tab = 'defaults'; } @@ -108,11 +117,6 @@ public function settings_tabs() $this->load_tab($tab); $html = ob_get_clean(); - $debugIsEnabled = (bool)$this->hooks->applyFilters(SettingsHooksAbstract::FILTER_DEBUG_ENABLED, false); - if (! $debugIsEnabled) { - unset($allowed_tabs['viewdebug']); - } - $this->render_template('tabs', ['tabs' => $allowed_tabs, 'html' => $html, 'tab' => $tab]); $this->publishpress_footer(); diff --git a/legacy/classes/Facade.class.php b/legacy/classes/Facade.class.php index bf4b543ed..ddb47c68c 100644 --- a/legacy/classes/Facade.class.php +++ b/legacy/classes/Facade.class.php @@ -86,6 +86,9 @@ public static function get_expire_principles($postId) $container = Container::getInstance(); $factory = $container->get(ServicesAbstract::ACTION_ARGS_MODEL_FACTORY); + /** + * @var \PublishPress\Future\Modules\Expirator\Interfaces\ActionArgsModelInterface + */ $actionArgsModel = $factory(); $actionArgsModel->loadByPostId($postId); diff --git a/lib/vendor/composer/installed.php b/lib/vendor/composer/installed.php index eafa59032..9abb044d2 100644 --- a/lib/vendor/composer/installed.php +++ b/lib/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => '__root__', - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'ea90a331d111b404660cc7588477e768df6d3a57', + 'pretty_version' => 'dev-3.3-branch', + 'version' => 'dev-3.3-branch', + 'reference' => '6fbcea1be00439b1fbbece3f3c66f3f2050f4cfd', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -11,9 +11,9 @@ ), 'versions' => array( '__root__' => array( - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'ea90a331d111b404660cc7588477e768df6d3a57', + 'pretty_version' => 'dev-3.3-branch', + 'version' => 'dev-3.3-branch', + 'reference' => '6fbcea1be00439b1fbbece3f3c66f3f2050f4cfd', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/package.json b/package.json index effbdfabf..0cbd2349e 100644 --- a/package.json +++ b/package.json @@ -17,13 +17,13 @@ "dependencies": { "@preact/signals-react": "^1.2.2", "@wordpress/api-fetch": "^6.22.0", - "@wordpress/components": "^23.2.0", "@wordpress/hooks": "^3.27.0", "@wordpress/url": "^3.28.0", "react-select": "^5.7.0" }, "devDependencies": { "@wordpress/scripts": "^25.2.0", + "ws": "^8.17.1", "babel-cli": "^6.26.0", "babel-core": "^6.26.3", "babel-loader": "^7.1.5", @@ -33,13 +33,16 @@ "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", + "@babel/traverse": "^7.24.7", "braces": "^3.0.3", "child_process": "^1.0.2", "inquirer": "^9.1.5", "inquirer-autocomplete-prompt": "^3.0.0", "inquirer-interrupted-prompt": "^2.0.1", "node-ray": "^1.19.4", - "webpack": "^5.75.0", - "webpack-cli": "^5.0.1" + "webpack": "^5.90.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-cli": "^5.1.4", + "axios": "^1.6.0" } } diff --git a/post-expirator.php b/post-expirator.php index 6e2312c9b..ba1a7615a 100644 --- a/post-expirator.php +++ b/post-expirator.php @@ -4,7 +4,7 @@ * Plugin URI: http://wordpress.org/extend/plugins/post-expirator/ * Description: PublishPress Future allows you to schedule automatic changes to posts, pages and other content types. * Author: PublishPress - * Version: 3.3.1 + * Version: 3.4.0 * Author URI: http://publishpress.com * Text Domain: post-expirator * Domain Path: /languages @@ -18,7 +18,6 @@ use PublishPress\Future\Core\Autoloader; use PublishPress\Future\Core\DI\Container; use PublishPress\Future\Core\DI\ServicesAbstract; -use PublishPress\Future\Core\Plugin; use PublishPress\Future\Framework\WordPress\Facade\HooksFacade; defined('ABSPATH') or die('Direct access not allowed.'); @@ -50,7 +49,7 @@ } if (! defined('PUBLISHPRESS_FUTURE_VERSION')) { - define('PUBLISHPRESS_FUTURE_VERSION', '3.3.1'); + define('PUBLISHPRESS_FUTURE_VERSION', '3.4.0'); } if (! defined('PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH')) { @@ -103,20 +102,11 @@ function loadDependencies() define('PUBLISHPRESS_FUTURE_LOADED_DEPENDENCIES', true); } - HooksFacade::registerActivationHook( - __FILE__, - function () { - Plugin::onActivate(); - } - ); + require_once __DIR__ . '/src/install.php'; + require_once __DIR__ . '/src/uninstall.php'; - HooksFacade::registerDeactivationHook( - __FILE__, - function () { - loadDependencies(); - Plugin::onDeactivate(); - } - ); + HooksFacade::registerActivationHook(__FILE__, __NAMESPACE__ . '\\install'); + HooksFacade::registerDeactivationHook(__FILE__, __NAMESPACE__ . '\\uninstall'); add_action('init', function () { try { diff --git a/readme.txt b/readme.txt index 1bd8980fa..d5ac6a588 100644 --- a/readme.txt +++ b/readme.txt @@ -7,7 +7,7 @@ Requires at least: 6.1 Requires PHP: 7.2.5 Tested up to: 6.5 License: GPLv2 or later -Stable tag: 3.3.1 +Stable tag: 3.4.0 PublishPress Future can make scheduled changes to your content. You can unpublish posts, move posts to a new status, update the categories, and more. @@ -164,6 +164,29 @@ Yes, the PublishPress Future plugin allows you to schedule automatic changes to == Changelog == +The full changelog can be found on [GitHub](https://github.com/publishpress/PublishPress-Future/blob/main/CHANGELOG.md). + += [3.4.0] - 19 Jun, 2024 = + +* ADDED: In the JS context, implemented a way to extend the future action panel using SlotFill `FutureActionPanelAfterActionField` and setting extra fields to the panel, right after the action field; +* ADDED: Add a new filter to allow filtering the options of the future action being scheduled: `publishpressfuture_prepare_post_expiration_opts`; +* ADDED: Add method `scheduleRecurringAction` to the `CronToWooActionSchedulerAdapter` to schedule recurring action; +* ADDED: Add method `scheduleAsyncAction` to the `CronToWooActionSchedulerAdapter` to schedule async action; +* ADDED: In the JS context, added the slot `FutureActionPanelTop` to the beginning of the future panel; +* CHANGED: Added `$unique` and `$priority` arguments to the `scheduleSingleAction` method in the `CronToWooActionSchedulerAdapter` class; +* CHANGED: Method `scheduleRecurringAction` renamed to `scheduleRecurringActionInSeconds` in the `CronToWooActionSchedulerAdapter` class; +* CHANGED: Added argument `$clearOnlyPendingActions` to the method signature `clearScheduledAction` to the `CronInterface` interface; +* CHANGED: Changed the method `clearScheduledAction` in the class `CronToWooActionSchedulerAdapter` adding new argument `$clearOnlyPendingActions`, allowing to remove running actions; +* CHANGED: The plugin activation and deactivation callback functions were moved from the main file to independent files; +* CHANGED: Change the admin menu names for clarity; +* CHANGED: Update the promo sidebar for mentioning the Actions Workflow feature; +* FIXED: Fix error when quick-edit data is not available, #730; +* FIXED: Fix dependency of the enqueued scripts for the future action box. Add 'wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities', 'wp-plugins' as dependencies; +* FIXED: Updated ES, FR and IT translations, #698; +* FIXED: Redirects to the settings page after activating the plugin, #764; +* FIXED: Fix access to the View Debug settings tab when debug is disabled; +* FIXED: Fix the position of the "Upgrade to Pro" and "Settings" menu items in the admin bar; + = [3.3.1] - 19 Mar, 2024 = * ADDED: Add validation for the date and time offset in the settings page, #683; @@ -222,650 +245,3 @@ Yes, the PublishPress Future plugin allows you to schedule automatic changes to * FIXED: Added back support for reusable blocks, #200; * FIXED: Updated the language files, #653; * FIXED: Fix error 404 when activating future action on a post type that has no taxonomy registered, #662; - -= [3.1.7] - 04 Jan, 2024 = - -* FIXED: Fix compatibility with plugins like "Hide Categories and Products for Woocommerce", making sure terms are not hidden in the taxonomy field, #639; -* FIXED: Fix the terms select field in the settings page, expanding it on focus, #638; -* FIXED: Fix the fatal error when hook `add_meta_boxes` didn't receive a `WP_Post` instance as parameter, #640; -* FIXED: Fix issue with the "NaN" categories in the classic editor, #647; -* FIXED: Fix issue with accents on the taxonomy field in the settings, #642; - -= [3.1.6] - 20 Dec, 2023 = - -* ADDED: Add a new setting to select the time format in the date picker component, #626; -* CHANGED: Stick the library woocommerce/action-scheduler on version 3.7.0, so we don't force WP min to 6.2; -* CHANGED: Min WP version is now 6.1, #627; -* CHANGED: The field to select terms now expands when the user focus on it, not requiring to type a search text, #633; -* CHANGED: Increase the limit of items displayed i nthe the field to select terms. It shows up to 1000 items now, #633; -* FIXED: Fix support for WP between 6.1 and 6.4, #625; -* FIXED: Fix the search of posts in the posts lists, #620; -* FIXED: Fix classic meta box when using Classic Editor plugin with the classic editor as default, #624; -* FIXED: Fix default date for new posts, #623; -* FIXED: Fix the quick edit form and future action column for pages, #618; -* FIXED: Fix support to custom taxonomies that are not showed in the Rest API, #629; - -= [3.1.5] - 14 Dec, 2023 = - -* FIXED: Fix array_map(): Argument must be of type array, string given, #606; -* FIXED: Remove broken and invalid setting to use classic metabox, #604; -* FIXED: Prevent a PHP warning in the posts screen if the selected term do not exists anymore, #612; -* FIXED: Update the ES, IT and FR translations, #609; - -= [3.1.4] - 13 Dec, 2023 = - -* ADDED: Taxonomy term field now supports adding a new term by typing a new value; -* ADDED: Add a button to toggle the calendar on the future action panels. Quick/Bulk edit are collapsed by default, #583; -* ADDED: Display the taxonomy name in the future action panels instead of showing "Taxonomy", #584; -* CHANGED: Refactor all the future action panels to use the same React components, fixing the inconsistency between the panels, #572; -* CHANGED: Removed external dependency of the React Select library, using now the WordPress internal library; -* CHANGED: In the Action field on Post Type settings, the taxonomy related actions are only displayed if the post type has any term registered; -* CHANGED: Change the order of fields in the future action panels, moving action and taxonomy at the beginning -* CHANGED: The method `ExpirationScheduler::schedule` now automatically converts the date to UTC before scheduling the action; -* CHANGED: The action `publishpressfuture_schedule_expiration` now receives the date in the local site timezone; -* CHANGED: Update the library woocommerce/action-scheduler from 3.6.4 to 3.7.0; -* CHANGED: Future action data stored in the args column on the table _ppfuture_action_args is now camelCase; -* CHANGED: Change the Database Schema check to verify and display multiple errors at once. The Fix Database should fix them all; -* DEPRECATED: Deprecate the calss `Walker_PostExpirator_Category_Checklist`; -* DEPRECATED: Deprecate the function `postexpirator_get_post_types`, moving the logic to the model `PostTypesModel`; -* FIXED: Fix fatal error when clicking on "Post Types" tab in the settings when using PT-Br language, #567; -* FIXED: Stop hardcoding the DB engine when creating the table for action arguments, #565 [Thanks to @dave-p]; -* FIXED: Simple quotes were not being removed from the future action date offset setting, #566; -* FIXED: Update Spanish, Franch and Italian translations, #551; -* FIXED: Improved data sanitization on the plugin, #571; -* FIXED: Fix consistency on data saved on post meta from different editors, quick-edit and bulk-edit. Specially related to the post meta "_expiration-date-options", #573; -* FIXED: Strange years value in the date selection, #568; -* FIXED: Fix the action "Remove selected term" for authors role, #550; -* FIXED: Fix the post type settings page not loading the saved settings after a page refresh triggered by the save button, #576; -* FIXED: Fix PHP warning: Creation of dynamic property $hooks in NoticeFacade.php, #580; -* FIXED: Fix call to undefined function ...Expirator\Adapters\as_has_scheduled_action, #574 -* FIXED: Fix PHP warning: Class ...Expirator\Models\DefaultDataModel not found in ...legacy/deprecated.php, #582; -* FIXED: Update the X/Twitter icon on the footer of admin pages, #583; -* FIXED: Fix the use of custom taxonomies on the future action panels, #585; -* FIXED: Fix call to the method `manageUpgrade on ...Core\Plugin; -* FIXED: Fix action for deleting posts without sending to trash, #593; -* FIXED: Fix action that sends a port to trash, to trigger the expected actions, #597; -* FIXED: Fix empty cells on Actions table when Pro plugin is uninstalled and Free is activated, #595; -* REMOVED: Internal function `postexpirator_add_footer` was removed, and the footer is now handled in the `ContentController` class; -* REMOVED: Internal function `postexpirator_get_footer_text` was removed; - -= [3.1.3] - 09 Nov, 2023 = - -* FIXED: Fix JS error Cannot read properties of undefined (reading ‘length’) on the block editor, #561; - -= [3.1.2] - 07 Nov, 2023 = - -* CHANGED: Update the library woocommerce/action-scheduler from 3.6.3 to 3.6.4; -* FIXED: Fix compatibility with WP 6.4 removing dependency of lodash, #555; - -= [3.1.1] - 11 Oct, 2023 = - -* ADDED: Add new bulk action for posts to update future action scheduler based on post's metadata, #538; -* DEPRECATED: Deprecate class PublishPress\Future\Core\DI\ContainerNotInitializedException; -* DEPRECATED: Deprecate class PublishPress\Future\Core\DI\ServiceProvider; -* DEPRECATED: Deprecate interface PublishPress\Future\Core\DI\ServiceProviderInterface; -* FIXED: Fix compatibility with 3rd party plugins that import posts, #538; -* FIXED: Fix JS error when admin user has no permissions, #533 (Thanks to @raphaelheying); -* FIXED: Fix missed post link on the email notification, or actions log, when the post is deleted, #507; -* FIXED: Fix plugin activation hook not running on plugin activation, #539; -* REMOVED: Remove tooltip from the "Expires" column in the posts list, #511; - -= [3.1.0] - 06 Sep, 2023 = - -* FIXED: Fix compatibility with Composer-based installations, using prefixed libraries, #522; -* FIXED: Fix notice about using `FILTER_SANITIZE_STRING` on PHP 8, #525; -* CHANGED: Remove the file `define-base-path.php`. The constant `PUBLISHPRESS_FUTURE_BASE_PATH` is deprecated and is now defined in the main plugin file; -* CHANGED: Internal dependencies moved from `vendor` to `lib/vendor`, #522; -* CHANGED: Replaced Pimple library with a prefixed version of the library to avoid conflicts with other plugins, #522; -* CHANGED: Replaced Psr/Container library with a prefixed version of the library to avoid conflicts with other plugins, #522; -* CHANGED: Change min PHP version to 7.2.5. If not compatible, the plugin will not execute; -* CHANGED: Change min WP version to 5.5. If not compatible, the plugin will not execute; -* CHANGED: Updated internal libraries to the latest versions; -* CHANGED: Changed the priority of the hook `plugins_loaded` on the main plugin file from 10 to 5, #522; -* CHANGED: Removed the `vendor-locator-future` library. Internal vendor is now on a fixed path, `lib/vendor`, #522; -* CHANGED: Deprecated constant `PUBLISHPRESS_FUTURE_VENDOR_PATH` in favor of `PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH`; -* CHANGED: Update Action Scheduler library to 3.6.2; -* CHANGED: Update the .pot and .mo files; - -= [3.0.6] - 26 Jul, 2023 = - -* FIXED: Fix JavaScript error on the block editor: Uncaught TypeError: Cannot read properties of undefined (reading 'indexOf'), #517; -* FIXED: Fix fatal error on content with shortcode: Call to undefined method ...ExpirablePostModel::getExpiratigetExpirationDateAsUnixTimeonDate(), #516; - -= [3.0.5] - 25 Jul, 2023 = - -* ADDED: Add a setting field to control the style of the Future Action column on posts lists (Advanced tab), #482; -* FIXED: Fix the message that prevented to select terms for a future action, #488; -* FIXED: Fix the taxonomy field in the Post Types settings page, that was not visible unless you select a taxonomy related default action, #496; -* FIXED: Fix the space after the "reset" button on the calendar field, in the block editor, #465; -* FIXED: Fix error displayed when trying to deactivate the plugin with "Preserve data after deactivating the plugin" as "Delete data", #499; -* FIXED: Fix DB error when trying to create the action args table, due to DESCRIBE query on a table that do not exists yet, #450; -* FIXED: Fix default expiration date time for post type on different timezones; -* FIXED: Fix date and time on block editor with different timezones, #498; -* FIXED: Fix missed title and post type info in emails or logs when the post is deleted, #507; -* FIXED: Notice: Undefined variable: gmt_schedule_display_string, in the columns in the Future Action screens, #504; -* FIXED: Update ES, FR, and IT translations, #509; -* CHANGED: Improve the label for the terms field in the block editor panel, #483; -* CHANGED: Merge the settings tabs "Diagnostics" and "Tools", #501; -* CHANGED: Update the .pot file; -* CHANGED: Renamed the settings tab "Defaults" to "General"; -* CHANGED: Added some instructions comments to translators; -* CHANGED: The default date interval for global and post type settings now only accepts EN format, $495; -* CHANGED: Add log message when date time offset is invalid when trying to schedule a future action; -* CHANGED: Change the date format on "Scheduled Date" column in the Future Actions list to use the site timezone and not GMT date. GMT date is now displayed on the tooltip; -* CHANGED: Changed text and buttons labels on Diagnostics and Tools settings tab, #506; -* CHANGED: Add method getExpirationDateAsUnixTime to the ExpirablePostModel class; -* CHANGED: Changed method getTitle on ExpirablePostModel to return title from args if post is not found anymore; -* CHANGED: Changed method getPostType on ExpirablePostModel to return post type from args if post is not found anymore; -* DEPRECATED: The methods getDefaultDate and getDefaultDateCustom on SettingsFacade class are deprecated; - -= [3.0.4] - 04 Jul, 2023 = - -* FIXED: Fix "Save changes" notification on block editor when post is not edited, #449; -* FIXED: Fix unchecked category on classic editor when editing a post with future action enabled, #481; -* FIXED: Update French translation, #473; -* FIXED: Fix the plugin initialization to properly load the plugin text domain, and CLI commands; -* FIXED: Fix the start of the week on the calendar, honoring the site setting, #484; -* FIXED: Fix the taxonomy field for custom post types; -* FIXED: Fix consistency in the message in the block editor, compared to classic editor, when no taxonomy is selected; -* FIXED: Update the .pot file; -* CHANGED: The name of the block editor component changed from `postexpirator-sidebar` to `publishpress-future-action`, #449; -* CHANGED: Update the Action Scheduler library from 3.6.0 to 3.6.1; -* REMOVED: Remove internal function `postexpirator_init`; - -= [3.0.3] - 20 Jun, 2023 = - -* FIXED: Error on the block editor: The "postexpirator-sidebar" plugin has encountered an error and cannot be rendered, #475; -* FIXED: Error message in the future action column: Action scheduled but its definition is not available anymore, #474; -* CHANGED: Update message when future action data is corrupted for the post; - -= [3.0.2] - 19 Jun, 2023 = - -* FIXED: Fix warning displayed in the classic editor if a taxonomy is not properly selected, #453; -* FIXED: Fix typo in a message when a taxonomy is not properly selected; -* FIXED: Fix a blank post type label in the Arguments column in the Actions Log list when a post type is not registered anymore; -* FIXED: FIx error message in the Future Action column if the action is not found anymore, #454; -* FIXED: Fix default date/time offset, #455; -* FIXED: Fix label "Action" on a few screens, #458; -* FIXED: Fix broken screen due by a long select field in Classic Editor, #458; -* FIXED: Fix Future action ordering not working on "Posts" screen, #462; -* FIXED: Update .pot file and some translation strings; - -= [3.0.1] - 15 Jun, 2023 = - -* ADDED: Add diagnostic check for DB schema in the Settings page; -* CHANGED: Changed privacy for method PublishPress\Future\Framework\WordPress\Models\PostModel::getPostInstance from `private` to `protected`; -* FIXED: Restore future action data on post meta fields, #452; -* FIXED: Fix PHP warning about undefined index 'categoryTaxonomy'; -* FIXED: Fix auto-enabled future action on new posts, #447; -* FIXED: Fix default future action type on custom post types; -* FIXED: First letter of future actions log is not capitalized on some messages in the popup view; -* FIXED: Fix log message when actions related to taxonomy terms run; - -= [3.0.0] - 13 Jun, 2023 = - -* ADDED: Add Dutch translation files, #429; -* CHANGED: Namespace has been changed from `PublishPressFuture` to `PublishPress\Future`; -* CHANGED: Functions, autoload, class aliases and class loading have been moved into a hook for the action `plugins_loaded` with priority 10; -* CHANGED: Post expiration queue migrated from WP Cron to Action Scheduler library from WooCommerce, #149; -* CHANGED: Deprecate hook "publishpressfuture_expire" in favor of "publishpress_future/run_workflow". New hook has two arguments: postId and action, #149; -* CHANGED: Changed the label "Type" to "Action" in the bulk edit field; -* CHANGED: Change the capability checked before authorizing API usage. Changed from `edit_posts` to `publishpress_future_expire_post`; -* CHANGED: Added the old post status in the log message when the post expires changing status; -* CHANGED: Change the text of options in the bulk edit field, for more clearance; -* CHANGED: Change text of Post Types settings tab; -* CHANGED: FIXED: Replace "Expiry" with "Actions", #392; -* FIXED: Fix PHP warning about undefined index 'terms', #412; -* FIXED: Fix error on block editor: can't read "length" of undefined; -* FIXED: Fix escaping on a few admin text; -* FIXED: Fix text and positions of expiration fields in the bulk edit form; -* FIXED: Fix email notifications, #414; -* FIXED: Fix PHP Fatal error: Uncaught TypeError: gmdate(): Argument #2 ($timestamp) must be of type ?int, #413; -* FIXED: All the expirations scheduled to the future run if we call "wp cron events run --all", #340; -* FIXED: Deactivation of the plugin does not remove the cron jobs and settings, #107; -* FIXED: Can we make the cron schedule more human-readable, #231; -* FIXED: Expiration actions related to taxonomy are not working if default way to expire is not taxonomy related, #409; -* FIXED: Database error on a new site install, #424; -* FIXED: Bulk Edit Text doesn't match Quick Edit, #422; -* FIXED: Expiration Email Notification is not working, #414; -* FIXED: Capital case for statuses, #430; -* FIXED: Make sure all files has protection against direct access, #436; -* FIXED: Fix fatal error sending expiration email, #434, #433; - -= [2.9.2] - 28 Feb, 2023 = - -* FIXED: List of actions in the post type settings is not filtered by post types, #400; -* FIXED: Include Statuses as a Default option, #395; -* FIXED: Remove legacy screenshots from the plugin root dir; -* FIXED: Fix i18n issues, #401; - -= [2.9.1] - 23 Feb, 2023 = - -* FIXED: Fix location of wordpress-banners style CSS when started by the Pro plugin, #393; - -= [2.9.0] - 23 Feb, 2023 = - -* ADDED: Add new filter for filtering the expiration actions list: publishpressfuture_expiration_actions; -* ADDED: Add new constant PUBLISHPRESS_FUTURE_BASE_PATH to define the base path of the plugin; -* ADDED: Added hooks to extend settings screen; -* ADDED: Added ads and banners for the Pro plugin; -* CHANGED: Refactored the UI for the Post Types settings screen closing the fields if not activated, #335, #378; -* CHANGED: Refactored the services container to be used by the Pro plugin; -* CHANGED: Changed the order of some settings field in the Post Types settings screen; -* FIXED: Fix hook transition_post_status running twice, #337; -* FIXED: Fix bug with choosing a taxonomy change as a default, #335; -* FIXED: Updated FR and IT translations, #336 (thanks to @wocmultimedia); -* FIXED: HTML escaping for a field on the settings screen; -* FIXED: Fix the expiration date column date format; -* FIXED: Fix option to clear data on uninstall, removing the debug table; -* FIXED: Combining Multiple Cron Events #149; - - -= [2.8.3] - 10 Jan, 2023 = - -* ADDED: Add new filters for allowing customizing the expiration metabox and the email sent when post is expired, #327 (thanks to Menno); -* CHANGED: Changed pattern of expiration debug log messages to describe the action in a clearer way and add more details; -* CHANGED: Changed the label and description of the setting field for default date and time expiration offset, #310; -* FIXED: Remove debug statement, #326; -* FIXED: Fix text for default date/time expiration setting description; -* FIXED: Fix PHP 8 error and remove extract functions, #328; -* FIXED: Simplify setting to set default expiration date/time interval, removing invalid "none" option, #325; -* FIXED: Simplify unscheduling removing duplicated code, #329; -* FIXED: Fix PHP warning and fatal error when post's expiration categories list is not an array, #330; - -= [2.8.2] - 20 Dec, 2022 = - -* FIXED: Fix taxonomy expiration, #309; -* FIXED: Fix TypeError in ExpirablePostModel.php: array_unique(): Argument #1 ($array) must be of type array, #318; - -= [2.8.1] - 08 Dec, 2022 = - -* FIXED: Fix PHP warning: attempt to read property "ID" on null in the "the_content" filter, #313; -* FIXED: Fix PHP warning: undefined array key "properties" in class-wp-rest-meta-fields.php, #311; -* FIXED: Update language files to ES, FR and IT (thanks to @wocmultimedia), #308; - -= [2.8.0] - 08 Nov, 2022 = - -* ADDED: Add translations for ES, FR, IT languages, #297; -* CHANGED: Removed the "None" option from default expiration dates. If a site is using it, the default value is now "Custom" and set for "+1 week", #274; -* CHANGED: The code was partially refactored improving the code quality, applying DRY and other good practices; -* CHANGED: Deprecated some internal functions: postexpirator_activate, postexpirator_autoload, postexpirator_schedule_event, postexpirator_unschedule_event, postexpirator_debug, _postexpirator_get_cat_names, postexpirator_register_expiration_meta, postexpirator_expire_post, expirationdate_deactivate; -* CHANGED: Deprecated the constant: PostExpirator_Facade::PostExpirator_Facade => PublishPressFuture\Modules\Expirator\CapabilitiesAbstract::EXPIRE_POST; -* CHANGED: Deprecated the constant POSTEXPIRATOR_DEBUG; -* CHANGED: Deprecated the method PostExpirator_Facade::set_expire_principles; -* CHANGED: Deprecated the method PostExpirator_Facade::current_user_can_expire_posts; -* CHANGED: Deprecated the method PostExpirator_Facade::get_default_expiry; -* CHANGED: Deprecated the method PostExpirator_Util::get_wp_date; -* CHANGED: Deprecated the class PostExpiratorDebug; -* CHANGED: Deprecated the constants: POSTEXPIRATOR_VERSION, POSTEXPIRATOR_DATEFORMAT, POSTEXPIRATOR_TIMEFORMAT, POSTEXPIRATOR_FOOTERCONTENTS, POSTEXPIRATOR_FOOTERSTYLE, POSTEXPIRATOR_FOOTERDISPLAY, POSTEXPIRATOR_EMAILNOTIFICATION, POSTEXPIRATOR_EMAILNOTIFICATIONADMINS, POSTEXPIRATOR_DEBUGDEFAULT, POSTEXPIRATOR_EXPIREDEFAULT, POSTEXPIRATOR_SLUG, POSTEXPIRATOR_BASEDIR, POSTEXPIRATOR_BASENAME, POSTEXPIRATOR_BASEURL, POSTEXPIRATOR_LOADED, POSTEXPIRATOR_LEGACYDIR; -* FIXED: Fix the expire date column in WooCommerce products list, #276; -* FIXED: Improve output escaping on a few views, #235; -* FIXED: Improve input sanitization, #235; -* FIXED: Add argument swapping on strings with multiple arguments, #305; -* FIXED: Expiration settings not working on Classic Editor, #274; -* FIXED: Fixed remaining message "Cron event not found!" for expirations that run successfully, #288; - -= [2.7.8] - 17 Oct, 2022 = - -* CHANGED: Rename "Category" in the expiration options to use a more generic term: "Taxonomy"; -* CHANGED: Fixed typo in the classical metabox (classical editor); -* FIXED: Fix bulk edit when expiration is not enabled for the post type, #281; -* FIXED: Fix custom taxonomies support, #50; - -= [2.7.7] - 14 Jul, 2022 = - -* ADDED: Add post meta "expiration_log" with expiration log data when post expires; -* FIXED: Can't bulk edit posts if hour or minutes are set to 00, #273; -* FIXED: When the post expires to draft we don't trigger the status transition actions, #264; - -= [2.7.6] - 13 Jun, 2022 = - -* FIXED: Fix fatal error on cron if debug is not activated, #265; - -= [2.7.5] - 09 Jun, 2022 = - -* FIXED: Fix undefined array key "hook_suffix" warning, #259; -* FIXED: Double email sending bug confirmed bug, #204; - -= [2.7.4] - 07 Jun, 2022 = - -* CHANGED: Add library to protect breaking site when multiple instances of the plugin are activated; -* CHANGED: Invert order of the debug log, showing now on ASC order; -* CHANGED: Make bulk edit date fields required, #256; -* FIXED: Fix unlocalized string on the taxonomy field (Thanks to Alex Lion), #255; -* FIXED: Fix default taxonomy selection for Post Types in the settings, #144; -* FIXED: Fix typo in the hook name 'postexpirator_schedule' (Thanks to Nico Mollet), #244; -* FIXED: Fix bulk editing for WordPress v6.0, #251; -* FIXED: Fix the Gutenberg panel for custom post types created on PODS in WordPress v6.0, #250; - -= [2.7.3] - 27 Jan 2022 = - -* FIXED: Fix the selection of categories when setting a post to expire, #220; - -= [2.7.2] - 25 Jan 2022 = - -* ADDED: Added the event GUID as tooltip to each post in the Current Cron Schedule list on the Diagnostics page, #214; -* CHANGED: Added more clear debug message if the cron event was not scheduled due to an error; -* CHANGED: Refactored the list of cron schedules in the Diagnostics tab adding more post information, #215; -* CHANGED: Removed the admin notice about the plugin renaming; -* FIXED: Fix the Expires column in the posts page correctly identifying the post ID on cron event with multiple IDs, #210; -* FIXED: Fix wrong function used to escape a html attributes on a setting page; -* FIXED: Fix missed sanitization for some data on admin pages; -* FIXED: Fix some false positives given by PHPCS; -* FIXED: Fix expiration data processing avoid to process for deactivated posts; -* FIXED: Fix a typo in the diagnostics settings tab; -* FIXED: Fix the checkbox state for posts that are not set to expire, #217; - -= [2.7.1] - 12 Jan 2022 = - -* ADDED: Add visual indicator to the cron event status in the settings page, #155; -* ADDED: Add small help text to the Expires column icon to say if the event is scheduled or not; -* ADDED: Add additional permission check before loading the settings page; -* ADDED: Add CLI command to expire a post, #206; -* CHANGED: Remove the plugin description from the settings page, #194; -* CHANGED: Deprecated a not used function called "expirationdate_get_blog_url"; -* CHANGED: Updated the min required WP to 5.3 due to the requirement of using the function 'wp_date'; -* FIXED: Fix PHP error while purging the debug log, #135; -* FIXED: Fix composer's autoloader path; -* FIXED: Code cleanup. Removed comments and dead code; -* FIXED: Fixed the block for direct access to view files; -* FIXED: Added check for is_admin before checking if the user has permission to see the settings page; -* FIXED: Avoid running sortable column code if not in the admin; -* FIXED: Cross-site scripting (XSS) was possible if a third party allowed html or javascript into a database setting or language file; -* FIXED: Fix the URL for the View Debug Log admin page, #196; -* FIXED: Removed unopened span tag from a form; -* FIXED: Added a secondary admin and ajax referer check when saving expiration post data; -* FIXED: Fix the option "Preserve data after deactivating the plugin" that was not saving the setting, #198; -* FIXED: Fix the post expiration function to make sure a post is not expired if the checkbox is not checked on it, #199; -* FIXED: Fix the post expiration meta not being cleanup after a post expires, #207; -* FIXED: Fix the post expiration checkbox status when post type is set configured to check it by default; - -= [2.7.0] - 02 Dec 2021 = - -* ADDED: Add new admin menu item: Future, #8; -* CHANGED: Rename the plugin from Post Expirator to PublishPress Future, #14; -* CHANGED: Add the PublishPress footer and branding, #68; -* CHANGED: Separate the settings into different tabs, #97, #98; -* CHANGED: Rename the "General Settings" tab to "Default", #99; -* FIXED: Fix the 1hr diff between expiration time when editing and shown in post list, #138; -* FIXED: Post Expirator is adding wrong expiry dates to old posts, #160; -* FIXED: Post Expirator is setting unwanted expire time for posts, #187; - -= [2.6.3] - 18 Nov 2021 = - -* ADDED: Add setting field for choosing between preserve or delete data when the plugin is deactivated, #137; -* FIXED: Fix the timezone applied to time fields, #134; -* FIXED: Add the timezone string to the time fields, #134; -* FIXED: Fix the selected expiring categories on the quick edit panel, #160; -* FIXED: Fix E_COMPILER_ERROR when cleaning up the debug table, #183; -* FIXED: Fix translation and localization of date and time, #150; - -= [2.6.2] - 04 Nov 2021 = - -* FIXED: Fix fatal error: Call to a member function add_cap() on null, #167; -* FIXED: Fix hierarchical taxonomy selection error for multiple taxonomies, #144; -* FIXED: Fix PHP warning: use of undefined constant - assumed 'expireType', #617; -* FIXED: Fix translation of strings in the block editor panel, #163; -* FIXED: Fix category not being added or removed when the post expires, #170; -* FIXED: Fix PHP notice: Undefined variable: merged, #174; -* FIXED: Fix category-based expiration for custom post types in classic editor, #179; -* FIXED: Fix expiration date being added to old posts when edited, #168; - -= [2.6.1] - 27 Oct 2021 = - -* ADDED: Add post information to the scheduled list for easier debugging, #164; -* ADDED: Add a review request after a specific period of usage, #103; -* ADDED: Improve the list of cron tasks, filtering only the tasks related to the plugin, #153; -* FIXED: Fix category replace not saving, #159; -* FIXED: Fix auto enabled settings, #158; -* FIXED: Fix expiration data and cron on Gutenberg style box, #156, #136; -* FIXED: Fix the request that loads categories in the Gutenberg style panel, #133; -* FIXED: Fix the category replace not working with the new Gutenberg style panel, #127; -* FIXED: Fix the default options for the Gutenberg style panel, #145; - -= [2.6.0] - 04 Oct 2021 = - -* ADDED: Add specific capabilities for expiring posts, #141; - -= [2.5.1] - 27 Sep 2021 = - -* FIXED: Default Expiration Categories cannot be unset, #94; -* FIXED: Tidy up design for Classic Editor version, #83; -* FIXED: All posts now carry the default expiration, #115; -* FIXED: Error with 2.5.0 and WordPress 5.8.1, #110; -* FIXED: Do not show private post types that don't have an admin UI, #116; - -= [2.5.0] - 08 Aug 2021 = - -* ADDED: Add "How to Expire" to Quick Edit, #62; -* ADDED: Support for Gutenberg block editor, #10; -* ADDED: Set a default time per post type, #12; -* CHANGED: Settings UI enhancement, #14; -* FIXED: Appearance Widgets screen shows PHP Notice, #92; -* FIXED: Stop the PublishPress Future box from appearing in non-public post types, #78; -* FIXED: Hide metabox from Media Library files, #56; - -= [2.4.4] - 22 Jul 2021 = - -* FIXED: Fix conflict with the plugin WCFM, #60; -* FIXED: Fix the Category: Remove option, #61; - -= [2.4.3] - 07 Jul 2021 = - -* ADDED: Expose wrappers for legacy functions, #40; -* ADDED: Support for quotes in Default expiry, #43; -* CHANGED: Bulk and Quick Edit boxes default to current date/year, #46; -* FIXED: Default expiry duration is broken for future years, #39; -* FIXED: Translation bug, #5; -* FIXED: Post expiring one year early, #24; - -= [2.4.2] = - -* FIXED: Bulk edit does not change scheduled event bug, #29; -* FIXED: Date not being translated in shortcode, #16; -* FIXED: Bulk Edit doesn't work, #4; - -= [2.4.1] = - -* FIXED: Updated deprecated .live jQuery reference; -* FIXED: Updated deprecated .live jQuery reference; - -= [2.4.0] = - -* FIXED: Fixed PHP Error with PHP 7; -* FIXED: Fixed PHP Error with PHP 7; - -= [2.3.1] = - -* FIXED: Fixed PHP Error that snuck in on some installations; -* FIXED: Fixed PHP Error that snuck in on some installations; - -= [2.3.0] = - -* ADDED: Email notification upon post expiration. A global email can be set, blog admins can be selected and/or specific users based on post type can be notified; -* ADDED: Email notification upon post expiration. A global email can be set, blog admins can be selected and/or specific users based on post type can be notified; -* ADDED: Expiration Option Added - Stick/Unstick post is now available; -* ADDED: Expiration Option Added - Stick/Unstick post is now available; -* ADDED: Expiration Option Added - Trash post is now available; -* ADDED: Expiration Option Added - Trash post is now available; -* ADDED: Added custom actions that can be hooked into when expiration events are scheduled / unscheduled; -* ADDED: Added custom actions that can be hooked into when expiration events are scheduled / unscheduled; -* FIXED: Minor HTML Code Issues; - -= [2.2.2] = - -* FIXED: Quick Edit did not retain the expire type setting, and defaulted back to "Draft". This has been resolved; -* FIXED: Quick Edit did not retain the expire type setting, and defaulted back to "Draft". This has been resolved; - -= [2.2.1] = - -* FIXED: Fixed issue with bulk edit not correctly updating the expiration date; -* FIXED: Fixed issue with bulk edit not correctly updating the expiration date; - -= [2.2.0] = - -* ADDED: Quick Edit - setting expiration date and toggling post expiration status can now be done via quick edit; -* ADDED: Quick Edit - setting expiration date and toggling post expiration status can now be done via quick edit; -* ADDED: Bulk Edit - changing expiration date on posts that already are configured can now be done via bulk edit; -* ADDED: Bulk Edit - changing expiration date on posts that already are configured can now be done via bulk edit; -* ADDED: Added ability to order by Expiration Date in dashboard; -* ADDED: Added ability to order by Expiration Date in dashboard; -* ADDED: Adjusted formatting on defaults page. Multiple post types are now displayed cleaner; -* ADDED: Adjusted formatting on defaults page. Multiple post types are now displayed cleaner; -* FIXED: Minor Code Cleanup; - -= [2.1.4] = - -* FIXED: PHP Strict errors with 5.4+; -* FIXED: Removed temporary timezone conversion - now using core functions again; - -= [2.1.3] = - -* FIXED: Default category selection now saves correctly on default settings screen; - -= [2.1.2] = - -* ADDED: Added check to show if WP_CRON is enabled on diagnostics page; -* FIXED: Minor Code Cleanup; -* SECURITY: Added form nonce for protect against possible CSRF; -* SECURITY: Fixed XSS issue on settings pages; - -= [2.1.1] = - -* ADDED: Added the option to disable post expirator for certain post types if desired; -* FIXED: Fixed php warning issue cause when post type defaults are not set; - -= [2.1.0] = - -* ADDED: Added support for hierarchical custom taxonomy; -* ADDED: Enhanced custom post type support; -* FIXED: Updated debug function to be friendly for scripted calls; -* FIXED: Change to only show public custom post types on defaults screen; -* FIXED: Removed category expiration options for 'pages', which is currently unsupported; -* FIXED: Some date calls were getting "double" converted for the timezone pending how other plugins handled date - this issue should now be resolved; - -= [2.0.1] = - -* CHANGED: Old option cleanup; -* REMOVED: Removes old scheduled hook - this was not done completely in the 2.0.0 upgrade; - -= [2.0.0] = - -* ADDED: Improved debug calls and logging; -* ADDED: Added the ability to expire to a "private" post; -* ADDED: Added the ability to expire by adding or removing categories. The old way of doing things is now known as replacing categories; -* ADDED: Revamped the expiration process - the plugin no longer runs on an minute, hourly, or other schedule. Each expiration event schedules a unique event to run, conserving system resources and making things more efficient; -* ADDED: The type of expiration event can be selected for each post, directly from the post editing screen; -* ADDED: Ability to set defaults for each post type (including custom posts); -* ADDED: Renamed expiration-date meta value to _expiration-date; -* ADDED: Revamped timezone handling to be more correct with WordPress standards and fix conflicts with other plugins; -* ADDED: 'Expires' column on post display table now uses the default date/time formats set for the blog; -* FIXED: Removed kses filter calls when then schedule task runs that was causing code entered as unfiltered_html to be removed; -* FIXED: Updated some calls of date to now use date_i18n; -* FIXED: Most (if not all) php error/warnings should be addressed; -* FIXED: Updated wpdb calls in the debug class to use wpdb_prepare correctly; -* FIXED: Changed menu capability option from "edit_plugin" to "manage_options"; - -RELEASE NOTE: This is a major update of the core functions of this plugin. All current plugins and settings should be upgraded to the new formats and work as expected. Any posts currently schedule to be expirated in the future will be automatically upgraded to the new format. - -= [1.6.2] = - -* ADDED: Added the ability to configure the post expirator to be enabled by default for all new posts; -* CHANGED: some instances of mktime to time; -* FIXED: Fixed missing global call for MS installs; - -= [1.6.1] = - -* ADDED: Added option to allow user to select any cron schedule (minute, hourly, twicedaily, daily) - including other defined schedules; -* ADDED: Added option to set default expiration duration - options are none, custom, or publish time; -* FIXED: Tweaked error messages, removed clicks for reset cron event; -* FIXED: Switched cron schedule functions to use "current_time('timestamp')"; -* FIXED: Cleaned up default values code; -* FIXED: Code cleanup - php notice; - -= [1.6] = - -* ADDED: Added debugging; -* CHANGED: Replaced "Upgrade" tab with new "Diagnostics" tab; -* CHANGED: Various code cleanup; -* FIXED: Fixed invalid html; -* FIXED: Fixed i18n issues with dates; -* FIXED: Fixed problem when using "Network Activate" - reworked plugin activation process; -* FIXED: Reworked expire logic to limit the number of sql queries needed; - -= [1.5.4] = - -* CHANGED: Cleaned up deprecated function calls; - -= [1.5.3] = - -* FIXED: Fixed bug with sql expiration query (props to Robert & John); - -= [1.5.2] = - -* FIXED: Fixed bug with shortcode that was displaying the expiration date in the incorrect timezone; -* FIXED: Fixed typo on settings page with incorrect shortcode name; - -= [1.5.1] = - -* FIXED: Fixed bug that was not allow custom post types to work; - -= [1.5] = - -* CHANGED: Moved Expirator Box to Sidebar and cleaned up meta code; -* ADDED: Added ability to expire post to category; - -= [1.4.3] = - -* FIXED: Fixed issue with 3.0 multisite detection; - -= [1.4.2] = - -* ADDED: Added post expirator POT to /languages folder; -* FIXED: Fixed issue with plugin admin navigation; -* FIXED: Fixed timezone issue on plugin options screen; - -= [1.4.1] = - -* ADDED: Added support for custom post types (Thanks Thierry); -* ADDED: Added i18n support (Thanks Thierry); -* FIXED: Fixed issue where expiration date was not shown in the correct timezone in the footer; -* FIXED: Fixed issue where on some systems the expiration did not happen when scheduled; - -= [1.4] = - -* FIXED: Fixed compatability issues with Wordpress - plugin was originally coded for WPMU - should now work on both; -* ADDED: Added ability to schedule post expiration by minute; -* FIXED: Fixed timezone - now uses the same timezone as configured by the blog; - -RELEASE NOTE: After upgrading, you may need to reset the cron schedules. Following onscreen notice if prompted. Previously scheduled posts will not be updated, they will be deleted referncing the old timezone setting. If you wish to update them, you will need to manually update the expiration time. - -= [1.3.1] = - -* FIXED: Fixed sporadic issue of expired posts not being removed; - -= [1.3] = - -* FIXED: Expiration date is now retained across all post status changes; -* FIXED: Modified date/time format options for shortcode postexpirator tag; -* ADDED: Added the ability to add text automatically to the post footer if expiration date is set; - -= [1.2.1] = - -* FIXED: Fixed issue with display date format not being recognized after upgrade; - -= [1.2] = - -* CHANGED: wording from "Expiration Date" to "Post Expirator" and moved the configuration options to the "Settings" tab; -* CHANGED: wording from "Expiration Date" to "Post Expirator" and moved the configuration options to the "Settings" tab; -* ADDED: Added shortcode tag [postexpirator] to display the post expiration date within the post; -* ADDED: Added new setting for the default format; -* FIXED: Fixed bug where expiration date was removed when a post was auto saved; - -= [1.1] = - -* FIXED: Expired posts retain expiration date; - -= [1.0] = - -* ADDED: The initial release; diff --git a/services.php b/services.php index 6c8359e08..f63254583 100644 --- a/services.php +++ b/services.php @@ -41,6 +41,7 @@ use PublishPress\Future\Modules\Expirator\Migrations\V30000WPCronToActionsScheduler; use PublishPress\Future\Modules\Expirator\Migrations\V30001RestorePostMeta; use PublishPress\Future\Modules\Expirator\Models\ActionArgsModel; +use PublishPress\Future\Modules\Expirator\Interfaces\ActionArgsModelInterface; use PublishPress\Future\Modules\Expirator\Models\CurrentUserModel; use PublishPress\Future\Modules\Expirator\Models\ExpirablePostModel; use PublishPress\Future\Modules\Expirator\Models\ExpirationActionsModel; @@ -518,8 +519,8 @@ }; }, - ServicesAbstract::ACTION_ARGS_MODEL_FACTORY => static function (ContainerInterface $container) { - return function () use ($container) { + ServicesAbstract::ACTION_ARGS_MODEL_FACTORY => static function (ContainerInterface $container): Closure { + return function () use ($container): ActionArgsModelInterface { return new ActionArgsModel( $container->get(ServicesAbstract::EXPIRATION_ACTIONS_MODEL) ); diff --git a/src/Core/HooksAbstract.php b/src/Core/HooksAbstract.php index 448d29f95..de429a570 100644 --- a/src/Core/HooksAbstract.php +++ b/src/Core/HooksAbstract.php @@ -11,6 +11,7 @@ abstract class HooksAbstract { const ACTION_INIT = 'init'; const ACTION_ADMIN_INIT = 'admin_init'; + const ACTION_ADMIN_MENU = 'admin_menu'; const ACTION_ADMIN_NOTICES = 'admin_notices'; const ACTION_INIT_PLUGIN = 'publishpressfuture_init_plugin'; const ACTION_ACTIVATE_PLUGIN = 'publishpressfuture_activate_plugin'; diff --git a/src/Core/Plugin.php b/src/Core/Plugin.php index 830eb5ae9..3e29cf1a7 100644 --- a/src/Core/Plugin.php +++ b/src/Core/Plugin.php @@ -11,6 +11,7 @@ use PublishPress\Future\Framework\ModuleInterface as ModuleInterface; use PublishPress\Future\Framework\WordPress\Facade\NoticeFacade; use PublishPress\Future\Framework\WordPress\Facade\NoticeInterface; +use PublishPress\Future\Modules\Expirator\Controllers\PluginsListController; use PublishPress\Future\Modules\Expirator\HooksAbstract as ExpiratorHooks; use PublishPress\Future\Modules\Expirator\Migrations\V30000ActionArgsSchema; use PublishPress\Future\Modules\Expirator\Migrations\V30000ReplaceFooterPlaceholders; @@ -19,6 +20,7 @@ use PublishPress\Future\Modules\Expirator\Migrations\V30104ArgsColumnLength; use PublishPress\Future\Modules\Expirator\PostMetaAbstract; use PublishPress\Future\Modules\Settings\SettingsFacade; +use WpOrg\Requests\Hooks; defined('ABSPATH') or die('Direct access not allowed.'); @@ -103,6 +105,7 @@ public function initialize() $this->hooks->addAction(HooksAbstract::ACTION_ADMIN_INIT, [$this, 'manageUpgrade'], 99); $this->hooks->addAction(HooksAbstract::ACTION_INSERT_POST, [$this, 'setDefaultMetaForPost'], 10, 3); $this->hooks->doAction(HooksAbstract::ACTION_INIT_PLUGIN); + $this->hooks->addAction(HooksAbstract::ACTION_ADMIN_MENU, [$this, 'sortAdminMenu'], 100); $this->notices->init(); @@ -131,6 +134,9 @@ public static function onActivate() do_action(HooksAbstract::ACTION_ACTIVATE_PLUGIN); SettingsFacade::setDefaultSettings(); + + // Set flag to redirect to the settings page after activation + set_transient(PluginsListController::TRANSIENT_REDIRECT_AFTER_ACTIVATION, true, 60); } public static function onDeactivate() @@ -288,4 +294,46 @@ public function setDefaultMetaForPost($postId, $post, $update) $opts ); } + + public function sortAdminMenu() + { + global $submenu; + + $futureMenu = $submenu['publishpress-future']; + + $menuNames = array_column($futureMenu, 2); + + // Get the Settings menu index + $settingsIndex = array_search('publishpress-future', $menuNames); + + // Get the Actions menu list + $actionsIndex = array_search('publishpress-future-scheduled-actions', $menuNames); + + // Get the Upgrade to Pro menu list, if exists + $upgradeToProIndex = array_search('publishpress-future-menu-upgrade-link', $menuNames); + + // Remove the Actions menu + $settingsSubmenu = $futureMenu[$settingsIndex]; + $actionsSubmenu = $futureMenu[$actionsIndex]; + + unset($futureMenu[$actionsIndex]); + unset($futureMenu[$settingsIndex]); + + if (false !== $upgradeToProIndex) { + $upgradeToProSubmenu = $futureMenu[$upgradeToProIndex]; + unset($futureMenu[$upgradeToProIndex]); + } + + $futureMenu = array_merge( + [$actionsSubmenu], + $futureMenu, + [$settingsSubmenu] + ); + + if (false !== $upgradeToProIndex) { + $futureMenu[] = $upgradeToProSubmenu; + } + + $submenu['publishpress-future'] = $futureMenu; + } } diff --git a/src/Modules/Expirator/Adapters/CronToWooActionSchedulerAdapter.php b/src/Modules/Expirator/Adapters/CronToWooActionSchedulerAdapter.php index 4825ed08b..684be298f 100644 --- a/src/Modules/Expirator/Adapters/CronToWooActionSchedulerAdapter.php +++ b/src/Modules/Expirator/Adapters/CronToWooActionSchedulerAdapter.php @@ -5,6 +5,9 @@ namespace PublishPress\Future\Modules\Expirator\Adapters; +use ActionScheduler; +use ActionScheduler_Store; +use Exception; use PublishPress\Future\Modules\Expirator\HooksAbstract; use PublishPress\Future\Modules\Expirator\Interfaces\CronInterface; @@ -20,9 +23,9 @@ class CronToWooActionSchedulerAdapter implements CronInterface { - const SCHEDULED_ACTION_GROUP = 'publishpress-future'; + public const SCHEDULED_ACTION_GROUP = 'publishpress-future'; - const IDENTIFIER = 'woo-action-scheduler'; + public const IDENTIFIER = 'woo-action-scheduler'; /** * @return string @@ -35,9 +38,47 @@ public function getIdentifier() /** * @inheritDoc */ - public function clearScheduledAction($action, $args = []) + public function clearScheduledAction($action, $args = [], $clearOnlyPendingActions = true) { - return as_unschedule_action($action, $args, self::SCHEDULED_ACTION_GROUP); + if ($clearOnlyPendingActions) { + return as_unschedule_action($action, $args, self::SCHEDULED_ACTION_GROUP); + } + + // The original method only unschedule pending actions. + if (! ActionScheduler::is_initialized(__FUNCTION__)) { + return 0; + } + $params = array( + 'hook' => $action, + 'orderby' => 'date', + 'order' => 'ASC', + 'group' => self::SCHEDULED_ACTION_GROUP, + ); + if (is_array($args)) { + $params['args'] = $args; + } + + $actionId = ActionScheduler::store()->query_action($params); + + if ($actionId) { + try { + ActionScheduler::store()->cancel_action($actionId); + } catch (Exception $exception) { + ActionScheduler::logger()->log( + $actionId, + sprintf( + /* translators: %1$s is the name of the hook to be cancelled, %2$s is the exception message. */ + __('Caught exception while cancelling action "%1$s": %2$s', 'action-scheduler'), + $action, + $exception->getMessage() + ) + ); + + $actionId = null; + } + } + + return $actionId; } /** @@ -51,9 +92,75 @@ public function getNextScheduleForAction($action, $args = []) /** * @inheritDoc */ - public function scheduleSingleAction($timestamp, $action, $args = []) - { - return as_schedule_single_action($timestamp, $action, $args, self::SCHEDULED_ACTION_GROUP); + public function scheduleSingleAction( + $timestamp, + $hook, + $args = [], + $unique = false, + $priority = 10 + ) { + return as_schedule_single_action( + $timestamp, + $hook, + $args, + self::SCHEDULED_ACTION_GROUP, + $unique, + $priority + ); + } + + public function scheduleRecurringActionInSeconds( + $timestamp, + $intervalInSeconds, + $hook, + $args = [], + $unique = false, + $priority = 10 + ) { + return as_schedule_recurring_action( + $timestamp, + $intervalInSeconds, + $hook, + $args, + self::SCHEDULED_ACTION_GROUP, + $unique, + $priority + ); + } + + public function scheduleRecurringAction( + $timestamp, + $schedule, + $hook, + $args = [], + $unique = false, + $priority = 10 + ) { + + return as_schedule_cron_action( + $timestamp, + $schedule, + $hook, + $args, + self::SCHEDULED_ACTION_GROUP, + $unique, + $priority + ); + } + + public function scheduleAsyncAction( + $hook, + $args = [], + $unique = false, + $priority = 10 + ) { + return as_enqueue_async_action( + $hook, + $args, + self::SCHEDULED_ACTION_GROUP, + $unique, + $priority + ); } /** @@ -62,11 +169,18 @@ public function scheduleSingleAction($timestamp, $action, $args = []) */ public function postHasScheduledActions($postId) { - $hasScheduledActions = as_has_scheduled_action(HooksAbstract::ACTION_RUN_WORKFLOW, ['postId' => $postId, 'workflow' => 'expire'], self::SCHEDULED_ACTION_GROUP); - + $hasScheduledActions = as_has_scheduled_action( + HooksAbstract::ACTION_RUN_WORKFLOW, + ['postId' => $postId, 'workflow' => 'expire'], + self::SCHEDULED_ACTION_GROUP + ); if (! $hasScheduledActions) { // Try checking with the legacy hook. - $hasScheduledActions = as_has_scheduled_action(HooksAbstract::ACTION_LEGACY_RUN_WORKFLOW, ['postId' => $postId, 'workflow' => 'expire'], self::SCHEDULED_ACTION_GROUP); + $hasScheduledActions = as_has_scheduled_action( + HooksAbstract::ACTION_LEGACY_RUN_WORKFLOW, + ['postId' => $postId, 'workflow' => 'expire'], + self::SCHEDULED_ACTION_GROUP + ); } return $hasScheduledActions; diff --git a/src/Modules/Expirator/Controllers/BlockEditorController.php b/src/Modules/Expirator/Controllers/BlockEditorController.php index 843618b24..6800f62dd 100644 --- a/src/Modules/Expirator/Controllers/BlockEditorController.php +++ b/src/Modules/Expirator/Controllers/BlockEditorController.php @@ -72,7 +72,7 @@ public function enqueueBlockEditorAssets() wp_enqueue_script( 'postexpirator-block-editor', POSTEXPIRATOR_BASEURL . 'assets/js/block-editor.js', - ['wp-edit-post'], + ['wp-edit-post', 'wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities', 'wp-plugins'], POSTEXPIRATOR_VERSION, true ); diff --git a/src/Modules/Expirator/Controllers/BulkEditController.php b/src/Modules/Expirator/Controllers/BulkEditController.php index 0b313caf0..d95525ece 100644 --- a/src/Modules/Expirator/Controllers/BulkEditController.php +++ b/src/Modules/Expirator/Controllers/BulkEditController.php @@ -88,10 +88,15 @@ public function initialize() public function enqueueScripts() { + wp_enqueue_script("wp-components"); + wp_enqueue_script("wp-plugins"); + wp_enqueue_script("wp-element"); + wp_enqueue_script("wp-data"); + wp_enqueue_script( 'postexpirator-bulk-edit', POSTEXPIRATOR_BASEURL . '/assets/js/bulk-edit.js', - ['wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities'], + ['wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities', 'wp-plugins'], POSTEXPIRATOR_VERSION, true ); diff --git a/src/Modules/Expirator/Controllers/ClassicEditorController.php b/src/Modules/Expirator/Controllers/ClassicEditorController.php index 6081eaaa8..3baefdb48 100644 --- a/src/Modules/Expirator/Controllers/ClassicEditorController.php +++ b/src/Modules/Expirator/Controllers/ClassicEditorController.php @@ -301,10 +301,15 @@ public function enqueueScripts() return; } + wp_enqueue_script("wp-components"); + wp_enqueue_script("wp-plugins"); + wp_enqueue_script("wp-element"); + wp_enqueue_script("wp-data"); + wp_enqueue_script( 'publishpress-future-classic-editor', POSTEXPIRATOR_BASEURL . 'assets/js/classic-editor.js', - ['wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'wp-html-entities'], + ['wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities', 'wp-plugins'], PUBLISHPRESS_FUTURE_VERSION, true ); diff --git a/src/Modules/Expirator/Controllers/PluginsListController.php b/src/Modules/Expirator/Controllers/PluginsListController.php index 93ddffeba..9f5349b00 100644 --- a/src/Modules/Expirator/Controllers/PluginsListController.php +++ b/src/Modules/Expirator/Controllers/PluginsListController.php @@ -14,6 +14,10 @@ class PluginsListController implements InitializableInterface { + public const SETTINGS_PAGE_CAPABILITY = 'manage_options'; + + public const TRANSIENT_REDIRECT_AFTER_ACTIVATION = 'publishpress_future_redirect_after_activation'; + /** * @var HookableInterface */ @@ -30,6 +34,8 @@ public function __construct(HookableInterface $hooksFacade) public function initialize() { $this->hooks->addFilter(CoreHooksAbstract::FILTER_PLUGIN_ACTION_LINKS, [$this, 'addPluginActionLinks'], 10, 2); + + $this->redirectAfterActivate(); } public function addPluginActionLinks($links, $file) @@ -41,4 +47,20 @@ public function addPluginActionLinks($links, $file) return $links; } + + private function redirectAfterActivate() + { + if (! current_user_can(self::SETTINGS_PAGE_CAPABILITY)) { + return; + } + + if (! get_transient(self::TRANSIENT_REDIRECT_AFTER_ACTIVATION)) { + return; + } + + delete_transient(self::TRANSIENT_REDIRECT_AFTER_ACTIVATION); + + wp_safe_redirect(admin_url('admin.php?page=publishpress-future')); + exit; + } } diff --git a/src/Modules/Expirator/Controllers/QuickEditController.php b/src/Modules/Expirator/Controllers/QuickEditController.php index 29524c8c0..e22590a07 100644 --- a/src/Modules/Expirator/Controllers/QuickEditController.php +++ b/src/Modules/Expirator/Controllers/QuickEditController.php @@ -114,6 +114,8 @@ public function processQuickEditUpdate($postId) check_ajax_referer('__future_action', '_future_action_nonce'); + + // Classic editor, quick edit $shouldSchedule = isset($_POST['future_action_enabled']) && $_POST['future_action_enabled'] === '1'; @@ -166,10 +168,15 @@ public function processQuickEditUpdate($postId) public function enqueueScripts() { + wp_enqueue_script("wp-components"); + wp_enqueue_script("wp-plugins"); + wp_enqueue_script("wp-element"); + wp_enqueue_script("wp-data"); + wp_enqueue_script( 'postexpirator-quick-edit', POSTEXPIRATOR_BASEURL . '/assets/js/quick-edit.js', - ['wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities'], + ['wp-i18n', 'wp-components', 'wp-url', 'wp-data', 'wp-api-fetch', 'wp-element', 'inline-edit-post', 'wp-html-entities', 'wp-plugins'], POSTEXPIRATOR_VERSION, true ); diff --git a/src/Modules/Expirator/Controllers/ScheduledActionsController.php b/src/Modules/Expirator/Controllers/ScheduledActionsController.php index ce6f4856f..117375043 100644 --- a/src/Modules/Expirator/Controllers/ScheduledActionsController.php +++ b/src/Modules/Expirator/Controllers/ScheduledActionsController.php @@ -89,26 +89,24 @@ public function onAdminMenu() 'dashicons-clock', 74 ); + add_submenu_page( + 'publishpress-future', + __('Action Settings', 'post-expirator'), + __('Action Settings', 'post-expirator'), + 'manage_options', + 'publishpress-future', + [\PostExpirator_Display::getInstance(), 'settings_tabs'] + ); $hook_suffix = add_submenu_page( 'publishpress-future', - __('Future Actions', 'post-expirator'), - __('Future Actions', 'post-expirator'), + __('Scheduled Actions', 'post-expirator'), + __('Scheduled Actions', 'post-expirator'), 'manage_options', 'publishpress-future-scheduled-actions', [$this, 'renderScheduledActionsTemplate'] ); add_action( 'load-' . $hook_suffix , [$this, 'processAdminUi']); - - global $submenu; - - if (isset($submenu['publishpress-future']) && isset($submenu['publishpress-future'][0])) { - $tmpMenu = $submenu['publishpress-future'][0]; - $tmpMenu[0] = __('Settings', 'post-expirator'); - - $submenu['publishpress-future'][0] = $submenu['publishpress-future'][1]; - $submenu['publishpress-future'][1] = $tmpMenu; - } } public function renderScheduledActionsTemplate() diff --git a/src/Modules/Expirator/ExpirationScheduler.php b/src/Modules/Expirator/ExpirationScheduler.php index 0d200376d..4efd24f81 100644 --- a/src/Modules/Expirator/ExpirationScheduler.php +++ b/src/Modules/Expirator/ExpirationScheduler.php @@ -67,7 +67,7 @@ class ExpirationScheduler implements SchedulerInterface * @param LoggerInterface $logger * @param DateTimeFacade $datetime * @param \Closure $postModelFactory - * @param $actionArgsModelFactory + * @param \Closure $actionArgsModelFactory * @param ExpirationActionsModel $expirationActionsModel */ public function __construct( @@ -148,10 +148,12 @@ public function schedule($postId, $timestamp, $opts) $opts['postLink'] = $postModel->getPermalink(); $opts['postTypeLabel'] = $postModel->getPostTypeSingularLabel(); + $opts = $this->hooks->applyFilters(HooksAbstract::FILTER_PREPARE_POST_EXPIRATION_OPTS, $opts, $postId); + $actionArgsModel = $factory(); $id = $actionArgsModel->setCronActionId($actionId) ->setPostId($postId) - ->setScheduledDateFromUnixTime($timestamp) + ->setScheduledDate($timestamp) ->setArgs($opts) ->insert(); diff --git a/src/Modules/Expirator/HooksAbstract.php b/src/Modules/Expirator/HooksAbstract.php index e5b0c22a0..dfd447701 100644 --- a/src/Modules/Expirator/HooksAbstract.php +++ b/src/Modules/Expirator/HooksAbstract.php @@ -63,6 +63,7 @@ abstract class HooksAbstract const FILTER_HIDE_METABOX = 'publishpressfuture_hide_metabox'; const FILTER_EXPIRATION_NEW_STATUS = 'publishpressfuture_expiration_new_status'; const FILTER_EXPIRATION_STATUSES = 'publishpressfuture_expiration_statuses'; + const FILTER_PREPARE_POST_EXPIRATION_OPTS = 'publishpressfuture_prepare_post_expiration_opts'; public static function getActionLegacyMultisiteDelete($blogId) diff --git a/src/Modules/Expirator/Interfaces/ActionArgsModelInterface.php b/src/Modules/Expirator/Interfaces/ActionArgsModelInterface.php new file mode 100644 index 000000000..36ebba60b --- /dev/null +++ b/src/Modules/Expirator/Interfaces/ActionArgsModelInterface.php @@ -0,0 +1,94 @@ +id); } @@ -273,44 +255,29 @@ public function getId() /** * @return int */ - public function getCronActionId() + public function getCronActionId(): int { return absint($this->cronActionId); } - /** - * @param int $cronActionId - * @return ActionArgsModel - */ - public function setCronActionId($cronActionId) + public function setCronActionId(int $cronActionId): ActionArgsModelInterface { $this->cronActionId = $cronActionId; return $this; } - - /** - * @return int - */ - public function getPostId() + public function getPostId(): int { return (int)$this->postId; } - /** - * @param int $postId - * @return ActionArgsModel - */ - public function setPostId($postId) + public function setPostId(int $postId): ActionArgsModelInterface { $this->postId = $postId; return $this; } - /** - * @return array - */ - public function getArgs() + public function getArgs(): array { return (array)$this->args; } @@ -320,15 +287,12 @@ public function getArg(string $key): string return isset($this->args[$key]) ? $this->args[$key] : ''; } - public function getAction() + public function getAction(): string { return isset($this->args['expireType']) ? $this->args['expireType'] : ''; } - /** - * @return string - */ - public function getActionLabel($postType = '') + public function getActionLabel(string $postType = ''): string { $label = $this->expirationActionsModel->getLabelForAction($this->getAction(), $postType); @@ -339,10 +303,7 @@ public function getActionLabel($postType = '') return $label; } - /** - * @return array - */ - public function getTaxonomyTerms() + public function getTaxonomyTerms(): array { $terms = isset($this->args['category']) ? $this->args['category'] : []; @@ -353,15 +314,12 @@ public function getTaxonomyTerms() return $terms; } - public function getTaxonomy() + public function getTaxonomy(): string { return isset($this->args['categoryTaxonomy']) ? $this->args['categoryTaxonomy'] : ''; } - /** - * @return array - */ - public function getTaxonomyTermsNames() + public function getTaxonomyTermsNames(): array { $terms = $this->getTaxonomyTerms(); @@ -376,97 +334,98 @@ public function getTaxonomyTermsNames() return $names; } - /** - * @param array $args - * @return ActionArgsModel - */ - public function setArgs($args) + public function setArgs(array $args): ActionArgsModelInterface { $this->args = $args; + return $this; } - /** - * @param string $key - * @param mixed $value - * @return ActionsArgsModel - */ - public function setArg(string $key, $value) + public function setArg(string $key, $value): ActionArgsModelInterface { $this->args[$key] = $value; + return $this; } - /** - * @return string - */ - public function getCreatedAt() + public function getCreatedAt(): string { return (string)$this->createdAt; } - /** - * @param string $createdAt - * @return ActionArgsModel - */ - public function setCreatedAt($createdAt) + public function setCreatedAt(string $createdAt): ActionArgsModelInterface { $this->createdAt = $createdAt; return $this; } /** - * @return string + * @deprecated version 3.4.0, use getScheduledDateAsISO8601 or getScheduledDateAsUnixTime */ - public function getScheduledDate() + public function getScheduledDate(): string { + return $this->getScheduledDateAsISO8601(); + } + + public function getScheduledDateAsISO8601(): string + { + if (is_numeric($this->scheduledDate)) { + $this->scheduledDate = $this->convertUnixTimeDateToISO8601($this->scheduledDate); + } + return (string)$this->scheduledDate; } - /** - * @param bool $enabled - * @return $this - */ - public function setEnabled($enabled) + public function setEnabled(bool $enabled): ActionArgsModelInterface { $this->enabled = $enabled; return $this; } - /** - * @return bool - */ - public function getEnabled() + public function getEnabled(): bool { return (bool)$this->enabled; } - /** - * @return int - */ - public function getScheduledDateAsUnixTime() + public function getScheduledDateAsUnixTime(): int { - // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date - return date('U', strtotime($this->getScheduledDate())); + return $this->convertISO8601DateToUnixTime($this->getScheduledDateAsISO8601()); } /** - * @param string $scheduledDate - * @return ActionArgsModel + * @deprecated version 3.4.0, use setScheduledDateFromISO8601 or setScheduledDateFromUnixTime */ - public function setScheduledDate($scheduledDate) + public function setScheduledDate(string $scheduledDate): ActionArgsModelInterface { - $this->scheduledDate = $scheduledDate; + $this->scheduledDate = $this->setScheduledDateFromISO8601($scheduledDate); + return $this; } - /** - * @param int $scheduledDate - * @return ActionArgsModel - */ - public function setScheduledDateFromUnixTime($scheduledDate) + public function setScheduledDateFromISO8601(string $scheduledDate): ActionArgsModelInterface { - $this->scheduledDate = gmdate('Y-m-d H:i:s', $scheduledDate); + // We convert the date to unix time and then back to ISO8601 to ensure the date is valid. + $unixTime = $this->convertISO8601DateToUnixTime($scheduledDate); + $this->scheduledDate = $this->convertUnixTimeDateToISO8601($unixTime); + return $this; } + + public function setScheduledDateFromUnixTime(int $scheduledDate): ActionArgsModelInterface + { + $this->scheduledDate = $this->convertUnixTimeDateToISO8601($scheduledDate); + + return $this; + } + + private function convertUnixTimeDateToISO8601(int $date): string + { + // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date + return date(self::DATE_FORMAT_ISO_8601, $date); + } + + private function convertISO8601DateToUnixTime(string $date): int + { + return (int) strtotime($date); + } } diff --git a/src/Modules/Expirator/Models/ExpirablePostModel.php b/src/Modules/Expirator/Models/ExpirablePostModel.php index 2acdf0c39..e9b744610 100644 --- a/src/Modules/Expirator/Models/ExpirablePostModel.php +++ b/src/Modules/Expirator/Models/ExpirablePostModel.php @@ -357,7 +357,7 @@ public function getExpirationDateString($gmt = true) { if (is_null($this->expirationDate)) { if ($this->getPostStatus() !== 'auto-draft') { - $this->expirationDate = $this->actionArgsModel->getScheduledDate(); + $this->expirationDate = $this->actionArgsModel->getScheduledDateAsISO8601(); } if ( diff --git a/src/Modules/Expirator/Tables/ScheduledActionsTable.php b/src/Modules/Expirator/Tables/ScheduledActionsTable.php index 040a58b1d..cdc82eae9 100644 --- a/src/Modules/Expirator/Tables/ScheduledActionsTable.php +++ b/src/Modules/Expirator/Tables/ScheduledActionsTable.php @@ -40,7 +40,7 @@ public function __construct( $this->hooks = $hooks; - $this->table_header = __('Future Actions', 'post-expirator'); + $this->table_header = __('Scheduled Actions', 'post-expirator'); unset($this->columns['group']); $this->columns['hook'] = __('Action', 'post-expirator'); @@ -385,6 +385,9 @@ private function render_expiration_hook_action(array $row) $container = Container::getInstance(); $argsModelFactory = $container->get(ServicesAbstract::ACTION_ARGS_MODEL_FACTORY); + /** + * @var \PublishPress\Future\Modules\Expirator\Interfaces\ActionArgsModelInterface + */ $argsModel = $argsModelFactory(); $argsModel->loadByActionId($row['ID']); @@ -460,6 +463,9 @@ private function render_expiration_hook_args(array $row) $container = Container::getInstance(); $argsModelFactory = $container->get(ServicesAbstract::ACTION_ARGS_MODEL_FACTORY); + /** + * @var \PublishPress\Future\Modules\Expirator\Interfaces\ActionArgsModelInterface + */ $argsModel = $argsModelFactory(); $argsModel->loadByActionId($row['ID']); @@ -498,6 +504,9 @@ private function getActionData(array $row): array $postModel = $factory($row['args']['postId']); $argsModelFactory = $container->get(ServicesAbstract::ACTION_ARGS_MODEL_FACTORY); + /** + * @var \PublishPress\Future\Modules\Expirator\Interfaces\ActionArgsModelInterface + */ $argsModel = $argsModelFactory(); $argsModel->loadByActionId($row['ID']); @@ -772,6 +781,6 @@ protected function get_recurrence( $action ) { * @since 3.1.0 */ public function no_items() { - echo esc_html('No Future Actions.', 'post-expirator'); + echo esc_html__('No Future Actions.', 'post-expirator'); } } diff --git a/src/Views/ad-banner-right-sidebar.php b/src/Views/ad-banner-right-sidebar.php index 17474f1e4..329e3286f 100644 --- a/src/Views/ad-banner-right-sidebar.php +++ b/src/Views/ad-banner-right-sidebar.php @@ -20,13 +20,15 @@

  • + echo esc_html__('Design custom workflows with multiple actions', 'post-expirator'); ?> +
  • + echo esc_html__('Enjoy fast and professional support', 'post-expirator'); ?>