From 1e9b9fd0b2068527403d8dbb62e6c620c5e80ad5 Mon Sep 17 00:00:00 2001 From: Amin Ramezani Date: Tue, 2 Apr 2024 13:14:01 +0330 Subject: [PATCH] version 2.23.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit آپدیت به ورژن جدید --- composer.json | 14 + composer.lock | 111 + css/_boxes.scss | 11 +- css/menu-editor.css | 15 +- css/menu-editor.css.map | 2 +- css/menu-editor.scss | 21 +- css/style-modern-one.css | 4 - css/style-modern-one.css.map | 2 +- css/style-modern-one.scss | 9 - dist/admin-customizer.bundle.js | 4 +- dist/admin-customizer.bundle.js.map | 2 +- dist/customizable.bundle.js | 2 +- dist/customizable.bundle.js.map | 2 +- dist/menu-styler-ui.bundle.js | 2 +- dist/menu-styler-ui.bundle.js.map | 2 +- extras.php | 8 +- extras/ko-extensions.js | 3 +- extras/ko-extensions.js.map | 2 +- extras/ko-extensions.ts | 3 +- extras/menu-headings/menu-headings.js | 4 +- extras/menu-headings/menu-headings.js.map | 2 +- extras/menu-headings/menu-headings.ts | 4 +- .../admin-customizer/admin-customizer.js | 4 +- .../admin-customizer/admin-customizer.js.map | 2 +- .../admin-customizer/admin-customizer.ts | 4 +- .../dashboard-widget-editor.js | 4 +- .../dashboard-widget-editor.js.map | 2 +- .../dashboard-widget-editor.ts | 4 +- .../dashboard-widget.js | 7 +- .../dashboard-widget.js.map | 2 +- .../dashboard-widget.ts | 8 +- extras/modules/easy-hide/easy-hide-style.css | 20 +- .../modules/easy-hide/easy-hide-style.css.map | 2 +- extras/modules/easy-hide/easy-hide-style.scss | 27 +- .../modules/easy-hide/easy-hide-template.php | 4 + extras/modules/easy-hide/easy-hide.js | 19 +- extras/modules/easy-hide/easy-hide.js.map | 2 +- extras/modules/easy-hide/easy-hide.php | 16 + extras/modules/easy-hide/easy-hide.ts | 19 +- .../hide-others-posts/hide-others-posts.php | 235 ++ extras/modules/menu-styler/menu-styler-ui.js | 2 +- .../modules/menu-styler/menu-styler-ui.js.map | 2 +- extras/modules/menu-styler/menu-styler-ui.ts | 2 +- extras/modules/metaboxes/ameMetaBoxEditor.php | 8 +- extras/modules/metaboxes/metabox-editor.js | 33 +- .../modules/metaboxes/metabox-editor.js.map | 2 +- extras/modules/metaboxes/metabox-editor.ts | 36 +- .../role-editor/ameRexSettingsValidator.php | 223 +- extras/modules/role-editor/ameRoleEditor.php | 606 ++--- .../role-editor/role-editor-template.php | 30 +- extras/modules/role-editor/role-editor.css | 30 +- .../modules/role-editor/role-editor.css.map | 2 +- extras/modules/role-editor/role-editor.js | 75 +- extras/modules/role-editor/role-editor.js.map | 2 +- extras/modules/role-editor/role-editor.scss | 35 +- extras/modules/role-editor/role-editor.ts | 96 +- extras/modules/super-users/super-users.js | 4 +- extras/modules/super-users/super-users.js.map | 2 +- extras/modules/super-users/super-users.ts | 4 +- extras/modules/tweaks/tweak-manager.js | 65 +- extras/modules/tweaks/tweak-manager.js.map | 2 +- extras/modules/tweaks/tweak-manager.ts | 81 +- extras/modules/tweaks/tweaks-template.php | 12 +- extras/modules/tweaks/tweaks.css | 4 + extras/modules/tweaks/tweaks.css.map | 2 +- extras/modules/tweaks/tweaks.php | 48 +- extras/modules/visible-users/visible-users.js | 17 +- .../pro-customizables/assets/customizable.js | 2 +- .../assets/customizable.js.map | 2 +- .../pro-customizables/assets/customizable.ts | 4 +- includes/ame-utils.php | 41 + includes/basic-dependencies.php | 16 +- includes/menu-editor-core.php | 30 +- js/actor-manager.js | 4 +- js/actor-manager.js.map | 2 +- js/actor-manager.ts | 5 +- js/common.d.ts | 4 +- js/lodash4.min.js | 137 + js/menu-editor.js | 53 +- license-manager/BasicPluginLicensingUi.php | 1 + license-manager/LicenseServer.php | 4 + menu-editor.php | 2 +- modules/actor-selector/actor-selector.js | 27 +- modules/actor-selector/actor-selector.js.map | 2 +- modules/actor-selector/actor-selector.ts | 30 +- .../plugin-visibility/plugin-visibility.js | 14 +- .../plugin-visibility.js.map | 2 +- .../plugin-visibility/plugin-visibility.ts | 26 +- modules/redirector/redirector-ui.js | 4 +- modules/redirector/redirector-ui.js.map | 2 +- modules/redirector/redirector-ui.ts | 4 +- modules/redirector/redirector.css | 4 + modules/redirector/redirector.css.map | 2 +- package-lock.json | 2213 +++++++++++++---- package.json | 5 +- readme.txt | 27 +- vendor/autoload.php | 25 + vendor/composer/ClassLoader.php | 572 +++++ vendor/composer/InstalledVersions.php | 352 +++ vendor/composer/LICENSE | 21 + vendor/composer/autoload_classmap.php | 10 + vendor/composer/autoload_files.php | 11 + vendor/composer/autoload_namespaces.php | 9 + vendor/composer/autoload_psr4.php | 9 + vendor/composer/autoload_real.php | 57 + vendor/composer/autoload_static.php | 25 + vendor/composer/installed.json | 101 + vendor/composer/installed.php | 45 + vendor/composer/platform_check.php | 26 + vendor/yahnis-elsts/ajax-wrapper/.gitignore | 2 + .../yahnis-elsts/ajax-wrapper/AjaxWrapper.php | 457 ++++ vendor/yahnis-elsts/ajax-wrapper/README.md | 74 + .../ajax-wrapper/ajax-action-wrapper.d.ts | 15 + .../ajax-wrapper/ajax-action-wrapper.js | 139 ++ .../yahnis-elsts/ajax-wrapper/composer.json | 16 + .../plugin-update-checker/.editorconfig | 15 + .../plugin-update-checker/.gitattributes | 6 + .../plugin-update-checker/.gitignore | 40 + .../Puc/v5/PucFactory.php | 10 + .../Puc/v5p3/Autoloader.php | 86 + .../Puc/v5p3/DebugBar/Extension.php | 199 ++ .../Puc/v5p3/DebugBar/Panel.php | 178 ++ .../Puc/v5p3/DebugBar/PluginExtension.php | 40 + .../Puc/v5p3/DebugBar/PluginPanel.php | 41 + .../Puc/v5p3/DebugBar/ThemePanel.php | 25 + .../Puc/v5p3/InstalledPackage.php | 105 + .../Puc/v5p3/Metadata.php | 162 ++ .../Puc/v5p3/OAuthSignature.php | 102 + .../Puc/v5p3/Plugin/Package.php | 188 ++ .../Puc/v5p3/Plugin/PluginInfo.php | 136 + .../Puc/v5p3/Plugin/Ui.php | 294 +++ .../Puc/v5p3/Plugin/Update.php | 116 + .../Puc/v5p3/Plugin/UpdateChecker.php | 425 ++++ .../Puc/v5p3/PucFactory.php | 362 +++ .../Puc/v5p3/Scheduler.php | 300 +++ .../Puc/v5p3/StateStore.php | 214 ++ .../Puc/v5p3/Theme/Package.php | 69 + .../Puc/v5p3/Theme/Update.php | 88 + .../Puc/v5p3/Theme/UpdateChecker.php | 159 ++ .../plugin-update-checker/Puc/v5p3/Update.php | 38 + .../Puc/v5p3/UpdateChecker.php | 1007 ++++++++ .../Puc/v5p3/UpgraderStatus.php | 200 ++ .../plugin-update-checker/Puc/v5p3/Utils.php | 70 + .../Puc/v5p3/Vcs/Api.php | 379 +++ .../Puc/v5p3/Vcs/BaseChecker.php | 29 + .../Puc/v5p3/Vcs/BitBucketApi.php | 272 ++ .../Puc/v5p3/Vcs/GitHubApi.php | 467 ++++ .../Puc/v5p3/Vcs/GitLabApi.php | 414 +++ .../Puc/v5p3/Vcs/PluginUpdateChecker.php | 275 ++ .../Puc/v5p3/Vcs/Reference.php | 51 + .../Puc/v5p3/Vcs/ReleaseAssetSupport.php | 83 + .../Puc/v5p3/Vcs/ReleaseFilteringFeature.php | 108 + .../Puc/v5p3/Vcs/ThemeUpdateChecker.php | 83 + .../Puc/v5p3/Vcs/VcsCheckerMethods.php | 59 + .../plugin-update-checker/README.md | 372 +++ .../plugin-update-checker/composer.json | 23 + .../css/puc-debug-bar.css | 70 + .../examples/plugin.json | 52 + .../plugin-update-checker/examples/theme.json | 5 + .../plugin-update-checker/js/debug-bar.js | 54 + .../languages/plugin-update-checker-ca.mo | Bin 0 -> 1186 bytes .../languages/plugin-update-checker-ca.po | 48 + .../languages/plugin-update-checker-cs_CZ.mo | Bin 0 -> 1077 bytes .../languages/plugin-update-checker-cs_CZ.po | 45 + .../languages/plugin-update-checker-da_DK.mo | Bin 0 -> 1010 bytes .../languages/plugin-update-checker-da_DK.po | 42 + .../languages/plugin-update-checker-de_DE.mo | Bin 0 -> 980 bytes .../languages/plugin-update-checker-de_DE.po | 38 + .../languages/plugin-update-checker-es_AR.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_AR.po | 48 + .../languages/plugin-update-checker-es_CL.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_CL.po | 48 + .../languages/plugin-update-checker-es_CO.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_CO.po | 48 + .../languages/plugin-update-checker-es_CR.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_CR.po | 48 + .../languages/plugin-update-checker-es_DO.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_DO.po | 48 + .../languages/plugin-update-checker-es_ES.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_ES.po | 48 + .../languages/plugin-update-checker-es_GT.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_GT.po | 48 + .../languages/plugin-update-checker-es_HN.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_HN.po | 48 + .../languages/plugin-update-checker-es_MX.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_MX.po | 48 + .../languages/plugin-update-checker-es_PE.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_PE.po | 48 + .../languages/plugin-update-checker-es_PR.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_PR.po | 48 + .../languages/plugin-update-checker-es_UY.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_UY.po | 48 + .../languages/plugin-update-checker-es_VE.mo | Bin 0 -> 1140 bytes .../languages/plugin-update-checker-es_VE.po | 48 + .../languages/plugin-update-checker-fa_IR.mo | Bin 0 -> 1128 bytes .../languages/plugin-update-checker-fa_IR.po | 38 + .../languages/plugin-update-checker-fr_CA.mo | Bin 0 -> 1208 bytes .../languages/plugin-update-checker-fr_CA.po | 48 + .../languages/plugin-update-checker-fr_FR.mo | Bin 0 -> 1066 bytes .../languages/plugin-update-checker-fr_FR.po | 42 + .../languages/plugin-update-checker-hu_HU.mo | Bin 0 -> 982 bytes .../languages/plugin-update-checker-hu_HU.po | 41 + .../languages/plugin-update-checker-it_IT.mo | Bin 0 -> 1135 bytes .../languages/plugin-update-checker-it_IT.po | 48 + .../languages/plugin-update-checker-ja.mo | Bin 0 -> 1454 bytes .../languages/plugin-update-checker-ja.po | 57 + .../languages/plugin-update-checker-nl_BE.mo | Bin 0 -> 1211 bytes .../languages/plugin-update-checker-nl_BE.po | 48 + .../languages/plugin-update-checker-nl_NL.mo | Bin 0 -> 1211 bytes .../languages/plugin-update-checker-nl_NL.po | 48 + .../languages/plugin-update-checker-pt_BR.mo | Bin 0 -> 1014 bytes .../languages/plugin-update-checker-pt_BR.po | 48 + .../languages/plugin-update-checker-ru_RU.mo | Bin 0 -> 1337 bytes .../languages/plugin-update-checker-ru_RU.po | 48 + .../languages/plugin-update-checker-sl_SI.mo | Bin 0 -> 1203 bytes .../languages/plugin-update-checker-sl_SI.po | 48 + .../languages/plugin-update-checker-sv_SE.mo | Bin 0 -> 1006 bytes .../languages/plugin-update-checker-sv_SE.po | 42 + .../languages/plugin-update-checker-tr_TR.mo | Bin 0 -> 1118 bytes .../languages/plugin-update-checker-tr_TR.po | 48 + .../languages/plugin-update-checker-uk_UA.mo | Bin 0 -> 1309 bytes .../languages/plugin-update-checker-uk_UA.po | 48 + .../languages/plugin-update-checker-zh_CN.mo | Bin 0 -> 1174 bytes .../languages/plugin-update-checker-zh_CN.po | 57 + .../languages/plugin-update-checker.pot | 49 + .../plugin-update-checker/license.txt | 7 + .../plugin-update-checker/load-v5p3.php | 34 + .../plugin-update-checker/phpcs.xml | 21 + .../plugin-update-checker.php | 10 + .../vendor/Parsedown.php | 4 + .../vendor/ParsedownModern.php | 1538 ++++++++++++ .../vendor/PucReadmeParser.php | 352 +++ 232 files changed, 16528 insertions(+), 1134 deletions(-) create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 extras/modules/hide-others-posts/hide-others-posts.php create mode 100644 js/lodash4.min.js create mode 100644 vendor/autoload.php create mode 100644 vendor/composer/ClassLoader.php create mode 100644 vendor/composer/InstalledVersions.php create mode 100644 vendor/composer/LICENSE create mode 100644 vendor/composer/autoload_classmap.php create mode 100644 vendor/composer/autoload_files.php create mode 100644 vendor/composer/autoload_namespaces.php create mode 100644 vendor/composer/autoload_psr4.php create mode 100644 vendor/composer/autoload_real.php create mode 100644 vendor/composer/autoload_static.php create mode 100644 vendor/composer/installed.json create mode 100644 vendor/composer/installed.php create mode 100644 vendor/composer/platform_check.php create mode 100644 vendor/yahnis-elsts/ajax-wrapper/.gitignore create mode 100644 vendor/yahnis-elsts/ajax-wrapper/AjaxWrapper.php create mode 100644 vendor/yahnis-elsts/ajax-wrapper/README.md create mode 100644 vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts create mode 100644 vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.js create mode 100644 vendor/yahnis-elsts/ajax-wrapper/composer.json create mode 100644 vendor/yahnis-elsts/plugin-update-checker/.editorconfig create mode 100644 vendor/yahnis-elsts/plugin-update-checker/.gitattributes create mode 100644 vendor/yahnis-elsts/plugin-update-checker/.gitignore create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5/PucFactory.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Autoloader.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Extension.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Panel.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginExtension.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginPanel.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/ThemePanel.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/InstalledPackage.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Metadata.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/OAuthSignature.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Package.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/PluginInfo.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Ui.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Update.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/UpdateChecker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/PucFactory.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Scheduler.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/StateStore.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Package.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Update.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/UpdateChecker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Update.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpdateChecker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpgraderStatus.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Utils.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Api.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BaseChecker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BitBucketApi.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitHubApi.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitLabApi.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/PluginUpdateChecker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Reference.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseAssetSupport.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseFilteringFeature.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ThemeUpdateChecker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/VcsCheckerMethods.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/README.md create mode 100644 vendor/yahnis-elsts/plugin-update-checker/composer.json create mode 100644 vendor/yahnis-elsts/plugin-update-checker/css/puc-debug-bar.css create mode 100644 vendor/yahnis-elsts/plugin-update-checker/examples/plugin.json create mode 100644 vendor/yahnis-elsts/plugin-update-checker/examples/theme.json create mode 100644 vendor/yahnis-elsts/plugin-update-checker/js/debug-bar.js create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.mo create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.po create mode 100644 vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker.pot create mode 100644 vendor/yahnis-elsts/plugin-update-checker/license.txt create mode 100644 vendor/yahnis-elsts/plugin-update-checker/load-v5p3.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/phpcs.xml create mode 100644 vendor/yahnis-elsts/plugin-update-checker/plugin-update-checker.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/vendor/Parsedown.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/vendor/ParsedownModern.php create mode 100644 vendor/yahnis-elsts/plugin-update-checker/vendor/PucReadmeParser.php diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..914b453 --- /dev/null +++ b/composer.json @@ -0,0 +1,14 @@ +{ + "name": "yahnis-elsts/admin-menu-editor-pro", + "type": "project", + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com" + } + ], + "require": { + "yahnis-elsts/ajax-wrapper": "dev-master", + "yahnis-elsts/plugin-update-checker": "dev-master" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..e649068 --- /dev/null +++ b/composer.lock @@ -0,0 +1,111 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "239f1002a82dd3df5d05afa20dee72a2", + "packages": [ + { + "name": "yahnis-elsts/ajax-wrapper", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/YahnisElsts/ajax-wrapper.git", + "reference": "55dc60fbb579d781f3375748ddc6aa2b45772a34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/YahnisElsts/ajax-wrapper/zipball/55dc60fbb579d781f3375748ddc6aa2b45772a34", + "reference": "55dc60fbb579d781f3375748ddc6aa2b45772a34", + "shasum": "" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "AjaxWrapper.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com" + } + ], + "description": "AJAX action wrapper for WordPress", + "support": { + "issues": "https://github.com/YahnisElsts/ajax-wrapper/issues", + "source": "https://github.com/YahnisElsts/ajax-wrapper/tree/master" + }, + "time": "2024-01-11T14:53:43+00:00" + }, + { + "name": "yahnis-elsts/plugin-update-checker", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/YahnisElsts/plugin-update-checker.git", + "reference": "0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/YahnisElsts/plugin-update-checker/zipball/0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee", + "reference": "0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.6.20" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "load-v5p3.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com", + "homepage": "https://w-shadow.com/", + "role": "Developer" + } + ], + "description": "A custom update checker for WordPress plugins and themes. Useful if you can't host your plugin in the official WP repository but still want it to support automatic updates.", + "homepage": "https://github.com/YahnisElsts/plugin-update-checker/", + "keywords": [ + "automatic updates", + "plugin updates", + "theme updates", + "wordpress" + ], + "support": { + "issues": "https://github.com/YahnisElsts/plugin-update-checker/issues", + "source": "https://github.com/YahnisElsts/plugin-update-checker/tree/master" + }, + "time": "2024-01-19T13:40:36+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "yahnis-elsts/ajax-wrapper": 20, + "yahnis-elsts/plugin-update-checker": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/css/_boxes.scss b/css/_boxes.scss index 21551de..2db5844 100644 --- a/css/_boxes.scss +++ b/css/_boxes.scss @@ -14,8 +14,10 @@ $amePostboxShadow: 0 1px 1px rgba(0, 0, 0, 0.04); border: 1px solid $borderColor; .ws-ame-postbox-header { + $headerFontSize: 14px; + position: relative; - font-size: 14px; + font-size: $headerFontSize; margin: 0; line-height: 1.4; @@ -30,6 +32,13 @@ $amePostboxShadow: 0 1px 1px rgba(0, 0, 0, 0.04); text-overflow: ellipsis; overflow: hidden; } + + .ws_tooltip_trigger { + .dashicons { + height: $headerFontSize; + line-height: $headerFontSize; + } + } } .ws-ame-postbox-toggle { diff --git a/css/menu-editor.css b/css/menu-editor.css index 30d7713..d969607 100644 --- a/css/menu-editor.css +++ b/css/menu-editor.css @@ -608,6 +608,10 @@ to accommodate the drop-down button. box-sizing: border-box; width: 100%; padding: 6px 6px 0 6px; + position: sticky; + top: var(--wp-admin--admin-bar--height, 32px); + background-color: white; + z-index: 5; } .ws_button { @@ -658,6 +662,11 @@ a.ws_button.ws_button_disabled:hover { margin-right: 0; } +.ws_is_sticky_toolbar { + border-bottom: 1px solid #ccc; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + /************************************ Capability selector *************************************/ @@ -727,6 +736,7 @@ select.ws_dropdown optgroup option { width: 216px; padding: 4px 0 0 0; position: absolute; + z-index: 6; } #ws_icon_selector.ws_with_more_icons { @@ -1595,7 +1605,7 @@ select.ws_dropdown optgroup option { font-size: 18px; } -.ws_ame_custom_postbox .ws_tooltip_trigger .dashicons, .postbox .ws_tooltip_trigger .dashicons { +.ws_ame_custom_postbox .ws_tooltip_trigger .dashicons, .postbox .ws_tooltip_trigger .dashicons, .ws-ame-postbox .ws_tooltip_trigger .dashicons { font-size: 18px; height: 18px; vertical-align: bottom; @@ -1848,7 +1858,8 @@ span.description { } .wrap :target { - background-color: rgba(255, 230, 81, 0.7); + background-color: rgba(255, 245, 100, 0.7); + outline: 3px solid rgba(250, 220, 75, 0.7); } .test-wrap { diff --git a/css/menu-editor.css.map b/css/menu-editor.css.map index 4bc466d..c28acbe 100644 --- a/css/menu-editor.css.map +++ b/css/menu-editor.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["menu-editor.scss","_input-group.scss","_indeterminate-checkbox.scss","_test-access-screen.scss","_main-tabs.scss"],"names":[],"mappings":"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AAA2B;EAC3B;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA;EACA;EAEA;AAA2B;EAC3B;;;AAGD;AAMA;AAAA;AAAA;AAIA;EACC;EAEA;EACA;EACA;EAEA;EACA;;;AASD;EACC;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAID;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;;;AAID;EACC;EACA;EACA,SAJ0B;;;AAO3B;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AASA;EACC;EACA;EACA;;AAEA;EACC;EAEA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA,qBArBwB;EAsBxB;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA,kBArCyB;;;AA0C1B;AAAA;AAAA;AAMA;EACC;EACA;EACA;EAEA;EACA;EACG;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIJ;EACC;EACA;EAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EACC,OAnEc;EAoEd;;;AAIF;EACI;EACA;EACA;;;AAGJ;EACC;EACA;EACA;EAEA;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EAEG;EACA;EACH;EACA;;AAEA;EACC,QAjeqB;EAkerB,YAleqB;EAmerB;;;AAIF;EACC,OA/Ge;EAgHf;;AAEA;EACC;;AAEA;EACC;;;AAKH;AACA;EACC;EACA;EACA;EACA;;;AAOA;EACC;EACA;EAMA;;AAJA;EACC;;AAMF;EACC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA,kBA3MwB;EA4MxB;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;AAAA;AAAA;AAIA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EAEA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;EACf;EACA;EAEA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;AAIA;EACC;;;AAID;AAAA;AAAA;AAIA;AAKA;EAGI;EACH;EACG,QAJgB;EAKhB,OATc;EAWd,cAVoB;EAWvB;EACG;EAEH;EACG;EACA;EACA;EAEH;;AAEA;EACC;EACA;EAEA;EACA;EAEA;EACA;EACA;;;AAIF;EACC;;;AAGD;EACI;EACA;EACA;EAEA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;AAAA;AAAA;AAIA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEG;EACA;;;AAGJ;EACI;;;AAIH;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAGD;AACC;EACA;;AAQF;EACC;;;AAGD;EACC;;;AAIA;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;EACA;;;AAGD;EACC;EACA;EACG;EACA;;;AAGJ;EACC;EACA;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACC;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACI;EACA;;;AAGJ;AAAA;AAAA;AAIA;AAGA;EAEC,OAJuB;EAKvB,cAJwB;;;AAOzB;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;AACC;AAAA;EAEA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIA;AAAA;AAAA;AAGA;AAuBC;;AArBA;EACC;;AAGD;EACC;;AAGD;EACC;;AAIA;EACC;;AAED;EACC;;AAKF;EACC;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;EACA;EACA;;;AAKD;EACC,cAH0B;EAI1B;EACA;EACA;;;AAGD;EACC;;AAEA;EACC,cAbyB;;AAgB1B;EACC;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAIA;EACC;;;AAQF;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAID;EACC;;AAED;EACC;;AAKA;EACC;;AAED;EACC;;;AAQF;EACC;;;AAIF;AACA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;EAGA;EAEA;EACA;;;AAGD;EACC;EAEA;EACA;EACA;EACA;EACA;EAEA;EAEA;;;AAGD;EACC;;;AAID;EAGC,WAFgB;EAGhB,QAHgB;EAIhB,OAJgB;EAOhB;EAEA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAQA;EAEC;EACA,SAFoB;;;AAKrB;EACC;;AAEA;EACC;EACA;EACA;EAEA;EACA;EACA;EAEA,OAtBwB;EAuBxB,QAtByB;EAwBzB;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EAGA,KAFc;EAGd,MA7C0B;EA8C1B,OA9C0B;EAiD1B;EAEA;EACA;;AAGD;EACC;EAGA;EACA;EACA;EACA;;AAEA;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAKD;EACC;;AAGD;EACC;;AAID;EACC;;AAMD;EACC;;AAED;EACC;;AAED;EACC;;AAGD;EACC;;AAKA;EACC;;AAaH;EACC;EACA;EACA;EAEA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA,OAzJ2B;EA0J3B,QA1J2B;EA4J3B;EACA;;;AAKD;AAAA;AAAA;AAIA;EACI;;;AAMJ;AAAA;AAAA;AAIA;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAID;EACC;;;AAKA;EACC;EACA;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;AAGD;EACC;;;AAIF;EAEC;EACA;;;AAGD;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;AAAA;AAAA;AAGA;EACC;;;AAGD;AAAA;AAAA;AAIA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAGD;EAEC,aAjxCyB;EAkxCzB,gBAlxCyB;;AAqxC1B;EACC;;AAGD;EACC;;AAEA;EACC;;;AAKH;AAAA;AAAA;AAIA;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;;AAIF;EACC;;;AAGD;AACC;AAAA;;;AAID;AAAA;AAAA;AAIA;EACC;;;AAGD;AAAA;AAAA;AAKC;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAKF;EACC;;AAMA;EACC;EACA;EACA,KANQ;EAOR,OAPQ;EASR;EAEA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;AAAA;AAIA;EACI;EAEH;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EAEA;;;AAGD;EACC;;;AAGD;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EAEA;EACA;EAEA;;;AAGJ;EACI;EACA;EAEA;EACA;;;AAGJ;EACI;;;AGlrEJ;AAAA;AAAA;AAIA;EACC;EACA;;;AAGD;EAEC;;;AAGD;EACC;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;ACjID;AAAA;AAAA;AAKC;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;;AAAA;AAAA;AAAA;AAMA;EACC;;;AAIA;EACC;;;AAIF;AAAA;AAEA;EACC","file":"menu-editor.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["menu-editor.scss","_input-group.scss","_indeterminate-checkbox.scss","_test-access-screen.scss","_main-tabs.scss"],"names":[],"mappings":"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AAA2B;EAC3B;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA;EACA;EAEA;AAA2B;EAC3B;;;AAGD;AAMA;AAAA;AAAA;AAMA;EACC;EAEA;EACA;EACA;EAEA;EACA;EAIA;EACA;EACA;EACA,SAjBe;;;AAyBhB;EACC;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAID;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AAAA;AAAA;AAIA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;;;AAID;EACC;EACA;EACA,SAJ0B;;;AAO3B;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AASA;EACC;EACA;EACA;;AAEA;EACC;EAEA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA,qBArBwB;EAsBxB;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA,kBArCyB;;;AA0C1B;AAAA;AAAA;AAOA;EACC;EACA;EACA;EAEA;EACA;EACG;EAEH,SAXoB;;;AAcrB;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIJ;EACC;EACA;EAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EACC,OAtEc;EAuEd;;;AAIF;EACI;EACA;EACA;;;AAGJ;EACC;EACA;EACA;EAEA;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EAEG;EACA;EACH;EACA;;AAEA;EACC,QAjfqB;EAkfrB,YAlfqB;EAmfrB;;;AAIF;EACC,OAlHe;EAmHf;;AAEA;EACC;;AAEA;EACC;;;AAKH;AACA;EACC;EACA;EACA;EACA;;;AAOA;EACC;EACA;EAMA;;AAJA;EACC;;AAMF;EACC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA,kBA9MwB;EA+MxB;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;AAAA;AAAA;AAIA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EAEA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;EACf;EACA;EAEA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;AAIA;EACC;;;AAID;AAAA;AAAA;AAIA;AAKA;EAGI;EACH;EACG,QAJgB;EAKhB,OATc;EAWd,cAVoB;EAWvB;EACG;EAEH;EACG;EACA;EACA;EAEH;;AAEA;EACC;EACA;EAEA;EACA;EAEA;EACA;EACA;;;AAIF;EACC;;;AAGD;EACI;EACA;EACA;EAEA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;AAAA;AAAA;AAIA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEG;EACA;;;AAGJ;EACI;;;AAIH;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAGD;AACC;EACA;;AAQF;EACC;;;AAGD;EACC;;;AAIA;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;EACA;;;AAGD;EACC;EACA;EACG;EACA;;;AAGJ;EACC;EACA;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACC;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACI;EACA;;;AAGJ;AAAA;AAAA;AAIA;AAGA;EAEC,OAJuB;EAKvB,cAJwB;;;AAOzB;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;AACC;AAAA;EAEA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIA;AAAA;AAAA;AAGA;AAuBC;;AArBA;EACC;;AAGD;EACC;;AAGD;EACC;;AAIA;EACC;;AAED;EACC;;AAKF;EACC;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;EACA;EACA;;;AAKD;EACC,cAH0B;EAI1B;EACA;EACA;;;AAGD;EACC;;AAEA;EACC,cAbyB;;AAgB1B;EACC;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAIA;EACC;;;AAQF;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAID;EACC;;AAED;EACC;;AAKA;EACC;;AAED;EACC;;;AAQF;EACC;;;AAIF;AACA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;EAGA;EAEA;EACA;;;AAGD;EACC;EAEA;EACA;EACA;EACA;EACA;EAEA;EAEA;;;AAGD;EACC;;;AAID;EAGC,WAFgB;EAGhB,QAHgB;EAIhB,OAJgB;EAOhB;EAEA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAQA;EAEC;EACA,SAFoB;;;AAKrB;EACC;;AAEA;EACC;EACA;EACA;EAEA;EACA;EACA;EAEA,OAtBwB;EAuBxB,QAtByB;EAwBzB;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EAGA,KAFc;EAGd,MA7C0B;EA8C1B,OA9C0B;EAiD1B;EAEA;EACA;;AAGD;EACC;EAGA;EACA;EACA;EACA;;AAEA;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAKD;EACC;;AAGD;EACC;;AAID;EACC;;AAMD;EACC;;AAED;EACC;;AAED;EACC;;AAGD;EACC;;AAKA;EACC;;AAaH;EACC;EACA;EACA;EAEA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA,OAzJ2B;EA0J3B,QA1J2B;EA4J3B;EACA;;;AAKD;AAAA;AAAA;AAIA;EACI;;;AAMJ;AAAA;AAAA;AAIA;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAID;EACC;;;AAKA;EACC;EACA;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;AAGD;EACC;;;AAIF;EAEC;EACA;;;AAGD;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;AAAA;AAAA;AAGA;EACC;;;AAGD;AAAA;AAAA;AAIA;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAGD;EAEC,aApxCyB;EAqxCzB,gBArxCyB;;AAwxC1B;EACC;;AAGD;EACC;;AAEA;EACC;;;AAKH;AAAA;AAAA;AAIA;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;;AAIF;EACC;;;AAGD;AACC;AAAA;;;AAID;AAAA;AAAA;AAIA;EACC;;;AAGD;AAAA;AAAA;AAKC;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAKF;EACC;;AAMA;EACC;EACA;EACA,KANQ;EAOR,OAPQ;EASR;EAEA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;AAAA;AAIA;EACI;EAEH;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EAEA;;;AAGD;EACC;EACA;;;AAGD;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EAEA;EACA;EAEA;;;AAGJ;EACI;EACA;EAEA;EACA;;;AAGJ;EACI;;;AGnsEJ;AAAA;AAAA;AAIA;EACC;EACA;;;AAGD;EAEC;;;AAGD;EACC;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;ACjID;AAAA;AAAA;AAKC;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;;AAAA;AAAA;AAAA;AAMA;EACC;;;AAIA;EACC;;;AAIF;AAAA;AAEA;EACC","file":"menu-editor.css"} \ No newline at end of file diff --git a/css/menu-editor.scss b/css/menu-editor.scss index 2112cca..df7e899 100644 --- a/css/menu-editor.scss +++ b/css/menu-editor.scss @@ -665,6 +665,8 @@ to accommodate the drop-down button. Toolbars *************************************/ +$toolbarZIndex: 5; //When sticky, appear above menu items. + .ws_toolbar { display: block; @@ -675,6 +677,12 @@ to accommodate the drop-down button. width: 100%; padding: 6px 6px 0 6px; //height: 34px; + + //Keep the toolbar visible when scrolling. + position: sticky; + top: var(--wp-admin--admin-bar--height, 32px); + background-color: white; + z-index: $toolbarZIndex; } .ws_button_container { @@ -734,6 +742,11 @@ a.ws_button.ws_button_disabled:hover { margin-right: 0; } +.ws_is_sticky_toolbar { + border-bottom: 1px solid #ccc; + box-shadow: 0 4px 8px rgba(0,0,0,0.1); +} + /************************************ Capability selector *************************************/ @@ -814,6 +827,7 @@ $toolTabLeftMargin: 6px; *************************************/ $iconFontColor: #85888c; +$iconSelectorZIndex: $toolbarZIndex + 1; #ws_icon_selector { border: 1px solid silver; @@ -823,6 +837,8 @@ $iconFontColor: #85888c; width: 216px; padding: 4px 0 0 0; position: absolute; + + z-index: $iconSelectorZIndex; } #ws_icon_selector.ws_with_more_icons { @@ -1888,7 +1904,7 @@ $userSelectionPanelPadding: 10px; } //And in other boxes. -.ws_ame_custom_postbox, .postbox { +.ws_ame_custom_postbox, .postbox, .ws-ame-postbox { .ws_tooltip_trigger .dashicons { font-size: 18px; height: 18px; @@ -2196,7 +2212,8 @@ span.description { } .wrap :target { - background-color: rgba(255, 230, 81, 0.7); + background-color: rgba(255, 245, 100, 0.7); + outline: 3px solid rgba(250, 220, 75, 0.7); } .test-wrap { diff --git a/css/style-modern-one.css b/css/style-modern-one.css index dc230ee..49f84a1 100644 --- a/css/style-modern-one.css +++ b/css/style-modern-one.css @@ -26,10 +26,6 @@ $hiddenItemBorder: #f1acb1; border: 1px solid #dfdfdf; padding: 7px 0 7px 7px; } -.ws_container .ws_flag_container .ws_custom_actor_permissions_flag, -.ws_container .ws_flag_container .ws_custom_flag { - display: none; -} #ws_menu_editor.ws_is_actor_view input[type=checkbox].ws_actor_access_checkbox { margin-right: 5px; diff --git a/css/style-modern-one.css.map b/css/style-modern-one.css.map index b79d916..c45cd8c 100644 --- a/css/style-modern-one.css.map +++ b/css/style-modern-one.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["style-modern-one.scss"],"names":[],"mappings":"AAmBA;AAAA;AAAA;AAAA;AAAA;AAaA;EAGC;EACA,YApCgB;EAsChB;EACA;EACA;EAEA,OA9BW;EA+BX;EAEA;EACA,eAjCkB;EAkClB,aAduB;EAgBvB;;AAEA;EACC,OA9CS;EA+CT;EACA;EACA;;AAGD;EACC;EACA;;AAMA;AAAA;EAEC;;;AAKH;EACC;;;AAGD;EACC;EACA,SArEmB;EAuEnB;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAQA;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAGA;;AAGD;EACC;EACA;EACA;;;AAKF;EACC;;;AAMD;EACC;;AAEA;EACC,cA9ImB;EA+InB,kBAhJuB;;AAmJxB;EACC,OAlJiB;;AAqJlB;EACC,cAvJmB;;;AA+JpB;EACC,cA/KW;EAgLX,kBAxJqB;;AA2JtB;EACC,cApLW;;AAuLZ;EACC,OA9Je;;;AA0KhB;EACC;EACA;EAEA;EACA;EACA;;AAEA;EACC,aAXuB;EAYvB,gBAZuB;;AAqBxB;EACC;;AAIF;EACC,eAjNiB;;AAqNjB;EACC,cAlOU;;AAsOX;EACC,cAxNkB;;;AA6NrB;EACC;;;AAOD;EACC;;;AAOD;EACC;;;AAOD;EACC,OAxOoB;;AA0OpB;EACC;;AAGD;EACC,aAhPc;EAiPd,cAjPc;;;AAqPhB;EACC;;AAEA;EACC;EACA;;;AAUD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAIF;EACC;EACA;EAEA;EACA;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;EACA;EAEA;EACA","file":"style-modern-one.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["style-modern-one.scss"],"names":[],"mappings":"AAmBA;AAAA;AAAA;AAAA;AAAA;AAaA;EAGC;EACA,YApCgB;EAsChB;EACA;EACA;EAEA,OA9BW;EA+BX;EAEA;EACA,eAjCkB;EAkClB,aAduB;EAgBvB;;AAEA;EACC,OA9CS;EA+CT;EACA;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA,SA5DmB;EA8DnB;EACA;EAEA;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAQA;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAGA;;AAGD;EACC;EACA;EACA;;;AAKF;EACC;;;AAMD;EACC;;AAEA;EACC,cArImB;EAsInB,kBAvIuB;;AA0IxB;EACC,OAzIiB;;AA4IlB;EACC,cA9ImB;;;AAsJpB;EACC,cAtKW;EAuKX,kBA/IqB;;AAkJtB;EACC,cA3KW;;AA8KZ;EACC,OArJe;;;AAiKhB;EACC;EACA;EAEA;EACA;EACA;;AAEA;EACC,aAXuB;EAYvB,gBAZuB;;AAqBxB;EACC;;AAIF;EACC,eAxMiB;;AA4MjB;EACC,cAzNU;;AA6NX;EACC,cA/MkB;;;AAoNrB;EACC;;;AAOD;EACC;;;AAOD;EACC;;;AAOD;EACC,OA/NoB;;AAiOpB;EACC;;AAGD;EACC,aAvOc;EAwOd,cAxOc;;;AA4OhB;EACC;;AAEA;EACC;EACA;;;AAUD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAIF;EACC;EACA;EAEA;EACA;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;EACA;EAEA;EACA","file":"style-modern-one.css"} \ No newline at end of file diff --git a/css/style-modern-one.scss b/css/style-modern-one.scss index 08c8fd2..3a55720 100644 --- a/css/style-modern-one.scss +++ b/css/style-modern-one.scss @@ -60,15 +60,6 @@ $mainContainerWidth: $itemWidth + $columnPadding * 2; border: 1px solid $itemBorder; padding: $headVerticalPadding 0 $headVerticalPadding $horizontalPadding; } - - .ws_flag_container { - //Hide low-importance flags. It's debatable (knowing which roles have custom permissions is useful - //when debugging configuration issues), but lets leave them hidden for now. - .ws_custom_actor_permissions_flag, - .ws_custom_flag { - display: none; - } - } } #ws_menu_editor.ws_is_actor_view input[type="checkbox"].ws_actor_access_checkbox { diff --git a/dist/admin-customizer.bundle.js b/dist/admin-customizer.bundle.js index 96b25e8..e8a697c 100644 --- a/dist/admin-customizer.bundle.js +++ b/dist/admin-customizer.bundle.js @@ -4098,7 +4098,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _zod_lib_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../zod/lib/index.js */ "./extras/zod/lib/index.js"); /// -/// +/// /// @@ -5536,6 +5536,7 @@ var AmeAdminCustomizer; //Update menu states. this.importActionEnabled.notifySubscribers(this.importActionEnabled()); this.discardChangesActionEnabled.notifySubscribers(this.discardChangesActionEnabled()); + this.downloadThemeActionEnabled.notifySubscribers(this.downloadThemeActionEnabled()); //Get the file picker. this.$importFileInput = jQuery('#ame-ac-import-admin-theme-file', rootElement); } @@ -5640,6 +5641,7 @@ var AmeAdminCustomizer; } actionOpenDownloadDialog() { if (!this.downloadThemeActionEnabled()) { + alert('Currently disabled because there are no changes to download.'); return; } this.openMetadataDialog(MetadataDialogMode.Download); diff --git a/dist/admin-customizer.bundle.js.map b/dist/admin-customizer.bundle.js.map index 4b60091..6d6f558 100644 --- a/dist/admin-customizer.bundle.js.map +++ b/dist/admin-customizer.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"admin-customizer.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,0DAA0D;AAC1D,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe,aAAa,eAAe;AACjF;AACA;AACA;AACA,yDAAyD,2DAA2D;AACpH;AACA;AACA,wDAAwD,kCAAkC;AAC1F;AACA;AACA;AACA;AACA;AACA,+DAA+D,+BAA+B;AAC9F;AACA;AACA,sDAAsD,+BAA+B,cAAc,eAAe;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,0BAA0B;AACxF;AACA,qCAAqC,SAAS,oDAAoD,0BAA0B;AAC5H;AACA;AACA;AACA,iEAAiE,4BAA4B;AAC7F;AACA;AACA,+DAA+D,0BAA0B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sEAAsE,EAAE,eAAe;AACvI;AACA,iDAAiD,iEAAiE,EAAE,eAAe;AACnI;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,0CAA0C,EAAE,cAAc;AAC1D;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,0CAA0C,EAAE,gCAAgC;AAC5E;AACA;AACA;AACA;AACA;AACA,gDAAgD,qEAAqE,EAAE,eAAe;AACtI;AACA,iDAAiD,iEAAiE,EAAE,eAAe;AACnI;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,uCAAuC,EAAE,cAAc;AACvD;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,uCAAuC,EAAE,cAAc;AACvD;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,0CAA0C,EAAE,gCAAgC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iBAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,CAAC;AACD,4BAA4B,wBAAwB;AACpD,yBAAyB,wBAAwB;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,sEAAsE,UAAU;AAChF;AACA,CAAC,8BAA8B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAA4D;AACxE;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mCAAmC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sBAAsB,gCAAgC;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B;AACA,sCAAsC,GAAG;AACzC,8BAA8B,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,GAAG;AACtF;AACA;AACA,4DAA4D,GAAG,mFAAmF,GAAG;AACrJ;AACA,sCAAsC,sBAAsB,sCAAsC,uBAAuB,OAAO,GAAG,cAAc;AACjJ;AACA,qCAAqC,yBAAyB,4DAA4D,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI,yBAAyB,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,mCAAmC,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI,0DAA0D,GAAG;AACnoB;AACA,yBAAyB,sBAAsB,IAAI,gBAAgB;AACnE,sDAAsD,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI;AAC7H,+BAA+B,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,mCAAmC,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI;AAC3Y;AACA;AACA;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,UAAU,EAAE,OAAO,EAAE;AACvH;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB;AAClG;AACA;AACA;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9F;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACzE;AACA;AACA;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE;AACxG;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D,SAAS;AACT;AACA;AACA,4CAA4C,qBAAqB;AACjE,SAAS;AACT;AACA;AACA,4CAA4C,qBAAqB;AACjE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAiD;AACvF;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uBAAuB;AAC7D;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA,gCAAgC,6CAA6C;AAC7E;AACA;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA,gCAAgC,8CAA8C;AAC9E;AACA;AACA,gCAAgC,8CAA8C;AAC9E;AACA;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA,gCAAgC,8CAA8C;AAC9E;AACA;AACA,gCAAgC,4CAA4C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,wDAAwD;AACjF,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB,wDAAwD;AACjF,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,kDAAkD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,gBAAgB,cAAc;AAC9B,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D,iCAAiC,uCAAuC;AACxE,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,cAAc;AACjF;AACA;AACA;AACA,8DAA8D,uBAAuB,sBAAsB,cAAc;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC;AACjC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sDAAsD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA,uBAAuB,sDAAsD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA,uGAAuG,qCAAqC;AAC5I,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,qDAAqD,aAAa;AAClE,+BAA+B,sCAAsC;AACrE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA,sCAAsC,SAAS;AAC/C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA,KAAK;AACL,yCAAyC,sBAAsB;AAC/D,qCAAqC,sBAAsB;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAE+pD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh3HnpD;AAEb,gDAAgD;AAChD,qDAAqD;AACrD,+CAA+C;AAE0D;AACV;AAC9B;AACJ;AACS;AACT;AACW;AACI;AACV;AACD;AACe;AACpB;AAKrD,IAAU,kBAAkB,CA+tElC;AA/tED,WAAiB,kBAAkB;IAElC,IAAO,iBAAiB,GAAG,wGAAiC,CAAC;IAG7D,IAAO,oBAAoB,GAAG,2GAAoC,CAAC;IACnE,IAAO,kBAAkB,GAAG,yGAAkC,CAAC;IAI/D,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,MAAM,CAAC,GAAG,WAAW,CAAC;IAEtB,0GAAsB,EAAE,CAAC;IACzB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,EAAE,0EAAc,CAAC,CAAC;IAC3D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,wEAAY,CAAC,CAAC;IACvD,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,EAAE,6EAAgB,CAAC,CAAC;IAChE,E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ACA,CAAC,wDAAwD;AACzD;;;;;;;;;;;;;;;;ACvCmD;AAC8C;AACjG,kCAAkC,4DAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACtCgJ;AAC5D;AACpF,mBAAmB,mGAA4B;AAC/C,gCAAgC,kGAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iHAAmC;AACtD;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC9CqH;AACjC;AACpF,cAAc,8FAAuB;AACrC;AACA;AACA,iCAAiC,gBAAgB,KAAK,aAAa;AACnE;AACA;AACA;AACA,2BAA2B,gGAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA;AACA,sEAAsE,gBAAgB;AACtF;AACA;AACA;AACA;AACA;AACA,sBAAsB,mEAAmE;AACzF;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;ACvCuH;AACnC;AACpF,cAAc,8FAAuB;AACc;AACnD,+BAA+B,kGAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gFAAgC;AAC/D,yBAAyB,oFAAoC;AAC7D;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC,mDAAmD,oDAAoD;AACvG;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;ACvBgJ;AAC5D;AACpF,cAAc,8FAAuB;AACrC,cAAc,8FAAuB;AACrC,mBAAmB,mGAA4B;AACxC,2BAA2B,kGAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iHAAmC;AAC1D;AACA;AACA,uBAAuB,iHAAmC;AAC1D;AACA;AACA;AACA,mBAAmB,iHAAmC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iHAAmC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,sDAAsD,oDAAoD;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACtHsH;AACtH,6BAA6B,iGAAmB;AAChD;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACT8H;AAC1C;AACpF,cAAc,8FAAuB;AACrC,6BAA6B,iGAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,+GAA6B;AAC5C;AACA,sBAAsB,4DAA4D;AAClF;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACxCsH;AACtH,oCAAoC,iGAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA,6EAA6E,qBAAqB;AAClG;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC5Ba;AAC0E;AACd;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa,WAAW,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa,WAAW,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iFAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0CAA0C;AACvE;AACA;AACA;AACA;AACA,yEAAyE,mBAAmB;AAC5F;AACA;AACA;AACA,2DAA2D,uBAAuB;AAClF;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC1SyD;AAClD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,+BAA+B,iEAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACnBa;AAC0E;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0CAA0C,2BAA2B;AAC3F;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;AChCuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AAC0E;AACN;AACc;AACR;AACN;AACkB;AACP;AACd;AACH;AAC2B;AACxB;AACH;AACe;AACN;AACZ;AACiC;AAC3B;AACjE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iDAAiD,iFAAgB;AACjE,+CAA+C,6EAAc;AAC7D,oDAAoD,uFAAkB;AACtE,iDAAiD,iFAAgB;AACjE,+CAA+C,6EAAc;AAC7D,qDAAqD,yFAAoB;AACzE,mDAAmD,qFAAiB;AACpE,8CAA8C,2EAAa;AAC3D,6CAA6C,yEAAY;AACzD,sDAAsD,2FAAqB;AAC3E,8CAA8C,4EAAa;AAC3D,6CAA6C,0EAAY;AACzD,kDAAkD,oFAAiB;AACnE,gDAAgD,gFAAe;AAC/D,4CAA4C,wEAAW;AACvD,uDAAuD,8FAAsB;AAC7E,8CAA8C,4EAAa;AAC3D;AACA;AACA;;;;;;;;;;;;;;;AClD0D;AAC1D;AACA;AACA;AACO,sCAAsC,kEAAoB;AACjE;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACVuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAS,IAAI,OAAO;AAC9C;AACA,mDAAmD,YAAY;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,iCAAiC,iEAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA,oEAAoE,oBAAoB;AACxF;AACA;AACA;AACA;AACA,mCAAmC,wDAAwD;AAC3F;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACnKuF;AACvF,qCAAqC,iEAAmB;AACxD;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACTa;AAC0E;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA,8DAA8D,wBAAwB;AACtF;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC/C2D;AACqB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wFAAuB;AAC1D;AACA,iEAAe,uEAAqB;AACpC;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;ACbA;AACsF;AACvB;AAC/D,cAAc,4EAAuB;AAC9B,6BAA6B,gEAAkB;AACtD;AACA;AACA;AACA;AACA,qDAAqD,yBAAyB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,qBAAqB;AAChG;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAgD;AACzF;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACnHa;AACqD;AACa;AAC/E,gCAAgC,uFAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA,8DAA8D,2BAA2B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC9Ba;AACqD;AACa;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uFAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAwE;AAChF;AACA;AACA,UAAU,sCAAsC;AAChD;AACA;AACA,uBAAuB,yCAAyC,2BAA2B;AAC3F;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;AACA,SAAS,eAAe;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,2BAA2B,8CAA8C;AACzE;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AClG+E;AACb;AAClE,2BAA2B,uFAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA,sBAAsB,0CAA0C,2BAA2B;AAC3F;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACjB2D;AACqB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wFAAuB;AAC3D;AACA,iEAAe,uEAAqB;AACpC;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACfuF;AACvF,4BAA4B,iEAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACrBsF;AAC/E,2BAA2B,gEAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,sBAAsB,0CAA0C,2BAA2B;AAC3F;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;AC1BuF;AACvF,gCAAgC,iEAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA,uBAAuB,yCAAyC,2BAA2B;AAC3F;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACtCuF;AAChF,8BAA8B,iEAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,SAAS,aAAa;AACtB,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACjBa;AAC0E;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iEAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,+BAA+B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;ACpK4D;AAC5D,cAAc,4EAAuB;AACrC,yBAAyB,uFAAkC;AAC3D,cAAc,4EAAuB;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,WAAW;AAClG;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5RA;AACA;AACA;AACA;AACA;AACO;AACP,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack:///./extras/zod/lib/index.js","webpack:///./extras/modules/admin-customizer/admin-customizer.ts","webpack:///./extras/modules/admin-customizer/admin-customizer-base.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-content-section.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-control-group.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-control.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-section-link.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-section.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-separator.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-structure.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-validation-errors.js","webpack:///./extras/pro-customizables/ko-components/ame-box-dimensions/ame-box-dimensions.js","webpack:///./extras/pro-customizables/ko-components/ame-choice-control/ame-choice-control.js","webpack:///./extras/pro-customizables/ko-components/ame-code-editor/ame-code-editor.js","webpack:///./extras/pro-customizables/ko-components/ame-color-picker/ame-color-picker.js","webpack:///./extras/pro-customizables/ko-components/ame-components.js","webpack:///./extras/pro-customizables/ko-components/ame-description/ame-description.js","webpack:///./extras/pro-customizables/ko-components/ame-font-style-picker/ame-font-style-picker.js","webpack:///./extras/pro-customizables/ko-components/ame-horizontal-separator/ame-horizontal-separator.js","webpack:///./extras/pro-customizables/ko-components/ame-image-selector/ame-image-selector.js","webpack:///./extras/pro-customizables/ko-components/ame-nested-description/ame-nested-description.js","webpack:///./extras/pro-customizables/ko-components/ame-number-input/ame-number-input.js","webpack:///./extras/pro-customizables/ko-components/ame-radio-button-bar/ame-radio-button-bar.js","webpack:///./extras/pro-customizables/ko-components/ame-radio-group/ame-radio-group.js","webpack:///./extras/pro-customizables/ko-components/ame-select-box/ame-select-box.js","webpack:///./extras/pro-customizables/ko-components/ame-sibling-description/ame-sibling-description.js","webpack:///./extras/pro-customizables/ko-components/ame-static-html/ame-static-html.js","webpack:///./extras/pro-customizables/ko-components/ame-text-input/ame-text-input.js","webpack:///./extras/pro-customizables/ko-components/ame-toggle-checkbox/ame-toggle-checkbox.js","webpack:///./extras/pro-customizables/ko-components/ame-unit-dropdown/ame-unit-dropdown.js","webpack:///./extras/pro-customizables/ko-components/ame-wp-editor/ame-wp-editor.js","webpack:///./extras/pro-customizables/ko-components/control-base.js","webpack:///./extras/pro-customizables/ko-components/lazy-popup-slider-adapter.js"],"sourcesContent":["var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (typeof value.value !== \"undefined\" || pair.alwaysSet) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n if (typeof ctx.data === \"undefined\") {\n return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };\n }\n return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[a-z][a-z0-9]*$/;\nconst ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\nconst ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// Adapted from https://stackoverflow.com/a/3143231\nconst datetimeRegex = (args) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`);\n }\n }\n else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`);\n }\n }\n else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`);\n }\n }\n};\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n constructor() {\n super(...arguments);\n this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));\n this.trim = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n this.toLowerCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n this.toUpperCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n }\n //\n );\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return Object.keys(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else {\n return null;\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n return OK(async (...args) => {\n const error = new ZodError([]);\n const parsedArgs = await this._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await fn(...parsedArgs);\n const parsedReturns = await this._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n return OK((...args) => {\n const parsedArgs = this._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = fn(...parsedArgs.data);\n const parsedReturns = this._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values) {\n return ZodEnum.create(values);\n }\n exclude(values) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data);\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed) => {\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n });\n }\n else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc\n // effect: RefinementEffect\n ) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nconst custom = (check, params = {}, \n/*\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n};\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","'use strict';\n\n/// \n/// \n/// \n\nimport {AmeCustomizable, AmeCustomizableViewModel} from '../../pro-customizables/assets/customizable.js';\nimport {registerBaseComponents} from '../../pro-customizables/ko-components/ame-components.js';\nimport AmeAcStructure from './ko-components/ame-ac-structure.js';\nimport AmeAcSection from './ko-components/ame-ac-section.js';\nimport AmeAcSectionLink from './ko-components/ame-ac-section-link.js';\nimport AmeAcControl from './ko-components/ame-ac-control.js';\nimport AmeAcControlGroup from './ko-components/ame-ac-control-group.js';\nimport AmeAcContentSection from './ko-components/ame-ac-content-section.js';\nimport {AmeAdminCustomizerBase} from './admin-customizer-base.js';\nimport AmeAcSeparator from './ko-components/ame-ac-separator.js';\nimport AmeAcValidationErrors from './ko-components/ame-ac-validation-errors.js';\nimport z, {ZodError, ZodType} from '../../zod/lib/index.js';\n\ndeclare var wsAmeLodash: _.LoDashStatic;\ndeclare const wsAmeAdminCustomizerData: AmeAdminCustomizer.ScriptData;\n\nexport namespace AmeAdminCustomizer {\n\timport Setting = AmeCustomizable.Setting;\n\timport SettingCollection = AmeCustomizable.SettingCollection;\n\timport InterfaceStructureData = AmeCustomizable.InterfaceStructureData;\n\timport InterfaceStructure = AmeCustomizable.InterfaceStructure;\n\timport unserializeUiElement = AmeCustomizable.unserializeUiElement;\n\timport unserializeSetting = AmeCustomizable.unserializeSetting;\n\timport AnySpecificElementData = AmeCustomizable.AnySpecificElementData;\n\timport CustomizableVmInterface = AmeCustomizableViewModel.CustomizableVmInterface;\n\n\tconst $ = jQuery;\n\tconst _ = wsAmeLodash;\n\n\tregisterBaseComponents();\n\tko.components.register('ame-ac-structure', AmeAcStructure);\n\tko.components.register('ame-ac-section', AmeAcSection);\n\tko.components.register('ame-ac-section-link', AmeAcSectionLink);\n\tko.components.register('ame-ac-content-section', AmeAcContentSection);\n\tko.components.register('ame-ac-control-group', AmeAcControlGroup);\n\tko.components.register('ame-ac-control', AmeAcControl);\n\tko.components.register('ame-ac-separator', AmeAcSeparator);\n\tko.components.register('ame-ac-validation-errors', AmeAcValidationErrors);\n\n\texport interface ScriptData extends AmeAdminCustomizerBase.ScriptData, AdminThemeTexts {\n\t\tajaxUrl: string;\n\t\tsaveChangesetNonce: string;\n\t\ttrashChangesetNonce: string;\n\t\tchangesetItemCount: number;\n\t\tchangesetStatus: string;\n\t\tchangesetThemeMetadata: AdminThemeMetadata | null;\n\n\t\trefreshPreviewNonce: string;\n\t\tinitialPreviewUrl: string;\n\t\tinterfaceStructure: InterfaceStructureData;\n\n\t\t/**\n\t\t * The template to use when generating the URL for a changeset.\n\t\t *\n\t\t * By default, the changeset name is added as a query parameter. Alternatively,\n\t\t * you can use a path template that includes a \"{changeset}\" placeholder, which\n\t\t * will be replaced with the changeset name.\n\t\t */\n\t\tchangesetPathTemplate: string | null;\n\n\t\t/**\n\t\t * Whether to use pushState() to update the URL when the changeset name changes.\n\t\t *\n\t\t * By default, we discourage navigating to the old URL (no pushState()) because\n\t\t * the name is only expected to change when the old changeset becomes invalid\n\t\t * (e.g. it's deleted or published).\n\t\t */\n\t\tchangesetPushStateEnabled: boolean;\n\n\t\t/**\n\t\t * Admin Customizer base path. Defaults to the current URL path.\n\t\t *\n\t\t * Note that setting this to a non-empty value will also stop AC from\n\t\t * adding the \"page\" query parameter to the URL.\n\t\t */\n\t\tcustomBasePath: string | null;\n\n\t\texitPromptMode?: number;\n\t}\n\n\tinterface AdminThemeTexts {\n\t\tgeneratorCreditPhrase?: string;\n\t\tstandalonePluginNote?: string;\n\t}\n\n\tconst reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n\tlet prefersReducedMotion = reducedMotionQuery && reducedMotionQuery.matches;\n\treducedMotionQuery.addEventListener('change', () => {\n\t\tprefersReducedMotion = reducedMotionQuery.matches;\n\t});\n\n\tclass CustomizerSettingsCollection extends SettingCollection {\n\t\t/**\n\t\t * Settings that have changed since the last save attempt.\n\t\t */\n\t\tprivate pendingSettings: Record = {};\n\t\t/**\n\t\t * Settings that in the process of being sent to the server to be saved.\n\t\t * They might not be saved yet.\n\t\t */\n\t\tprivate sentSettings: Record = {};\n\t\tprivate currentChangesetRequest: JQueryXHR | null = null;\n\t\tprivate saveTriggerTimeoutId: null | ReturnType = null;\n\n\t\tprivate readonly currentChangeset: KnockoutObservable;\n\t\tpublic readonly changesetName: KnockoutComputed;\n\n\t\tpublic readonly adminThemeMetadata: KnockoutObservable;\n\t\tprivate readonly underlyingMetadata: KnockoutObservable = ko.observable(null);\n\t\tprivate readonly metadataHasChanged: KnockoutObservable = ko.observable(false);\n\n\t\tpublic readonly isExclusiveOperationInProgress: KnockoutComputed;\n\t\tprivate readonly exclusiveOperation: KnockoutObservable = ko.observable(false);\n\n\t\tconstructor(\n\t\t\tpublic readonly ajaxUrl: string,\n\t\t\tpublic readonly saveChangesetNonce: string,\n\t\t\tpublic readonly trashChangesetNonce: string,\n\t\t\tchangesetName: string,\n\t\t\tchangesetItemCount: number = 0,\n\t\t\tchangesetStatus: string | null = null\n\t\t) {\n\t\t\tsuper();\n\t\t\tconst self = this;\n\n\t\t\tthis.currentChangeset = ko.observable(\n\t\t\t\tnew Changeset(changesetName, changesetItemCount, changesetStatus)\n\t\t\t);\n\t\t\tthis.changesetName = ko.pureComputed(() => {\n\t\t\t\treturn (self.currentChangeset()?.name()) || '';\n\t\t\t});\n\n\t\t\tthis.adminThemeMetadata = ko.computed({\n\t\t\t\tread: () => this.underlyingMetadata(),\n\t\t\t\twrite: (newValue) => {\n\t\t\t\t\tconst oldValue = this.underlyingMetadata.peek();\n\t\t\t\t\tif (!_.isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tthis.underlyingMetadata(newValue);\n\t\t\t\t\t\tthis.metadataHasChanged(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//Automatically save the changeset when any settings change.\n\t\t\tconst totalChangeCount = ko.pureComputed(() => {\n\t\t\t\tconst changeset = self.currentChangeset();\n\t\t\t\treturn (changeset ? changeset.currentSessionChanges() : 0);\n\t\t\t});\n\t\t\tconst debouncedSaveTrigger = _.debounce(\n\t\t\t\t() => {\n\t\t\t\t\t//Only save if there are changes. This may look like a duplicate check,\n\t\t\t\t\t//but it's not: the totalChangeCount() may change between the time\n\t\t\t\t\t//the debounced function is called and the time this code is executed.\n\t\t\t\t\t//\n\t\t\t\t\t//Also save if the metadata has changed, but only if the changeset\n\t\t\t\t\t//is not empty. Saving a changeset with only metadata is not useful.\n\t\t\t\t\tif (\n\t\t\t\t\t\t(totalChangeCount() > 0)\n\t\t\t\t\t\t|| (this.metadataHasChanged() && this.currentChangeset().isNonEmpty())\n\t\t\t\t\t) {\n\t\t\t\t\t\tself.queueChangesetUpdate()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t3000,\n\t\t\t\t{leading: true, trailing: true}\n\t\t\t)\n\t\t\ttotalChangeCount.subscribe((counter) => {\n\t\t\t\tif (counter > 0) {\n\t\t\t\t\tdebouncedSaveTrigger();\n\t\t\t\t}\n\t\t\t});\n\t\t\t//Also save when theme metadata changes.\n\t\t\tthis.metadataHasChanged.subscribe((hasChanged) => {\n\t\t\t\tif (hasChanged) {\n\t\t\t\t\tdebouncedSaveTrigger();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.isExclusiveOperationInProgress = ko.pureComputed(() => {\n\t\t\t\treturn self.exclusiveOperation();\n\t\t\t});\n\n\t\t\t//Keep track of unsaved changes and changesets.\n\t\t\tthis.addChangeListener((setting: Setting) => {\n\t\t\t\tthis.pendingSettings[setting.id] = setting;\n\n\t\t\t\tlet changeset = this.currentChangeset();\n\t\t\t\t//If the current changeset cannot be modified, create a new one\n\t\t\t\t//for the changed setting(s).\n\t\t\t\tif (!changeset?.canBeModified()) {\n\t\t\t\t\tchangeset = new Changeset();\n\t\t\t\t\tthis.currentChangeset(changeset);\n\t\t\t\t}\n\t\t\t\t//Track the number of changes in the current session.\n\t\t\t\tchangeset.currentSessionChanges(changeset.currentSessionChanges() + 1);\n\t\t\t});\n\t\t}\n\n\t\tqueueChangesetUpdate(delay: number = 0) {\n\t\t\tif (delay > 0) {\n\t\t\t\tif (this.saveTriggerTimeoutId !== null) {\n\t\t\t\t\t//Replace the existing timeout with a new one.\n\t\t\t\t\tclearTimeout(this.saveTriggerTimeoutId);\n\t\t\t\t}\n\t\t\t\tthis.saveTriggerTimeoutId = setTimeout(() => {\n\t\t\t\t\tthis.saveTriggerTimeoutId = null;\n\t\t\t\t\tthis.queueChangesetUpdate(0);\n\t\t\t\t}, delay);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.saveTriggerTimeoutId !== null) {\n\t\t\t\treturn; //Another timeout is already waiting.\n\t\t\t}\n\n\t\t\tif (this.currentChangesetRequest !== null) {\n\t\t\t\t//There's an in-progress request, so wait until it's done.\n\t\t\t\tthis.currentChangesetRequest.always(() => {\n\t\t\t\t\t//Wait a bit to avoid hammering the server.\n\t\t\t\t\tthis.queueChangesetUpdate(1000);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.saveChangeset();\n\t\t}\n\n\t\tprivate saveChangeset(status: string | null = null): JQueryPromise {\n\t\t\t//Do nothing if there are no changes.\n\t\t\tif (_.isEmpty(this.pendingSettings) && (status === null) && !this.metadataHasChanged()) {\n\t\t\t\treturn $.Deferred().reject(new Error('There are no changes to save.')).promise();\n\t\t\t}\n\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\treturn $.Deferred().reject(\n\t\t\t\t\tnew Error('Another exclusive changeset operation is in progress.')\n\t\t\t\t).promise();\n\t\t\t}\n\n\t\t\tlet isExclusiveRequest = (status === 'publish') || (status === 'trash');\n\t\t\tif (isExclusiveRequest) {\n\t\t\t\tthis.exclusiveOperation(true);\n\t\t\t}\n\n\t\t\tconst savedChangeset = this.currentChangeset();\n\n\t\t\t//Keep a local copy of the settings in case something changes instance\n\t\t\t//properties while the request is in progress (should never happen).\n\t\t\tconst settingsToSend = this.pendingSettings;\n\t\t\tthis.sentSettings = settingsToSend;\n\t\t\tthis.pendingSettings = {};\n\n\t\t\tconst modifiedSettings = _.mapValues(settingsToSend, setting => setting.value());\n\t\t\tconst requestData: Record = {\n\t\t\t\taction: 'ws_ame_ac_save_changeset',\n\t\t\t\t_ajax_nonce: this.saveChangesetNonce,\n\t\t\t\tchangeset: (savedChangeset?.name()) ?? '',\n\t\t\t\tmodified: JSON.stringify(modifiedSettings),\n\t\t\t};\n\t\t\tif (status !== null) {\n\t\t\t\trequestData['status'] = status;\n\t\t\t}\n\t\t\t//If the changeset doesn't have a name, it is new.\n\t\t\tif (!savedChangeset?.hasName()) {\n\t\t\t\trequestData['createNew'] = 1;\n\t\t\t}\n\n\t\t\t//Also send the metadata if it has changed.\n\t\t\tconst metadataWasChanged = this.metadataHasChanged();\n\t\t\tif (metadataWasChanged) {\n\t\t\t\tconst metadata = this.adminThemeMetadata();\n\t\t\t\trequestData['adminThemeMetadata'] = JSON.stringify(metadata);\n\t\t\t}\n\t\t\tthis.metadataHasChanged(false);\n\n\t\t\tconst request = $.ajax({\n\t\t\t\turl: this.ajaxUrl,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: requestData,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttimeout: 20000,\n\t\t\t});\n\t\t\tthis.currentChangesetRequest = request;\n\n\t\t\tinterface ServerValidationResults {\n\t\t\t\t[settingId: string]: {\n\t\t\t\t\tisValid: boolean;\n\t\t\t\t\terrors: Array<{ code: string; message: string; }>;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst self = this;\n\n\t\t\tfunction storeValidationResultsFrom(serverResponse: any) {\n\t\t\t\tconst results: ServerValidationResults = _.get(\n\t\t\t\t\tserverResponse,\n\t\t\t\t\t['data', 'validationResults']\n\t\t\t\t);\n\t\t\t\tif (typeof results !== 'object') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (const settingId in results) {\n\t\t\t\t\tconst setting = self.get(settingId);\n\t\t\t\t\tif (!setting.isDefined()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!modifiedSettings.hasOwnProperty(settingId)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst sentValue = modifiedSettings[settingId];\n\n\t\t\t\t\tconst state = results[settingId];\n\t\t\t\t\tif (state.isValid) {\n\t\t\t\t\t\tsetting.get().clearValidationErrorsForValue(sentValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Since the server response is not fully validated, some typeof checks\n\t\t\t\t\t\t//are still useful.\n\t\t\t\t\t\t// noinspection SuspiciousTypeOfGuard\n\t\t\t\t\t\tsetting.get().addValidationErrorsForValue(\n\t\t\t\t\t\t\tsentValue,\n\t\t\t\t\t\t\t_.filter(state.errors, error => (typeof error.message === 'string'))\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction storeChangesetDetailsFrom(serverResponse: any) {\n\t\t\t\tif (!savedChangeset) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Store the returned changeset name in case a new changeset was created\n\t\t\t\t//or an existing changeset was forked due to permissions.\n\t\t\t\tconst newName = _.get(serverResponse, ['data', 'changeset']);\n\t\t\t\tif (!savedChangeset.hasName() || (newName !== savedChangeset.name())) {\n\t\t\t\t\tif (typeof newName === 'string') {\n\t\t\t\t\t\tsavedChangeset.name(newName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Store the changeset status.\n\t\t\t\tconst newStatus = _.get(serverResponse, ['data', 'changesetStatus']);\n\t\t\t\tif (typeof newStatus === 'string') {\n\t\t\t\t\tsavedChangeset.status(newStatus);\n\t\t\t\t}\n\n\t\t\t\t//Store the number of changes in the changeset.\n\t\t\t\tconst newChangeCount = _.get(serverResponse, ['data', 'changesetItemCount']);\n\t\t\t\tif (typeof newChangeCount === 'number') {\n\t\t\t\t\tsavedChangeset.knownItemCount(newChangeCount);\n\t\t\t\t}\n\n\t\t\t\t//Was the changeset published? Because changesets are typically moved\n\t\t\t\t//to trash after publishing, \"status\" might be \"trash\" instead of \"publish\",\n\t\t\t\t//but we still want to know if it was successfully published.\n\t\t\t\tconst wasPublished = _.get(serverResponse, ['data', 'changesetWasPublished'], null);\n\t\t\t\tif (wasPublished) {\n\t\t\t\t\tsavedChangeset.wasPublished(wasPublished);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trequest.done(function (response) {\n\t\t\t\tstoreChangesetDetailsFrom(response);\n\t\t\t\tstoreValidationResultsFrom(response);\n\n\t\t\t\t//After successfully publishing a changeset, it has no more\n\t\t\t\t//unsaved changes.\n\t\t\t\tconst isPublished =\n\t\t\t\t\t(savedChangeset.status() === 'publish')\n\t\t\t\t\t|| (savedChangeset.status() === 'future')\n\t\t\t\t\t|| (savedChangeset.wasPublished());\n\t\t\t\tif (isPublished) {\n\t\t\t\t\tsavedChangeset.currentSessionChanges(0);\n\t\t\t\t}\n\n\t\t\t\t//After a changeset is published or trashed, it can no longer\n\t\t\t\t//be edited. We may be able to replace it with a new changeset\n\t\t\t\t//that was created on the server.\n\t\t\t\tif (!self.currentChangeset().canBeModified()) {\n\t\t\t\t\tconst nextChangeset = _.get(response, ['data', 'nextChangeset']);\n\t\t\t\t\tif ((typeof nextChangeset === 'string') && (nextChangeset !== '')) {\n\t\t\t\t\t\tself.currentChangeset(new Changeset(nextChangeset));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trequest.fail((requestObject: JQueryXHR) => {\n\t\t\t\tif (typeof requestObject.responseJSON === 'object') {\n\t\t\t\t\tstoreValidationResultsFrom(requestObject.responseJSON);\n\t\t\t\t\tstoreChangesetDetailsFrom(requestObject.responseJSON);\n\t\t\t\t}\n\n\t\t\t\t//Add the unsaved settings back to the pending list.\n\t\t\t\tfor (const id in settingsToSend) {\n\t\t\t\t\t//Keep only settings that still exist.\n\t\t\t\t\tif (this.get(id).isDefined()) {\n\t\t\t\t\t\tthis.pendingSettings[id] = settingsToSend[id];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//We don't automatically retry because the problem might be something\n\t\t\t\t//that doesn't get better on its own, like missing permissions.\n\t\t\t});\n\n\t\t\trequest.always(() => {\n\t\t\t\tthis.currentChangesetRequest = null;\n\t\t\t\tthis.sentSettings = {};\n\t\t\t\tif (isExclusiveRequest) {\n\t\t\t\t\tthis.exclusiveOperation(false);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn request;\n\t\t}\n\n\t\tpublic savePendingSettings(timeout: number = 20): JQueryPromise {\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\t//Wait for the exclusive operation to finish.\n\t\t\t\tconst deferred = $.Deferred();\n\t\t\t\tconst result = deferred.then(() => this.doSavePendingSettings());\n\n\t\t\t\tconst startTime = Date.now();\n\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\tif (!this.isExclusiveOperationInProgress()) {\n\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\tdeferred.resolve();\n\t\t\t\t\t} else if ((Date.now() - startTime) > timeout) {\n\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\tdeferred.reject(new Error('Exclusive operation timed out.'));\n\t\t\t\t\t}\n\t\t\t\t}, 200);\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn this.doSavePendingSettings();\n\t\t}\n\n\t\tprivate doSavePendingSettings(): JQueryPromise {\n\t\t\t//If there are no changes, we don't need to do anything.\n\t\t\tif (_.isEmpty(this.pendingSettings)) {\n\t\t\t\treturn $.Deferred().resolve().promise();\n\t\t\t}\n\t\t\treturn this.saveChangeset();\n\t\t}\n\n\t\tpublic getCurrentChangeset(): Changeset {\n\t\t\treturn this.currentChangeset();\n\t\t}\n\n\t\t/**\n\t\t * Get any unsaved setting changes.\n\t\t *\n\t\t * @returns Object An object mapping setting IDs to their modified values.\n\t\t */\n\t\tpublic get unsavedChanges(): Record {\n\t\t\t//Include both pending settings and sent settings. Sent settings\n\t\t\t//might not be saved yet.\n\t\t\tlet unsavedSettings: Record = {};\n\t\t\t_.defaults(unsavedSettings, this.pendingSettings, this.sentSettings);\n\n\t\t\treturn _.mapValues(unsavedSettings, setting => setting.value());\n\t\t}\n\n\t\tpublic publishChangeset(): JQueryPromise {\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\treturn $.Deferred()\n\t\t\t\t\t.reject(new Error('Another exclusive changeset operation is already in progress.'))\n\t\t\t\t\t.promise();\n\t\t\t}\n\t\t\treturn this.saveChangeset('publish');\n\t\t}\n\n\t\tpublic trashChangeset(): JQueryPromise {\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\treturn $.Deferred()\n\t\t\t\t\t.reject(new Error('Another exclusive changeset operation is already in progress.'))\n\t\t\t\t\t.promise();\n\t\t\t}\n\n\t\t\tconst changeset = this.currentChangeset();\n\t\t\tif (!changeset.hasName()) {\n\t\t\t\t//The changeset hasn't been saved yet, so we can just mark it as trashed.\n\t\t\t\tchangeset.status('trash');\n\t\t\t\tchangeset.currentSessionChanges(0);\n\n\t\t\t\t//It's a success of sorts.\n\t\t\t\treturn $.Deferred().resolve(true).promise();\n\t\t\t}\n\n\t\t\tthis.exclusiveOperation(true);\n\n\t\t\tconst requestData: Record = {\n\t\t\t\taction: 'ws_ame_ac_trash_changeset',\n\t\t\t\t_ajax_nonce: this.trashChangesetNonce,\n\t\t\t\tchangeset: changeset.name\n\t\t\t};\n\n\t\t\tconst request = $.ajax({\n\t\t\t\turl: this.ajaxUrl,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: requestData,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttimeout: 20000,\n\t\t\t});\n\t\t\tthis.currentChangesetRequest = request;\n\n\t\t\trequest.done(function () {\n\t\t\t\tchangeset.status('trash');\n\t\t\t\tchangeset.currentSessionChanges(0);\n\t\t\t});\n\n\t\t\t//Unfortunately, jQuery doesn't seem to allow us to create a custom\n\t\t\t//error object and pass it to other handlers, so code that uses this\n\t\t\t//method will have to parse the error response itself.\n\n\t\t\trequest.always(() => {\n\t\t\t\tthis.currentChangesetRequest = null;\n\t\t\t\tthis.exclusiveOperation(false);\n\t\t\t});\n\n\t\t\treturn request;\n\t\t}\n\n\t\tpublic addInitialThemeMetadata(metadata: AdminThemeMetadata | null) {\n\t\t\tthis.underlyingMetadata(metadata);\n\t\t\tthis.metadataHasChanged(false);\n\t\t}\n\t}\n\n\tclass Changeset {\n\t\tpublic readonly name: KnockoutObservable;\n\t\tpublic readonly knownItemCount: KnockoutObservable;\n\t\tpublic readonly status: KnockoutObservable;\n\n\t\t/**\n\t\t * The number of times settings have been changed in this changeset\n\t\t * during the current customizer session.\n\t\t *\n\t\t * Note that this is not the same as the number settings in the changeset:\n\t\t * if the same setting is changed X times, this counter will increase by X,\n\t\t * but the changeset will still only have one entry for that setting.\n\t\t */\n\t\tpublic readonly currentSessionChanges: KnockoutObservable = ko.observable(0);\n\n\t\t/**\n\t\t * Once a changeset has been published or deleted, its contents can't be modified any more.\n\t\t * @private\n\t\t */\n\t\tprivate readonly fixedContentStatuses: Record =\n\t\t\t{'publish': true, 'trash': true, 'future': true};\n\n\t\tpublic readonly wasPublished: KnockoutObservable = ko.observable(false);\n\n\t\tconstructor(name: string = '', knownItemCount: number = 0, initialStatus: string | null = '') {\n\t\t\tthis.name = ko.observable(name);\n\n\t\t\tthis.name.subscribe((newName) => {\n\t\t\t\t//In theory, the type system should ensure that the name is always a string,\n\t\t\t\t//but that only works on the TS side. I've previously run into a bug where\n\t\t\t\t//a null value was sent from the server. Let's add a check here to make it\n\t\t\t\t//easier to spot bugs like that in the future.\n\t\t\t\tif ((typeof (newName as unknown) !== 'string')) {\n\t\t\t\t\tthrow new Error('Changeset name must always be a string, found ' + (typeof newName));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.knownItemCount = ko.observable(knownItemCount);\n\t\t\tthis.status = ko.observable(initialStatus ?? '');\n\t\t}\n\n\t\tpublic hasName(): boolean {\n\t\t\tconst name = this.name();\n\t\t\treturn (name !== '');\n\t\t}\n\n\t\tpublic canBeModified(): boolean {\n\t\t\treturn !this.fixedContentStatuses.hasOwnProperty(this.status());\n\t\t}\n\n\t\tpublic isNonEmpty(): boolean {\n\t\t\treturn (this.currentSessionChanges() > 0) || (this.knownItemCount() > 0)\n\t\t}\n\t}\n\n\tconst TemporaryChangesetName = 'temporary000'; //Note: Must match the value used in PHP.\n\n\t//region Admin theme\n\tconst UrlOrEmpty = z.union([\n\t\tz.string().url().max(1000),\n\t\tz.literal('')\n\t]);\n\n\tconst AdminThemeMetadata = z.object({\n\t\tpluginName: z.string().max(100),\n\t\tshortDescription: z.string().max(500),\n\n\t\tpluginSlug: z.string().max(64).toLowerCase().default('')\n\t\t\t.refine(\n\t\t\t\tfunction (input: string) {\n\t\t\t\t\t//Only allow alphanumeric characters, underscores, and dashes.\n\t\t\t\t\t//Empty string is allowed.\n\t\t\t\t\treturn /^[a-z0-9_-]*$/.test(input);\n\t\t\t\t},\n\t\t\t\t{message: 'The slug can only contain letters (a-z), numbers, underscores, and dashes.'}\n\t\t\t),\n\t\tidentifierPrefix: z.string().max(20).optional(),\n\n\t\tpluginVersion: z.string().default('1.0').optional(),\n\t\tpluginUrl: UrlOrEmpty.optional(),\n\t\tauthorName: z.string().max(100).optional(),\n\t\tauthorUrl: UrlOrEmpty.optional(),\n\t\trequiredWpVersion: z.string().max(30).default('4.7').optional(),\n\t\ttestedWpVersion: z.string().max(30).optional(),\n\t\twasEverConfirmed: z.boolean().default(false).optional(),\n\t});\n\n\ttype AdminThemeMetadata = z.infer;\n\n\tconst AdminThemeSettings = z.record(\n\t\t//Key type\n\t\tz.string().min(1),\n\t\t//Value type\n\t\tz.any()\n\t);\n\n\tclass AdminThemeImportReport {\n\t\tpublic totalSettings: number = 0;\n\t\tpublic importedSettings: number = 0;\n\t\tpublic invalidSettings: number = 0;\n\t\tpublic skippedSettings: number = 0;\n\t\tpublic differentImportedSettings: number = 0;\n\n\t\tpublic readonly pluginName: string;\n\n\t\tconstructor(\n\t\t\tpublic readonly fileName: string,\n\t\t\tpublic readonly metadata: AdminThemeMetadata\n\t\t) {\n\t\t\tthis.pluginName = metadata.pluginName || '(Unnamed)';\n\t\t}\n\t}\n\n\tinterface WithZodValidationResults extends ObservableValidationFields {\n\t\tameZodValidationError: KnockoutObservable;\n\t}\n\n\ttype ZodValidatedObservable = KnockoutComputed & WithZodValidationResults;\n\n\tfunction observableWithZodValidation>(\n\t\tvalue: z.output,\n\t\tschema: S\n\t): ZodValidatedObservable> {\n\t\tconst underlyingObservable = ko.observable(value);\n\n\t\tconst observable: ZodValidatedObservable = ko.pureComputed({\n\t\t\tread: underlyingObservable,\n\t\t\twrite: (newValue: T) => {\n\t\t\t\tconst validationResult = schema.safeParse(newValue);\n\t\t\t\tif (validationResult.success) {\n\t\t\t\t\tunderlyingObservable(validationResult.data);\n\t\t\t\t\tobservable.ameZodValidationError(null);\n\t\t\t\t\tobservable.ameValidationErrors([]);\n\t\t\t\t} else {\n\t\t\t\t\tobservable.ameZodValidationError(validationResult.error);\n\t\t\t\t\t//Convert Zod issues to ObservableValidationErrors.\n\t\t\t\t\tobservable.ameValidationErrors(validationResult.error.issues.map(issue => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcode: issue.code,\n\t\t\t\t\t\t\tmessage: issue.message\n\t\t\t\t\t\t} satisfies ObservableValidationError;\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t}) as ZodValidatedObservable;\n\n\t\tobservable.ameZodValidationError = ko.observable(null);\n\t\tobservable.ameValidationErrors = ko.observable([] as ObservableValidationError[]);\n\t\tobservable.ameIsValid = ko.pureComputed(() => {\n\t\t\tconst errors = observable.ameValidationErrors();\n\t\t\treturn !errors || errors.length === 0;\n\t\t});\n\n\t\treturn observable;\n\t}\n\n\tclass ObservableThemeMetadata {\n\t\tpublic readonly pluginName: ZodValidatedObservable;\n\t\tpublic readonly shortDescription: ZodValidatedObservable;\n\t\tpublic readonly pluginSlug: ZodValidatedObservable;\n\t\tpublic readonly identifierPrefix: ZodValidatedObservable;\n\t\tpublic readonly pluginVersion: ZodValidatedObservable;\n\t\tpublic readonly pluginUrl: ZodValidatedObservable;\n\t\tpublic readonly authorName: ZodValidatedObservable;\n\t\tpublic readonly authorUrl: ZodValidatedObservable;\n\t\tpublic readonly requiredWpVersion: ZodValidatedObservable;\n\t\tpublic readonly testedWpVersion: ZodValidatedObservable;\n\t\tpublic readonly wasEverConfirmed: ZodValidatedObservable;\n\n\t\tconstructor(metadata: AdminThemeMetadata) {\n\t\t\tthis.pluginName = observableWithZodValidation(\n\t\t\t\tmetadata.pluginName,\n\t\t\t\tAdminThemeMetadata.shape.pluginName\n\t\t\t);\n\t\t\tthis.shortDescription = observableWithZodValidation(\n\t\t\t\tmetadata.shortDescription,\n\t\t\t\tAdminThemeMetadata.shape.shortDescription\n\t\t\t);\n\n\t\t\tthis.pluginSlug = observableWithZodValidation(\n\t\t\t\tmetadata.pluginSlug ?? '',\n\t\t\t\tAdminThemeMetadata.shape.pluginSlug\n\t\t\t);\n\t\t\tthis.identifierPrefix = observableWithZodValidation(\n\t\t\t\tmetadata.identifierPrefix ?? '',\n\t\t\t\tAdminThemeMetadata.shape.identifierPrefix\n\t\t\t);\n\n\t\t\tthis.pluginVersion = observableWithZodValidation(\n\t\t\t\tmetadata.pluginVersion ?? '',\n\t\t\t\tAdminThemeMetadata.shape.pluginVersion\n\t\t\t);\n\t\t\tthis.pluginUrl = observableWithZodValidation(\n\t\t\t\tmetadata.pluginUrl ?? '',\n\t\t\t\tAdminThemeMetadata.shape.pluginUrl\n\t\t\t);\n\t\t\tthis.authorName = observableWithZodValidation(\n\t\t\t\tmetadata.authorName ?? '',\n\t\t\t\tAdminThemeMetadata.shape.authorName\n\t\t\t);\n\t\t\tthis.authorUrl = observableWithZodValidation(\n\t\t\t\tmetadata.authorUrl ?? '',\n\t\t\t\tAdminThemeMetadata.shape.authorUrl\n\t\t\t);\n\t\t\tthis.requiredWpVersion = observableWithZodValidation(\n\t\t\t\tmetadata.requiredWpVersion ?? '',\n\t\t\t\tAdminThemeMetadata.shape.requiredWpVersion\n\t\t\t);\n\t\t\tthis.testedWpVersion = observableWithZodValidation(\n\t\t\t\tmetadata.testedWpVersion ?? '',\n\t\t\t\tAdminThemeMetadata.shape.testedWpVersion\n\t\t\t);\n\n\t\t\tthis.wasEverConfirmed = observableWithZodValidation(\n\t\t\t\tmetadata.wasEverConfirmed ?? false,\n\t\t\t\tAdminThemeMetadata.shape.wasEverConfirmed\n\t\t\t);\n\t\t}\n\n\t\tpublic toObject(): AdminThemeMetadata {\n\t\t\treturn {\n\t\t\t\tpluginName: this.pluginName(),\n\t\t\t\tshortDescription: this.shortDescription(),\n\t\t\t\tpluginSlug: this.pluginSlug(),\n\t\t\t\tidentifierPrefix: this.identifierPrefix(),\n\t\t\t\tpluginVersion: this.pluginVersion(),\n\t\t\t\tpluginUrl: this.pluginUrl(),\n\t\t\t\tauthorName: this.authorName(),\n\t\t\t\tauthorUrl: this.authorUrl(),\n\t\t\t\trequiredWpVersion: this.requiredWpVersion(),\n\t\t\t\ttestedWpVersion: this.testedWpVersion(),\n\t\t\t\twasEverConfirmed: this.wasEverConfirmed()\n\t\t\t};\n\t\t}\n\n\t\tisValid(): boolean {\n\t\t\t//This seems really inelegant, but I can't think of a better way to do it.\n\t\t\treturn this.pluginName.ameIsValid()\n\t\t\t\t&& this.shortDescription.ameIsValid()\n\t\t\t\t&& this.pluginSlug.ameIsValid()\n\t\t\t\t&& this.identifierPrefix.ameIsValid()\n\t\t\t\t&& this.pluginVersion.ameIsValid()\n\t\t\t\t&& this.pluginUrl.ameIsValid()\n\t\t\t\t&& this.authorName.ameIsValid()\n\t\t\t\t&& this.authorUrl.ameIsValid()\n\t\t\t\t&& this.requiredWpVersion.ameIsValid()\n\t\t\t\t&& this.testedWpVersion.ameIsValid()\n\t\t\t\t&& this.wasEverConfirmed.ameIsValid();\n\t\t}\n\t}\n\n\tenum MetadataDialogMode {\n\t\tDownload,\n\t\tEdit\n\t}\n\n\tclass DownloadThemeDialog extends AmeBaseKnockoutDialog {\n\t\tpublic readonly meta: KnockoutObservable;\n\t\tpublic readonly areFieldsEditable: KnockoutComputed;\n\t\tpublic readonly isOperationInProgress: KnockoutObservable = ko.observable(false);\n\n\t\tpublic readonly mode: KnockoutObservable = ko.observable(MetadataDialogMode.Download);\n\n\t\tautoCancelButton: boolean = true;\n\t\tisConfirmButtonEnabled: KnockoutObservable;\n\t\treadonly confirmButtonLabel: KnockoutObservable;\n\n\t\tadvancedOptionsVisible: KnockoutObservable = ko.observable(false);\n\t\tadvancedOptionsToggleLabel: KnockoutComputed;\n\n\t\thelpVisible: KnockoutObservable = ko.observable(false);\n\t\thelpToggleLabel: KnockoutComputed;\n\t\thelpContainerVisible: KnockoutComputed;\n\n\t\tchangesetName: KnockoutObservable = ko.observable('');\n\t\tmetadataJson: KnockoutObservable = ko.observable('');\n\t\tdownloadCookieName: KnockoutObservable = ko.observable('');\n\n\t\tpublic readonly adminThemeTexts: Required;\n\n\t\tprivate cleanupCurrentDownload: () => void = () => {\n\t\t};\n\n\t\tconstructor(\n\t\t\tprivate readonly getChangesetName: () => string,\n\t\t\tprivate readonly savePendingChangesetData: () => JQueryPromise,\n\t\t\tprivate readonly metadataObservable: KnockoutObservable,\n\t\t\tcustomAdminThemeTexts: AdminThemeTexts\n\t\t) {\n\t\t\tsuper();\n\t\t\tthis.options.minWidth = 400;\n\n\t\t\tthis.adminThemeTexts = {\n\t\t\t\t...{\n\t\t\t\t\tgeneratorCreditPhrase: 'generated using the Admin Menu Editor Pro plugin.',\n\t\t\t\t\tstandalonePluginNote: 'The result is a standalone plugin that you can use without Admin Menu Editor Pro.',\n\t\t\t\t},\n\t\t\t\t...customAdminThemeTexts\n\t\t\t}\n\n\t\t\tlet initialMetadata = metadataObservable();\n\t\t\tif (initialMetadata === null) {\n\t\t\t\tinitialMetadata = this.getSampleMetadata();\n\t\t\t}\n\n\t\t\tthis.meta = ko.observable(new ObservableThemeMetadata(initialMetadata));\n\n\t\t\tthis.confirmButtonLabel = ko.computed(() => {\n\t\t\t\tif (this.mode() === MetadataDialogMode.Download) {\n\t\t\t\t\treturn 'Download Admin Theme';\n\t\t\t\t}\n\t\t\t\treturn 'OK';\n\t\t\t});\n\n\t\t\tthis.isConfirmButtonEnabled = ko.computed(() => {\n\t\t\t\tif (this.isOperationInProgress()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (getChangesetName() === '') {\n\t\t\t\t\t//To generate an admin theme, the changeset must have already been saved.\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn this.meta().isValid();\n\t\t\t});\n\n\t\t\tthis.areFieldsEditable = ko.computed(() => {\n\t\t\t\treturn !this.isOperationInProgress();\n\t\t\t});\n\n\t\t\tthis.advancedOptionsToggleLabel = ko.pureComputed((): string => {\n\t\t\t\treturn this.advancedOptionsVisible() ? 'Fewer options' : 'More options';\n\t\t\t});\n\t\t\tthis.helpToggleLabel = ko.pureComputed((): string => {\n\t\t\t\treturn this.helpVisible() ? 'Hide info' : 'How it works';\n\t\t\t});\n\n\t\t\t//Hide the help container in download mode.\n\t\t\tthis.helpContainerVisible = ko.pureComputed((): boolean => {\n\t\t\t\treturn this.mode() === MetadataDialogMode.Download;\n\t\t\t});\n\n\t\t\tthis.mode.subscribe((newMode: MetadataDialogMode) => {\n\t\t\t\tif (newMode === MetadataDialogMode.Download) {\n\t\t\t\t\tthis.title('Generate admin theme');\n\t\t\t\t} else if (newMode === MetadataDialogMode.Edit) {\n\t\t\t\t\tthis.title('Edit admin theme properties');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprivate getSampleMetadata() {\n\t\t\treturn AdminThemeMetadata.parse({\n\t\t\t\tpluginName: 'Custom Admin Theme',\n\t\t\t\tshortDescription: 'A custom admin theme ' + this.adminThemeTexts.generatorCreditPhrase,\n\t\t\t\tpluginVersion: '1.0',\n\t\t\t});\n\t\t}\n\n\t\tonOpen(event: JQueryEventObject, ui: any): void {\n\t\t\tlet latestMetadata = this.metadataObservable();\n\t\t\tif (latestMetadata === null) {\n\t\t\t\tlatestMetadata = this.getSampleMetadata();\n\t\t\t}\n\t\t\tthis.meta(new ObservableThemeMetadata(latestMetadata));\n\t\t}\n\n\t\ttoggleAdvancedOptions(): void {\n\t\t\tthis.advancedOptionsVisible(!this.advancedOptionsVisible());\n\t\t}\n\n\t\ttoggleHelp(): void {\n\t\t\tthis.helpVisible(!this.helpVisible());\n\t\t}\n\n\t\tonConfirm(event: JQueryEventObject) {\n\t\t\tif (!this.meta().isValid()) {\n\t\t\t\t//This should never happen because the confirm button is disabled\n\t\t\t\t//when the metadata is invalid.\n\t\t\t\talert('Error: The admin theme details are not valid.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst metadata = this.meta().toObject();\n\t\t\tmetadata.wasEverConfirmed = true;\n\t\t\tthis.metadataObservable(metadata);\n\n\t\t\tif (this.mode() === MetadataDialogMode.Edit) {\n\t\t\t\t//That's all we need to do in edit mode.\n\t\t\t\tthis.isOpen(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.triggerDownloadWithErrorReporting(metadata);\n\t\t}\n\n\t\tpublic triggerDownloadWithErrorReporting(metadata: AdminThemeMetadata) {\n\t\t\tif (this.isOperationInProgress()) {\n\t\t\t\talert('Error: Another operation is already in progress.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.triggerDownload(metadata)\n\t\t\t\t.fail((error: string) => {\n\t\t\t\t\tif (error !== '') {\n\t\t\t\t\t\talert('Error: ' + error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tprivate triggerDownload(metadata: AdminThemeMetadata): JQueryPromise {\n\t\t\tconst deferred = $.Deferred();\n\n\t\t\t//Sanity checks.\n\t\t\t//Download mode still requires a saved changeset.\n\t\t\tconst changesetName = this.getChangesetName();\n\t\t\tif (changesetName === '') {\n\t\t\t\treturn deferred.reject('The changeset has not been saved yet (name is empty).').promise();\n\t\t\t}\n\n\t\t\tthis.isOperationInProgress(true);\n\n\t\t\tconst $form = $('#ame-ac-theme-download-request-form');\n\t\t\tconst $frame = $('#ame-ac-theme-download-frame');\n\n\t\t\t//Cancel the operation and re-enable buttons if the request takes too long.\n\t\t\tlet isCancelledOrDone: boolean = false;\n\t\t\tconst requestTimeoutMs = 30000;\n\t\t\tconst requestStartTime = (new Date()).getTime();\n\t\t\tlet statusCheckInterval: ReturnType | null = null;\n\n\t\t\tconst cleanup = this.cleanupCurrentDownload = () => {\n\t\t\t\tisCancelledOrDone = true;\n\n\t\t\t\t$frame.off('load.ameAcDownloadAdminTheme');\n\t\t\t\tif (timeoutTimer) {\n\t\t\t\t\tclearTimeout(timeoutTimer);\n\t\t\t\t}\n\t\t\t\tif (statusCheckInterval) {\n\t\t\t\t\tclearInterval(statusCheckInterval);\n\t\t\t\t}\n\t\t\t\t$frame.attr('src', 'about:blank');\n\n\t\t\t\tthis.isOperationInProgress(false);\n\n\t\t\t\tif (this.cleanupCurrentDownload === cleanup) {\n\t\t\t\t\tthis.cleanupCurrentDownload = () => {\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst timeoutTimer = setTimeout(() => {\n\t\t\t\tdeferred.reject('The download operation timed out.');\n\t\t\t\tcleanup();\n\t\t\t}, requestTimeoutMs);\n\n\t\t\tthis.savePendingChangesetData().then(\n\t\t\t\t() => {\n\t\t\t\t\tif (isCancelledOrDone) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.changesetName(changesetName);\n\t\t\t\t\tthis.metadataJson(JSON.stringify(metadata));\n\n\t\t\t\t\t//The server will set a cookie with a unique name that can be used\n\t\t\t\t\t//to check if the download has been initiated. Note that the user\n\t\t\t\t\t//can still cancel the download.\n\t\t\t\t\tconst cookieName = ('ameAcFileDownload_'\n\t\t\t\t\t\t+ new Date().getTime()\n\t\t\t\t\t\t+ '_'\n\t\t\t\t\t\t+ Math.round(Math.random() * 10000) //No dots allowed in these cookie names.\n\t\t\t\t\t);\n\t\t\t\t\tthis.downloadCookieName(cookieName);\n\n\t\t\t\t\t//Clear the frame to prevent the old response from being read.\n\t\t\t\t\t$frame.attr('src', 'about:blank');\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$frame.contents().find('body').html('');\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t//Ignore but log cross-origin errors. These should not happen in practice.\n\t\t\t\t\t\tif (console && console.error) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tstatusCheckInterval = setInterval(() => {\n\t\t\t\t\t\tconst cookieValue = $.cookie(cookieName);\n\t\t\t\t\t\tif (cookieValue) {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\t$.removeCookie(cookieName);\n\n\t\t\t\t\t\t\t//Close the dialog when the download starts.\n\t\t\t\t\t\t\tthis.isOpen(false);\n\t\t\t\t\t\t\tdeferred.resolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((new Date()).getTime() - requestStartTime > requestTimeoutMs) {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\tdeferred.reject('The download operation timed out.');\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1000);\n\n\t\t\t\t\t$frame.on('load.ameAcDownloadAdminTheme', () => {\n\t\t\t\t\t\t//Get the response from the frame. It should be JSON displayed as text.\n\t\t\t\t\t\tconst responseText = String($frame.contents().text()).trim();\n\t\t\t\t\t\tconst response = JSON.parse(responseText);\n\n\t\t\t\t\t\tcleanup();\n\n\t\t\t\t\t\tif ((response === null) || (typeof response !== 'object')) {\n\t\t\t\t\t\t\tdeferred.reject('Received an invalid response from the server.');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (!response.success) {\n\t\t\t\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t\t\t\tif (response.data.message) {\n\t\t\t\t\t\t\t\t\terrorMessage = response.data.message;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\terrorMessage = 'An unknown error occurred on the server.';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdeferred.reject(errorMessage);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t//This should never happen in practice.\n\t\t\t\t\t\t\t\tdeferred.reject('The server did not start the download correctly.');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t$form.trigger('submit');\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tif (isCancelledOrDone) {\n\t\t\t\t\t\tif (deferred.state() === 'pending') {\n\t\t\t\t\t\t\tdeferred.reject(''); //No error message; the user probably cancelled the operation.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcleanup();\n\t\t\t\t\tdeferred.reject('Could not save the changeset data before generating an admin theme.');\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn deferred.promise();\n\t\t}\n\n\t\tonClose(event: JQueryEventObject, ui: any) {\n\t\t\tthis.cleanupCurrentDownload();\n\t\t}\n\t}\n\n\t//endregion\n\n\tclass SectionNavigation {\n\t\tprivate sectionNavStack: KnockoutObservableArray = ko.observableArray([] as string[]);\n\t\tprivate $sectionList: JQuery;\n\n\t\tpublic readonly breadcrumbs: KnockoutObservable;\n\n\t\tconstructor() {\n\t\t\tthis.$sectionList = $('#ame-ac-container-collection');\n\n\t\t\tthis.$sectionList.on('click', '.ame-ac-section-link', (event) => {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (event.currentTarget === null) {\n\t\t\t\t\treturn; //Shouldn't happen in practice, but let's satisfy the type checker.\n\t\t\t\t}\n\n\t\t\t\tconst targetId = $(event.currentTarget).data('target-id');\n\t\t\t\tif (targetId) {\n\t\t\t\t\tthis.navigateToSection(targetId);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$sectionList.on('click', '.ame-ac-section-back-button', (event) => {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.navigateBack();\n\t\t\t});\n\n\t\t\tthis.breadcrumbs = ko.pureComputed(() => {\n\t\t\t\treturn this.sectionNavStack()\n\t\t\t\t\t.map((sectionId) => $('#' + sectionId))\n\t\t\t\t\t.filter(($section) => $section.length > 0)\n\t\t\t\t\t.map(($section) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: $section.find('.ame-ac-section-title .ame-ac-section-own-title')\n\t\t\t\t\t\t\t\t.first().text()\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tnavigateToSection(sectionElementId: string) {\n\t\t\tconst $section = $('#' + sectionElementId);\n\t\t\tif ($section.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($section.hasClass('ame-ac-current-section')) {\n\t\t\t\treturn; //Already on this section.\n\t\t\t}\n\n\t\t\t//If the requested section is in the navigation stack, navigate back\n\t\t\t//to it instead of putting more sections on the stack.\n\t\t\tconst stackIndex = this.sectionNavStack.indexOf(sectionElementId);\n\t\t\tif (stackIndex !== -1) {\n\t\t\t\twhile (this.sectionNavStack().length > stackIndex) {\n\t\t\t\t\tthis.navigateBack();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst $previousSection = this.$sectionList.find('.ame-ac-current-section');\n\t\t\tif ($previousSection.length > 0) {\n\t\t\t\tthis.expectTransition($previousSection, '.ame-ac-section');\n\t\t\t\t$previousSection\n\t\t\t\t\t.removeClass('ame-ac-current-section')\n\t\t\t\t\t.addClass('ame-ac-previous-section');\n\t\t\t\tthis.sectionNavStack.push($previousSection.attr('id'));\n\n\t\t\t\t$previousSection.trigger('adminMenuEditor:leaveSection');\n\t\t\t}\n\n\t\t\tthis.expectTransition($section, '.ame-ac-section');\n\t\t\t$section.addClass('ame-ac-current-section');\n\n\t\t\t$section.trigger('adminMenuEditor:enterSection');\n\t\t}\n\n\t\tnavigateBack() {\n\t\t\tif (this.sectionNavStack().length < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst $newCurrentSection = $('#' + this.sectionNavStack.pop());\n\t\t\tif ($newCurrentSection.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst $oldCurrentSection = this.$sectionList.find('.ame-ac-current-section');\n\t\t\tthis.expectTransition($oldCurrentSection, '.ame-ac-section');\n\t\t\t$oldCurrentSection.removeClass('ame-ac-current-section ame-ac-previous-section');\n\t\t\t$oldCurrentSection.trigger('adminMenuEditor:leaveSection');\n\n\t\t\tconst $oldPreviousSection = this.$sectionList.find('.ame-ac-previous-section');\n\t\t\t$oldPreviousSection.removeClass('ame-ac-previous-section');\n\n\t\t\t//Show the new current section.\n\t\t\tthis.expectTransition($newCurrentSection, '.ame-ac-section');\n\t\t\t$newCurrentSection.addClass('ame-ac-current-section');\n\t\t\t$newCurrentSection.trigger('adminMenuEditor:enterSection');\n\n\t\t\t//The next section in the stack becomes the previous section.\n\t\t\tif (this.sectionNavStack().length > 0) {\n\t\t\t\tthis.$sectionList.find('#' + this.sectionNavStack()[this.sectionNavStack().length - 1])\n\t\t\t\t\t.addClass('ame-ac-previous-section');\n\t\t\t}\n\t\t}\n\n\t\t//Add a special class to sections when they have an active CSS transition.\n\t\t//This is used to keep both sections visible while the previous section\n\t\t//slides out and the next section slides in.\n\t\texpectTransition($element: JQuery, requiredSelector: string) {\n\t\t\tif (prefersReducedMotion) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($element.data('ameHasTransitionEvents')) {\n\t\t\t\treturn; //Event handler(s) already added.\n\t\t\t}\n\n\t\t\tconst transitionEvents = 'transitionend transitioncancel';\n\n\t\t\t$element.addClass('ame-ac-transitioning');\n\n\t\t\tfunction transitionEndCallback(event: JQueryEventObject) {\n\t\t\t\t//Ignore events that bubble from child elements.\n\t\t\t\tif (!$(event.target).is(requiredSelector)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$element\n\t\t\t\t\t.off(transitionEvents, transitionEndCallback)\n\t\t\t\t\t.data('ameHasTransitionEvents', null)\n\t\t\t\t\t.removeClass('ame-ac-transitioning');\n\t\t\t}\n\n\t\t\t$element.data('ameHasTransitionEvents', true);\n\t\t\t$element.on(transitionEvents, transitionEndCallback);\n\t\t}\n\t}\n\n\texport interface NavigationBreadcrumb {\n\t\ttitle: string;\n\t}\n\n\t/**\n\t * Whether to ask for confirmation when the user tries to exit the customizer.\n\t */\n\tenum ExitPromptMode {\n\t\t/**\n\t\t * Ask if there are unsaved changes.\n\t\t */\n\t\tUnsavedChanges = 1,\n\n\t\t/**\n\t\t * Ask if the current changeset hasn't been published yet.\n\t\t */\n\t\tUnpublishedChanges = 2\n\t}\n\n\texport class AdminCustomizer extends AmeAdminCustomizerBase.AdminCustomizerBase implements CustomizableVmInterface {\n\t\tprivate readonly exitPromptMessage = 'Unsaved changes will be lost if you navigate away from this page.';\n\t\t//Admin themes generated by this plugin should be fairly small.\n\t\tprivate readonly maxImportFileSize = 500 * 1024;\n\n\t\tsectionNavigation: SectionNavigation;\n\t\tsettings: CustomizerSettingsCollection;\n\t\tpublic readonly interfaceStructure: InterfaceStructure;\n\n\t\tprivate readonly $previewFrame: JQuery;\n\n\t\t/**\n\t\t * Preview frame URL.\n\t\t */\n\t\tprivate currentPreviewUrl: string | null = null;\n\t\t/**\n\t\t * The default preview URL that can be used when the current frame URL cannot be detected.\n\t\t */\n\t\tprivate readonly initialPreviewUrl: string;\n\t\tprivate previewConnection: ReturnType | null = null;\n\t\tprivate readonly refreshPreviewNonce: string;\n\n\t\tprivate readonly $saveButton: JQuery;\n\n\t\tpublic readonly downloadThemeDialog: DownloadThemeDialog;\n\t\tprivate $extraActionMenu: JQuery | null = null;\n\t\tprivate $extraActionButton: JQuery | null = null;\n\n\t\tprivate $importFileInput: JQuery | null = null;\n\t\tprivate isImporting: KnockoutObservable = ko.observable(false);\n\t\tprivate lastImportReport: KnockoutObservable = ko.observable(null);\n\t\tprivate isImportReportVisible: KnockoutObservable = ko.observable(true);\n\n\t\tprivate isDiscardingChanges: KnockoutObservable = ko.observable(false);\n\n\t\tpublic readonly isGeneralOverlayVisible: KnockoutObservable;\n\n\t\tprivate readonly importActionEnabled: KnockoutComputed;\n\t\tprivate readonly discardChangesActionEnabled: KnockoutComputed;\n\t\tprivate readonly downloadThemeActionEnabled: KnockoutComputed;\n\n\t\tprivate readonly customBasePath: string | null;\n\t\tprivate readonly consoleLoggingEnabled: boolean;\n\t\tprivate readonly exitPromptMode: ExitPromptMode;\n\n\t\tconstructor(scriptData: ScriptData) {\n\t\t\tsuper(scriptData);\n\n\t\t\tthis.settings = new CustomizerSettingsCollection(\n\t\t\t\tscriptData.ajaxUrl,\n\t\t\t\tscriptData.saveChangesetNonce,\n\t\t\t\tscriptData.trashChangesetNonce,\n\t\t\t\tscriptData.changesetName,\n\t\t\t\tscriptData.changesetItemCount,\n\t\t\t\tscriptData.changesetStatus\n\t\t\t);\n\t\t\t_.forOwn(scriptData.settings, (data, id) => {\n\t\t\t\tif (typeof id === 'string') {\n\t\t\t\t\tthis.settings.add(unserializeSetting(id, data));\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (scriptData.changesetThemeMetadata) {\n\t\t\t\tthis.settings.addInitialThemeMetadata(scriptData.changesetThemeMetadata);\n\t\t\t}\n\n\t\t\tthis.customBasePath = scriptData.customBasePath || null;\n\t\t\tthis.consoleLoggingEnabled = scriptData.isWpDebugEnabled || false;\n\n\t\t\tif ((typeof scriptData.exitPromptMode === 'number') && (scriptData.exitPromptMode in ExitPromptMode)) {\n\t\t\t\tthis.exitPromptMode = scriptData.exitPromptMode;\n\t\t\t} else {\n\t\t\t\tthis.exitPromptMode = ExitPromptMode.UnpublishedChanges;\n\t\t\t}\n\n\t\t\tlet sectionIdCounter = 0;\n\n\t\t\tthis.interfaceStructure = unserializeUiElement(\n\t\t\t\tscriptData.interfaceStructure,\n\t\t\t\tthis.settings.get.bind(this.settings),\n\t\t\t\t(data: AnySpecificElementData) => {\n\t\t\t\t\tswitch (data.t) {\n\t\t\t\t\t\tcase 'section':\n\t\t\t\t\t\t\tdata.component = 'ame-ac-section';\n\t\t\t\t\t\t\t//All sections must have unique IDs for navigation to work.\n\t\t\t\t\t\t\tif (!data.id) {\n\t\t\t\t\t\t\t\tdata.id = 'autoID-' + (++sectionIdCounter);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'control-group':\n\t\t\t\t\t\t\tdata.component = 'ame-ac-control-group';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'control':\n\t\t\t\t\t\t\t//Tell controls that use number inputs to position the popup\n\t\t\t\t\t\t\t//slider within the customizer sidebar.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(data.component === 'ame-number-input')\n\t\t\t\t\t\t\t\t|| (data.component === 'ame-box-dimensions')\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tdata.params = data.params || {};\n\t\t\t\t\t\t\t\tdata.params.popupSliderWithin = '#ame-ac-sidebar-content';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//Replace regular separators with AC-specific ones.\n\t\t\t\t\t\t\tif (data.component === 'ame-horizontal-separator') {\n\t\t\t\t\t\t\t\tdata.component = 'ame-ac-separator';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t//Remove the reload parameter from the URL. It is only used to avoid\n\t\t\t//caching issues, and is not needed otherwise.\n\t\t\tconst currentUrl = new URL(window.location.href);\n\t\t\tif (currentUrl.searchParams.get('_ame-ac-reload') !== null) {\n\t\t\t\tcurrentUrl.searchParams.delete('_ame-ac-reload');\n\t\t\t\twindow.history.replaceState({}, '', currentUrl.href);\n\t\t\t}\n\n\t\t\t//Also remove the \"request new changeset\" parameter.\n\t\t\tif (currentUrl.searchParams.get('_ame-ac-new-changeset') !== null) {\n\t\t\t\tcurrentUrl.searchParams.delete('_ame-ac-new-changeset');\n\t\t\t\twindow.history.replaceState({}, '', currentUrl.href);\n\t\t\t}\n\n\t\t\tconst changesetPathTemplate: string | null = scriptData.changesetPathTemplate;\n\t\t\tconst changesetPlaceholder = '{changeset}';\n\n\t\t\tfunction addChangesetToUrl(currentUrl: string, changesetName: string): URL {\n\t\t\t\tconst url = new URL(currentUrl);\n\t\t\t\tif (changesetPathTemplate) {\n\t\t\t\t\turl.pathname = changesetPathTemplate.replace(changesetPlaceholder, changesetName);\n\t\t\t\t\t//With a custom path, the \"page\" parameter that points to the AC\n\t\t\t\t\t//admin page is not necessary and would be confusing.\n\t\t\t\t\turl.searchParams.delete('page');\n\t\t\t\t\t//When the changeset name is stored in the path, the \"ame-ac-changeset\"\n\t\t\t\t\t//parameter is no longer needed, and could be out of sync with the path.\n\t\t\t\t\turl.searchParams.delete('ame-ac-changeset');\n\t\t\t\t} else {\n\t\t\t\t\turl.searchParams.set('ame-ac-changeset', changesetName);\n\t\t\t\t}\n\t\t\t\treturn url;\n\t\t\t}\n\n\t\t\tfunction getChangesetFromUrl(url: string): string {\n\t\t\t\tconst parsedUrl = new URL(url);\n\t\t\t\tif (changesetPathTemplate) {\n\t\t\t\t\tfunction escapeRegExp(input: string): string {\n\t\t\t\t\t\treturn input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst placeholderStart = changesetPathTemplate.indexOf(changesetPlaceholder);\n\t\t\t\t\tconst placeholderEnd = placeholderStart + changesetPlaceholder.length;\n\n\t\t\t\t\tconst changesetPathTemplateRegex = new RegExp(\n\t\t\t\t\t\t'^' + escapeRegExp(changesetPathTemplate.slice(0, placeholderStart))\n\t\t\t\t\t\t+ '([^a-zA-Z0-9]+)'\n\t\t\t\t\t\t+ escapeRegExp(changesetPathTemplate.slice(placeholderEnd))\n\t\t\t\t\t);\n\n\t\t\t\t\tconst match = parsedUrl.pathname.match(changesetPathTemplateRegex);\n\t\t\t\t\treturn match ? match[1] : '';\n\t\t\t\t} else {\n\t\t\t\t\treturn parsedUrl.searchParams.get('ame-ac-changeset') ?? '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Add the changeset name to the URL (if not already present).\n\t\t\tif (getChangesetFromUrl(window.location.href) !== this.settings.changesetName()) {\n\t\t\t\tconst newUrl = addChangesetToUrl(window.location.href, this.settings.changesetName());\n\t\t\t\twindow.history.replaceState({}, '', newUrl.href);\n\t\t\t}\n\n\t\t\t//When the changeset name changes, also change the URL.\n\t\t\tthis.settings.changesetName.subscribe((changesetName) => {\n\t\t\t\tconst url = addChangesetToUrl(window.location.href, changesetName);\n\t\t\t\tif (scriptData.changesetPushStateEnabled) {\n\t\t\t\t\twindow.history.pushState({}, '', url.href);\n\t\t\t\t} else {\n\t\t\t\t\twindow.history.replaceState({}, '', url.href);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$saveButton = $('#ame-ac-apply-changes');\n\n\t\t\t//The save button should be enabled when:\n\t\t\t// - There are non-zero changes in the current changeset.\n\t\t\t// - All settings are valid.\n\t\t\t// - The changeset is not in the process of being published, deleted, etc.\n\t\t\t// - The contents of the changeset can be modified (e.g. not already published).\n\t\t\tconst isSaveButtonEnabled = ko.pureComputed(() => {\n\t\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\t\t\t\treturn (\n\t\t\t\t\tchangeset.isNonEmpty()\n\t\t\t\t\t&& changeset.canBeModified()\n\t\t\t\t\t&& !this.settings.isExclusiveOperationInProgress()\n\t\t\t\t\t&& !this.settings.hasValidationErrors()\n\t\t\t\t);\n\t\t\t});\n\t\t\t//Update button state when the customizer loads.\n\t\t\tthis.$saveButton.prop('disabled', !isSaveButtonEnabled());\n\t\t\t//And also on changes.\n\t\t\tisSaveButtonEnabled.subscribe((isEnabled) => {\n\t\t\t\tthis.$saveButton.prop('disabled', !isEnabled);\n\t\t\t\t//Change the text back to the default when the button is enabled.\n\t\t\t\tif (isEnabled) {\n\t\t\t\t\tthis.$saveButton.val(this.$saveButton.data('default-text') ?? 'Save Changes');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//Handle the \"Save Changes\" button.\n\t\t\tthis.$saveButton.on('click', () => {\n\t\t\t\t//Show the spinner.\n\t\t\t\tconst $spinner = $('#ame-ac-primary-actions .spinner');\n\t\t\t\t$spinner.css('visibility', 'visible').show();\n\n\t\t\t\tconst publishFailNoticeId = 'ame-ac-publish-failed-notice';\n\t\t\t\t//Remove the previous error notification, if any.\n\t\t\t\t$('#' + publishFailNoticeId).remove();\n\n\t\t\t\tconst promise = this.settings.publishChangeset();\n\n\t\t\t\tpromise.fail((error) => {\n\t\t\t\t\t//Show a dismissible error notification.\n\t\t\t\t\tlet message = 'An unexpected error occurred while saving changes.';\n\t\t\t\t\tif (typeof error === 'string') {\n\t\t\t\t\t\tmessage = error;\n\t\t\t\t\t} else if (error instanceof Error) {\n\t\t\t\t\t\tmessage = error.message;\n\t\t\t\t\t} else if (typeof error.responseJSON === 'object') {\n\t\t\t\t\t\tmessage = _.get(error.responseJSON, ['data', 'message'], message);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst $notice = $('
')\n\t\t\t\t\t\t.attr('id', publishFailNoticeId)\n\t\t\t\t\t\t.addClass('notice notice-error is-dismissible')\n\t\t\t\t\t\t.text(message);\n\n\t\t\t\t\t//WordPress won't automatically add the dismiss button to a dynamically\n\t\t\t\t\t//generated notice like this, so we have to do it.\n\t\t\t\t\t$notice.append(\n\t\t\t\t\t\t$('')\n\t\t\t\t\t\t\t.append('Dismiss this notice')\n\t\t\t\t\t\t\t.on('click', (event) => {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t$notice.remove(); //Not as fancy as WP does it.\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\t\tconst $container = $('#ame-ac-global-notification-area');\n\t\t\t\t\t$container.append($notice);\n\t\t\t\t})\n\n\t\t\t\tpromise.done(() => {\n\t\t\t\t\tthis.$saveButton.val(this.$saveButton.data('published-text') ?? 'Saved');\n\n\t\t\t\t\t//The preview could be stale. For example, the color scheme module\n\t\t\t\t\t//switches between \"actual\" and \"preview\" color schemes dynamically,\n\t\t\t\t\t//but the \"actual\" scheme could change after applying new settings.\n\t\t\t\t\t//Let's reload the preview frame to make sure it's up-to-date.\n\t\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t\t});\n\n\t\t\t\tpromise.always(() => {\n\t\t\t\t\t$spinner.css('visibility', 'hidden');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t//Prevent the user from interacting with settings while the changeset is being modified.\n\t\t\tthis.settings.isExclusiveOperationInProgress.subscribe((isInProgress) => {\n\t\t\t\t$('#ame-ac-sidebar-blocker-overlay').toggle(isInProgress);\n\t\t\t});\n\n\t\t\t//Show a general overlay with a progress spinner while something is happening.\n\t\t\tthis.isGeneralOverlayVisible = ko.pureComputed(() => {\n\t\t\t\treturn this.isImporting() || this.isDiscardingChanges();\n\t\t\t});\n\n\t\t\t//Initialize the \"download admin theme\" dialog.\n\t\t\tthis.downloadThemeDialog = new DownloadThemeDialog(\n\t\t\t\t() => this.settings.getCurrentChangeset().name(),\n\t\t\t\t() => this.settings.savePendingSettings(),\n\t\t\t\tthis.settings.adminThemeMetadata,\n\t\t\t\tscriptData\n\t\t\t);\n\n\t\t\t//Toggle available extra actions based on changeset status.\n\t\t\tthis.importActionEnabled = ko.pureComputed(() => {\n\t\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\t\t\t\treturn changeset && changeset.canBeModified()\n\t\t\t\t\t&& !this.settings.isExclusiveOperationInProgress();\n\t\t\t});\n\t\t\tthis.importActionEnabled.subscribe((isEnabled) => {\n\t\t\t\tif (this.$extraActionMenu) {\n\t\t\t\t\tthis.$extraActionMenu.find('.ame-ac-import-theme-action')\n\t\t\t\t\t\t.toggleClass('ui-state-disabled', !isEnabled);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.discardChangesActionEnabled = ko.pureComputed(() => {\n\t\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\t\t\t\treturn changeset && changeset.isNonEmpty() && changeset.canBeModified()\n\t\t\t\t\t&& !this.settings.isExclusiveOperationInProgress()\n\t\t\t});\n\t\t\tthis.discardChangesActionEnabled.subscribe((isEnabled) => {\n\t\t\t\tif (this.$extraActionMenu) {\n\t\t\t\t\tthis.$extraActionMenu.find('.ame-ac-discard-changes-action')\n\t\t\t\t\t\t.toggleClass('ui-state-disabled', !isEnabled);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.downloadThemeActionEnabled = ko.pureComputed(() => {\n\t\t\t\treturn (\n\t\t\t\t\t!this.settings.isExclusiveOperationInProgress()\n\t\t\t\t\t&& !this.downloadThemeDialog.isOperationInProgress()\n\t\t\t\t\t//The changeset must already be saved for the download to work,\n\t\t\t\t\t//which means it should have a name.\n\t\t\t\t\t&& (this.settings.getCurrentChangeset().name() !== '')\n\t\t\t\t\t//The changeset should probably be non-empty.\n\t\t\t\t\t&& this.settings.getCurrentChangeset().isNonEmpty()\n\t\t\t\t);\n\t\t\t});\n\t\t\tthis.downloadThemeActionEnabled.subscribe((isEnabled) => {\n\t\t\t\tif (this.$extraActionMenu) {\n\t\t\t\t\tthis.$extraActionMenu.find('.ame-ac-download-theme-action')\n\t\t\t\t\t\t.toggleClass('ui-state-disabled', !isEnabled);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.sectionNavigation = new SectionNavigation();\n\n\t\t\t//Set up the preview frame.\n\t\t\tthis.$previewFrame = $('iframe#ame-ac-preview');\n\n\t\t\tthis.initialPreviewUrl = scriptData.initialPreviewUrl;\n\t\t\tthis.refreshPreviewNonce = scriptData.refreshPreviewNonce;\n\n\t\t\tthis.$previewFrame.on('load', () => {\n\t\t\t\tthis.isFrameLoading = false;\n\n\t\t\t\t//The URL that was actually loaded might not match the one that\n\t\t\t\t//was requested (e.g. because there was a redirect).\n\t\t\t\tthis.currentPreviewUrl = null;\n\n\t\t\t\t//Close the previous postMessage connection.\n\t\t\t\tif (this.previewConnection) {\n\t\t\t\t\tthis.previewConnection.disconnect();\n\t\t\t\t\tthis.previewConnection = null;\n\t\t\t\t}\n\n\t\t\t\tconst frame = this.$previewFrame.get(0) as HTMLIFrameElement;\n\t\t\t\tif (!frame || !(frame instanceof HTMLIFrameElement)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Try to get the preview URL from the iframe.\n\t\t\t\ttry {\n\t\t\t\t\tconst url = frame.contentWindow?.location.href;\n\t\t\t\t\tif (url) {\n\t\t\t\t\t\tthis.currentPreviewUrl = url;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t//We can't get the URL directly, probably because it's a cross-origin iframe.\n\t\t\t\t}\n\n\t\t\t\tthis.previewConnection = AmeAcCommunicator.connectToChild(\n\t\t\t\t\tframe,\n\t\t\t\t\t{\n\t\t\t\t\t\t'setPreviewUrl': (url: string) => {\n\t\t\t\t\t\t\tif (this.isPreviewableUrl(url)) {\n\t\t\t\t\t\t\t\tthis.previewUrl = url;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'notifyPreviewUrlChanged': (url: string) => {\n\t\t\t\t\t\t\tthis.currentPreviewUrl = url;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tthis.allowedCommOrigins,\n\t\t\t\t\tscriptData.isWpDebugEnabled\n\t\t\t\t);\n\n\t\t\t\tthis.previewConnection.promise.then((connection) => {\n\t\t\t\t\tif (typeof connection === 'undefined') {\n\t\t\t\t\t\t//This should never happen, but the type checker doesn't know that.\n\t\t\t\t\t\tthrow new Error('Unexpected error: Connection apparently succeeded, but the connection object is undefined');\n\t\t\t\t\t}\n\n\t\t\t\t\tconnection.execute('getCurrentUrl').then((url) => {\n\t\t\t\t\t\tif (url && (typeof url === 'string')) {\n\t\t\t\t\t\t\tthis.currentPreviewUrl = url;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t//Notify other scripts that the preview frame is loaded and\n\t\t\t\t\t//the postMessage connection is ready for use.\n\t\t\t\t\t$('body').trigger('adminMenuEditor:acPreviewConnectionReady');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.previewUrl = this.initialPreviewUrl;\n\n\t\t\t//Notify other scripts. This lets them register custom controls and so on.\n\t\t\t$('#ame-ac-admin-customizer').trigger('adminMenuEditor:acRegister', [this]);\n\n\t\t\tconst throttledReloadPreview = _.throttle(\n\t\t\t\t() => {\n\t\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t\t},\n\t\t\t\t1000, //The reload method does its own throttling, so we use a low wait time here.\n\t\t\t\t{leading: true, trailing: true}\n\t\t\t);\n\n\t\t\t//Refresh the preview when any setting changes.\n\t\t\tthis.settings.addChangeListener((setting, newValue) => {\n\t\t\t\tif (\n\t\t\t\t\tsetting.supportsPostMessage\n\t\t\t\t\t&& this.previewConnection\n\t\t\t\t\t&& this.previewConnection.isConnected\n\t\t\t\t) {\n\t\t\t\t\tthis.previewConnection.execute('previewSetting', setting.id, newValue);\n\t\t\t\t} else {\n\t\t\t\t\tlet reason: string = 'Unknown';\n\t\t\t\t\tif (!setting.supportsPostMessage) {\n\t\t\t\t\t\treason = 'Setting \"' + setting.id + '\" does not support postMessage';\n\t\t\t\t\t} else if (!this.previewConnection) {\n\t\t\t\t\t\treason = 'No preview connection';\n\t\t\t\t\t} else if (!this.previewConnection.isConnected) {\n\t\t\t\t\t\treason = 'Preview connection is not connected';\n\t\t\t\t\t}\n\t\t\t\t\tthis.log('Reloading the preview frame because: ' + reason);\n\n\t\t\t\t\tthrottledReloadPreview();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst registerUnloadPrompt = () => {\n\t\t\t\t//Ask for confirmation when the user tries to leave the page and the changeset\n\t\t\t\t//has unpublished/unsaved changes.\n\t\t\t\t$(window).on('beforeunload.ame-ac-exit-confirm', (event) => {\n\t\t\t\t\tif (this.isExitPromptNeeded()) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t//Note: The confirmation prompt will only be displayed if the user\n\t\t\t\t\t\t//has interacted with the page (e.g. clicked something).\n\n\t\t\t\t\t\t//As of this writing, MDN says that some browsers still don't support triggering\n\t\t\t\t\t\t//an \"unsaved changes\" prompt with event.preventDefault(). You need to set\n\t\t\t\t\t\t//event.returnValue to a string or return a string from the event handler.\n\t\t\t\t\t\t//Modern browsers will ignore the content and display their own generic message.\n\t\t\t\t\t\treturn this.exitPromptMessage;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t/*\n\t\t\t Allegedly, registering a beforeunload handler can cause the browser to\n\t\t\t disable some optimizations, so let's only do it when the user changes\n\t\t\t something or the changeset already contains some changes.\n\t\t\t */\n\t\t\tif (this.settings.getCurrentChangeset().isNonEmpty()) {\n\t\t\t\tregisterUnloadPrompt();\n\t\t\t} else {\n\t\t\t\tconst listenerId = this.settings.addChangeListener(() => {\n\t\t\t\t\t//Remove the listener after it has been triggered once.\n\t\t\t\t\tthis.settings.removeChangeListener(listenerId);\n\t\t\t\t\tregisterUnloadPrompt();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tgetSettingObservable(settingId: string, defaultValue: any): KnockoutObservable {\n\t\t\t//Let's just implement this temporarily while working on refactoring this\n\t\t\t//stuff to use KO components.\n\t\t\treturn this.settings\n\t\t\t\t.get(settingId)\n\t\t\t\t.map(setting => setting.value)\n\t\t\t\t.getOrElse(ko.observable(defaultValue));\n\t\t}\n\n\t\tgetAllSettingValues(): Record {\n\t\t\tthrow new Error('Method not implemented.');\n\t\t}\n\n\t\tget previewUrl(): string | null {\n\t\t\treturn this.currentPreviewUrl;\n\t\t}\n\n\t\tset previewUrl(url: string | null) {\n\t\t\tif (url === this.currentPreviewUrl) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//The URL starts out as null, but it cannot be set to NULL again after\n\t\t\t//the preview frame has been loaded.\n\t\t\tif (url === null) {\n\t\t\t\tthrow new Error('Cannot directly set preview URL to null');\n\t\t\t}\n\n\t\t\tif (this.isPreviewableUrl(url)) {\n\t\t\t\tthis.navigatePreviewFrame(url);\n\t\t\t}\n\t\t}\n\n\t\tprivate navigatePreviewFrame(url: string | null = null, forceReload: boolean = false) {\n\t\t\tconst oldUrl = this.previewUrl;\n\t\t\tif (url === null) {\n\t\t\t\turl = oldUrl ?? this.initialPreviewUrl;\n\t\t\t}\n\n\t\t\tconst isSameUrl = (oldUrl === url);\n\t\t\tif (isSameUrl && !forceReload) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//If there are any unsaved changes, let's include them in the preview by simulating\n\t\t\t//a form submission and sending the changes as form data. The server-side component\n\t\t\t//will merge these changes with existing changeset data.\n\t\t\tconst unsavedChanges = this.settings.unsavedChanges;\n\t\t\tconst simulateFormSubmission = !_.isEmpty(unsavedChanges);\n\n\t\t\tconst parsedUrl = new URL(url);\n\n\t\t\t//If we're not using form submission, add a special parameter\n\t\t\t//to the URL to force a refresh.\n\t\t\tconst refreshParam = '_ame-ac-refresh-trigger';\n\t\t\tif (isSameUrl && !simulateFormSubmission) {\n\t\t\t\tparsedUrl.searchParams.set(refreshParam, Date.now() + '_' + Math.random());\n\t\t\t} else {\n\t\t\t\t//Otherwise, remove the parameter just to be safe.\n\t\t\t\tparsedUrl.searchParams.delete(refreshParam);\n\t\t\t}\n\n\t\t\t//Ensure that the changeset used in the preview matches the current\n\t\t\t//changeset and preview is enabled. This is just a precaution. Normally,\n\t\t\t//the preview script automatically changes link URLs.\n\t\t\tlet changesetName = this.settings.changesetName();\n\t\t\tif (changesetName === '') {\n\t\t\t\t//Use a special value if the changeset hasn't been saved yet.\n\t\t\t\tchangesetName = TemporaryChangesetName;\n\t\t\t}\n\t\t\tparsedUrl.searchParams.set('ame-ac-changeset', changesetName);\n\t\t\tparsedUrl.searchParams.set('ame-ac-preview', '1');\n\n\t\t\tthis.hasPendingPreviewReload = false; //Reloading now, so no longer pending.\n\t\t\tthis.isFrameLoading = true;\n\n\t\t\t//console.info('navigatePreviewFrame: Navigating to ' + parsedUrl.href);\n\t\t\tif (simulateFormSubmission) {\n\t\t\t\tconst formData = {\n\t\t\t\t\taction: 'ws_ame_ac_refresh_preview_frame',\n\t\t\t\t\t\"ame-ac-changeset\": changesetName,\n\t\t\t\t\tmodified: JSON.stringify(unsavedChanges),\n\t\t\t\t\tnonce: this.refreshPreviewNonce\n\t\t\t\t}\n\n\t\t\t\tconst $form = $('
')\n\t\t\t\t\t.attr('method', 'post')\n\t\t\t\t\t.attr('action', parsedUrl.href)\n\t\t\t\t\t.attr('target', 'ame-ac-preview-frame')\n\t\t\t\t\t.appendTo('body');\n\n\t\t\t\tlet key: keyof typeof formData;\n\t\t\t\tfor (key in formData) {\n\t\t\t\t\tconst value = formData[key];\n\t\t\t\t\t$('')\n\t\t\t\t\t\t.attr('type', 'hidden')\n\t\t\t\t\t\t.attr('name', key)\n\t\t\t\t\t\t.val(value)\n\t\t\t\t\t\t.appendTo($form);\n\t\t\t\t}\n\n\t\t\t\tthis.currentPreviewUrl = parsedUrl.href;\n\t\t\t\t$form.trigger('submit');\n\t\t\t\t$form.remove();\n\t\t\t} else {\n\t\t\t\tthis.currentPreviewUrl = parsedUrl.href;\n\t\t\t\tthis.$previewFrame.attr('src', this.currentPreviewUrl);\n\t\t\t}\n\t\t}\n\n\t\tprivate _isFrameLoading: boolean = false;\n\t\tprivate frameLoadingTimeoutId: number | null = null;\n\t\tprivate lastPreviewLoadTimestamp: Date = new Date(0);\n\n\t\tprivate reloadWaitTimeoutId: number | null = null;\n\t\tprivate hasPendingPreviewReload: boolean = false;\n\n\t\tprivate set isFrameLoading(isLoading: boolean) {\n\t\t\tconst wasLoadingBefore = this._isFrameLoading;\n\t\t\tif (!isLoading && (isLoading === wasLoadingBefore)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//In some circumstances, we may start to load a new URL before\n\t\t\t//the previous one has finished loading. This is valid and should\n\t\t\t//reset the load timeout.\n\n\t\t\t$('#ame-ac-preview-refresh-indicator').toggleClass('ame-ac-show-indicator', isLoading);\n\t\t\tif (this.frameLoadingTimeoutId) {\n\t\t\t\tclearTimeout(this.frameLoadingTimeoutId);\n\t\t\t\tthis.frameLoadingTimeoutId = null;\n\t\t\t}\n\n\t\t\tif (isLoading) {\n\t\t\t\t//As a precaution, we'll assume that if the frame doesn't load in a reasonable\n\t\t\t\t//time, it will never finish loading.\n\t\t\t\tthis.frameLoadingTimeoutId = window.setTimeout(() => {\n\t\t\t\t\tif (this.isFrameLoading) {\n\t\t\t\t\t\tthis.isFrameLoading = false;\n\t\t\t\t\t}\n\t\t\t\t}, 20000);\n\t\t\t}\n\t\t\tthis._isFrameLoading = isLoading;\n\n\t\t\tif (wasLoadingBefore && !isLoading) {\n\t\t\t\tthis.lastPreviewLoadTimestamp = new Date();\n\t\t\t}\n\n\t\t\t//Once the frame is loaded, trigger any pending reload.\n\t\t\tif (!isLoading && this.hasPendingPreviewReload) {\n\t\t\t\tthis.hasPendingPreviewReload = false;\n\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t}\n\t\t}\n\n\t\tpublic get isFrameLoading(): boolean {\n\t\t\treturn this._isFrameLoading;\n\t\t}\n\n\t\tprivate queuePreviewFrameReload() {\n\t\t\tif (this.reloadWaitTimeoutId) {\n\t\t\t\treturn; //The frame will reload soon.\n\t\t\t}\n\n\t\t\tif (this.isFrameLoading) {\n\t\t\t\tthis.hasPendingPreviewReload = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//To avoid stressing the server, wait at least X ms after the last\n\t\t\t//load completes before reloading the frame.\n\t\t\tconst reloadWaitTime = 2000;\n\t\t\tconst now = new Date();\n\t\t\tconst timeSinceLastLoad = now.getTime() - this.lastPreviewLoadTimestamp.getTime();\n\t\t\tif (timeSinceLastLoad < reloadWaitTime) {\n\t\t\t\tthis.reloadWaitTimeoutId = window.setTimeout(() => {\n\t\t\t\t\tthis.reloadWaitTimeoutId = null;\n\t\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t\t}, reloadWaitTime - timeSinceLastLoad);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Actually reload the frame.\n\t\t\tthis.navigatePreviewFrame(null, true);\n\t\t}\n\n\t\tonBindingsApplied(rootElement: HTMLElement) {\n\t\t\t//Navigate to the root section. In the current implementation this can't happen\n\t\t\t//until bindings have been applied, so it's not part of the constructor.\n\t\t\tthis.navigateToRootSection();\n\n\t\t\t//Initialize the action menu.\n\t\t\tthis.$extraActionButton = jQuery('#ame-ac-extra-actions-trigger', rootElement);\n\t\t\tthis.$extraActionMenu = jQuery('#ame-ac-extra-actions-menu', rootElement).menu();\n\n\t\t\t//Update menu states.\n\t\t\tthis.importActionEnabled.notifySubscribers(this.importActionEnabled());\n\t\t\tthis.discardChangesActionEnabled.notifySubscribers(this.discardChangesActionEnabled());\n\n\t\t\t//Get the file picker.\n\t\t\tthis.$importFileInput = jQuery('#ame-ac-import-admin-theme-file', rootElement);\n\t\t}\n\n\t\tnavigateToRootSection() {\n\t\t\tthis.sectionNavigation.navigateToSection('ame-ac-section-structure-root');\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in at least one add-on.\n\t\t/**\n\t\t * Execute an RPC method in the preview frame.\n\t\t *\n\t\t * @param {string} methodName\n\t\t * @param {*} args\n\t\t */\n\t\texecuteRpcMethod(methodName: string, ...args: any): JQueryPromise {\n\t\t\tif (!this.previewConnection || !this.previewConnection.isConnected) {\n\t\t\t\treturn $.Deferred().reject('The preview frame is not connected.').promise();\n\t\t\t}\n\t\t\treturn this.previewConnection.execute(methodName, ...args);\n\t\t}\n\n\t\tconfirmExit() {\n\t\t\tif (this.isExitPromptNeeded()) {\n\t\t\t\tif (window.confirm(this.exitPromptMessage)) {\n\t\t\t\t\t//Remove the confirmation prompt that appears when leaving the page.\n\t\t\t\t\t//We don't want to show two prompts.\n\t\t\t\t\t$(window).off('beforeunload.ame-ac-exit-confirm');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate isExitPromptNeeded(): boolean {\n\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\n\t\t\t//No need to save anything if the changeset is empty.\n\t\t\tif (!changeset.isNonEmpty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tswitch (this.exitPromptMode) {\n\t\t\t\tcase ExitPromptMode.UnpublishedChanges:\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!changeset.wasPublished()\n\t\t\t\t\t\t&& (changeset.status() !== 'trash') //Can't publish a trashed changeset.\n\t\t\t\t\t);\n\t\t\t\tcase ExitPromptMode.UnsavedChanges:\n\t\t\t\t\tconst unsavedChanges = this.settings.unsavedChanges;\n\t\t\t\t\treturn !_.isEmpty(unsavedChanges);\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in the Knockout template.\n\t\ttoggleExtraActionMenu() {\n\t\t\tif (!this.$extraActionMenu) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$extraActionMenu.toggle();\n\n\t\t\tif (this.$extraActionMenu.is(':visible')) {\n\t\t\t\t//Position the menu below the button.\n\t\t\t\tconst $button = $('#ame-ac-extra-actions-trigger');\n\t\t\t\tthis.$extraActionMenu.position({\n\t\t\t\t\tmy: 'right top',\n\t\t\t\t\tat: 'right bottom',\n\t\t\t\t\tof: $button,\n\t\t\t\t\tcollision: 'flipfit'\n\t\t\t\t});\n\n\t\t\t\t//Hide the menu when the user clicks outside the menu or the button.\n\t\t\t\t$(document).on('mousedown.ameAcExtraMenuHide', this.handleClickOutsideActionMenu.bind(this));\n\t\t\t} else {\n\t\t\t\t//Remove the click listener if it's still active.\n\t\t\t\t$(document).off('mousedown.ameAcExtraMenuHide');\n\t\t\t}\n\t\t}\n\n\t\thandleClickOutsideActionMenu(event: JQueryEventObject) {\n\t\t\tif (\n\t\t\t\t!this.$extraActionMenu\n\t\t\t\t|| !this.$extraActionMenu.is(':visible')\n\t\t\t\t|| !this.$extraActionButton\n\t\t\t) {\n\t\t\t\t//The event listener should not be active if the menu is not visible.\n\t\t\t\t$(document).off('mousedown.ameAcExtraMenuHide');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst menuElement = this.$extraActionMenu.get(0);\n\t\t\tconst buttonElement = this.$extraActionButton.get(0);\n\t\t\tconst isClickOutsideMenu = !menuElement.contains(event.target);\n\t\t\tconst isClickOutsideButton = !buttonElement.contains(event.target);\n\n\t\t\tif (isClickOutsideMenu && isClickOutsideButton) {\n\t\t\t\tthis.hideExtraActionMenu();\n\t\t\t}\n\t\t}\n\n\t\tprivate hideExtraActionMenu() {\n\t\t\tif (!this.$extraActionMenu) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$extraActionMenu.hide();\n\t\t\t//Stop listening for clicks outside the menu.\n\t\t\t$(document).off('mousedown.ameAcExtraMenuHide');\n\t\t}\n\n\t\tprivate openMetadataDialog(mode: MetadataDialogMode) {\n\t\t\tthis.downloadThemeDialog.mode(mode);\n\t\t\tthis.downloadThemeDialog.isOpen(true);\n\t\t\tthis.isImportReportVisible(false);\n\t\t\tthis.hideExtraActionMenu();\n\t\t}\n\n\t\tactionOpenDownloadDialog() {\n\t\t\tif (!this.downloadThemeActionEnabled()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.openMetadataDialog(MetadataDialogMode.Download);\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in another plugin.\n\t\tactionEditOrDownloadTheme() {\n\t\t\tif (!this.downloadThemeActionEnabled()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//If the user hasn't confirmed the theme metadata yet, show the dialog.\n\t\t\tconst metadata = this.settings.adminThemeMetadata();\n\t\t\tif ((metadata === null) || !metadata.wasEverConfirmed) {\n\t\t\t\tthis.openMetadataDialog(MetadataDialogMode.Download);\n\t\t\t} else {\n\t\t\t\tthis.downloadThemeDialog.triggerDownloadWithErrorReporting(metadata);\n\t\t\t}\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in another plugin.\n\t\tactionOpenMetadataDialog() {\n\t\t\tthis.openMetadataDialog(MetadataDialogMode.Edit);\n\t\t}\n\n\t\tactionOpenImportDialog() {\n\t\t\tif (!this.importActionEnabled()) {\n\t\t\t\t//Can't import if there is no changeset or the changeset can't be edited.\n\t\t\t\t//The menu item should be disabled in this case, but we'll check anyway.\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.hideExtraActionMenu();\n\n\t\t\t//Allow the default action to proceed, which will open the file picker.\n\t\t\treturn true;\n\t\t}\n\n\t\tactionDiscardChanges() {\n\t\t\tif (!this.discardChangesActionEnabled()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.hideExtraActionMenu();\n\n\t\t\tif (this.settings.isExclusiveOperationInProgress()) {\n\t\t\t\talert('Another operation is in progress. Please wait for it to complete before discarding changes.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!confirm('Are you sure you want to discard your unsaved changes?')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isImportReportVisible(false);\n\t\t\tthis.isDiscardingChanges(true);\n\n\t\t\tthis.settings.trashChangeset()\n\t\t\t\t.then(() => {\n\t\t\t\t\t//Reload the customizer with a new changeset.\n\t\t\t\t\tconst url = new URL(window.location.href);\n\t\t\t\t\tif (this.customBasePath) {\n\t\t\t\t\t\turl.pathname = this.customBasePath;\n\t\t\t\t\t\turl.search = '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//To get the customizer's base URL, get the current URL\n\t\t\t\t\t\t//and remove all query parameters except \"page\".\n\t\t\t\t\t\tconst page = url.searchParams.get('page');\n\t\t\t\t\t\turl.search = '';\n\t\t\t\t\t\turl.searchParams.set('page', page || 'ame-admin-customizer');\n\t\t\t\t\t}\n\t\t\t\t\t//Notify the customizer that we definitely want a new changeset;\n\t\t\t\t\t//don't try to load a draft.\n\t\t\t\t\turl.searchParams.set('_ame-ac-new-changeset', '1');\n\n\t\t\t\t\t//Don't need the hash.\n\t\t\t\t\turl.hash = '';\n\n\t\t\t\t\t//Add a random parameter to force a reload.\n\t\t\t\t\turl.searchParams.set('_ame-ac-reload', Math.random().toString(36).substring(7));\n\n\t\t\t\t\t//Navigate to the new URL.\n\t\t\t\t\twindow.location.href = url.toString();\n\n\t\t\t\t\t//Note that the isDiscardingChanges flag is not reset here,\n\t\t\t\t\t//so the progress overlay will stay visible until the page reloads.\n\t\t\t\t})\n\t\t\t\t.fail((requestObject) => {\n\t\t\t\t\tlet message: string = requestObject.statusText || 'Unknown error.';\n\n\t\t\t\t\tif (typeof requestObject.responseJSON === 'object') {\n\t\t\t\t\t\tconst customMessage = _.get(requestObject.responseJSON, ['data', 'message']);\n\t\t\t\t\t\tif (typeof customMessage === 'string') {\n\t\t\t\t\t\t\tmessage = customMessage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\talert('Error: ' + message);\n\t\t\t\t\tthis.isDiscardingChanges(false);\n\t\t\t\t});\n\t\t}\n\n\t\thandleImportFileSelection() {\n\t\t\tif (!this.$importFileInput) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst fileInput = this.$importFileInput.get(0) as HTMLInputElement;\n\t\t\tif (!fileInput || !fileInput.files || (fileInput.files.length < 1)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Get the first file. Normally, there should only be one.\n\t\t\tconst selectedFile = fileInput.files.item(0);\n\t\t\tif (!selectedFile) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Limit the file size.\n\t\t\tif (selectedFile.size > this.maxImportFileSize) {\n\t\t\t\talert(\n\t\t\t\t\t'Error: The selected file is too large. The maximum file size is '\n\t\t\t\t\t+ Math.round(this.maxImportFileSize / 1024) + ' KiB'\n\t\t\t\t);\n\t\t\t\t//Clear the file input.\n\t\t\t\tthis.$importFileInput.val('');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isImporting(true);\n\t\t\tthis.lastImportReport(null);\n\n\t\t\tJSZip.loadAsync(selectedFile).then(\n\t\t\t\t(zip) => {\n\t\t\t\t\tconst metadataFileRegex = /^([\\\\/]?[a-zA-Z0-9_-]+[\\\\/])metadata\\.json$/;\n\t\t\t\t\tconst foundMetadataFiles = zip.file(metadataFileRegex);\n\t\t\t\t\tif (!foundMetadataFiles || (foundMetadataFiles.length < 1)) {\n\t\t\t\t\t\tthrow new Error('The selected file is not an admin theme generated by this tool.');\n\t\t\t\t\t}\n\t\t\t\t\tconst metadataFile = foundMetadataFiles[0];\n\n\t\t\t\t\t//Get the directory name and separator from the metadata file path.\n\t\t\t\t\t//The prefix will usually be something like \"admin-theme-slug/\".\n\t\t\t\t\tconst matches = metadataFileRegex.exec(metadataFile.name);\n\t\t\t\t\tlet directoryPrefix: string;\n\t\t\t\t\tif (!matches || (matches.length < 2)) {\n\t\t\t\t\t\tthrow new Error('The directory structure of this ZIP file is not recognized.');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdirectoryPrefix = matches[1];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst settingsFile = zip.file(directoryPrefix + 'settings.json');\n\t\t\t\t\tif (!settingsFile) {\n\t\t\t\t\t\tthrow new Error('The selected ZIP file is missing a settings.json file.');\n\t\t\t\t\t}\n\n\t\t\t\t\t//Read both files.\n\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\tmetadataFile.async('string'),\n\t\t\t\t\t\tsettingsFile.async('string')\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tconst errorMessage = error.message || error;\n\t\t\t\t\tthrow new Error('Error reading \"' + selectedFile.name + '\": ' + errorMessage);\n\t\t\t\t}\n\t\t\t).then((fileContents) => {\n\t\t\t\tif (!fileContents) {\n\t\t\t\t\tthrow new Error('Failed to read settings and metadata from the ZIP file.');\n\t\t\t\t}\n\n\t\t\t\tconst metadata = this.parseImportedAdminThemeFile(\n\t\t\t\t\tfileContents[0],\n\t\t\t\t\t'metadata.json',\n\t\t\t\t\tAdminThemeMetadata\n\t\t\t\t);\n\t\t\t\tconst settings = this.parseImportedAdminThemeFile(\n\t\t\t\t\tfileContents[1],\n\t\t\t\t\t'settings.json',\n\t\t\t\t\tAdminThemeSettings\n\t\t\t\t);\n\t\t\t\tconst report = new AdminThemeImportReport(selectedFile.name, metadata);\n\n\t\t\t\t//Import metadata.\n\t\t\t\tthis.downloadThemeDialog.meta(new ObservableThemeMetadata(metadata));\n\n\t\t\t\t//Import settings.\n\t\t\t\tfor (const [settingId, value] of Object.entries(settings)) {\n\t\t\t\t\treport.totalSettings++;\n\n\t\t\t\t\tconst foundSetting = this.settings.get(settingId);\n\t\t\t\t\tfoundSetting.forEach((setting) => {\n\t\t\t\t\t\tconst oldValue = setting.value();\n\t\t\t\t\t\tconst errors = setting.tryUpdate(value);\n\t\t\t\t\t\tif (errors && errors.length) {\n\t\t\t\t\t\t\treport.invalidSettings++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treport.importedSettings++;\n\t\t\t\t\t\t\tif (oldValue != value) {\n\t\t\t\t\t\t\t\treport.differentImportedSettings++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (foundSetting.isEmpty()) {\n\t\t\t\t\t\treport.skippedSettings++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.lastImportReport(report);\n\t\t\t\tthis.isImportReportVisible(true);\n\n\t\t\t}).catch((error) => {\n\t\t\t\t//Error handling: Show the error message to the user.\n\t\t\t\tlet errorMessage: string;\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = String(error);\n\t\t\t\t}\n\t\t\t\talert('Error: ' + errorMessage);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.isImporting(false);\n\t\t\t\tthis.$importFileInput?.val('');\n\t\t\t});\n\t\t}\n\n\t\tprivate parseImportedAdminThemeFile(\n\t\t\tcontent: string,\n\t\t\tname: string,\n\t\t\tschema: T\n\t\t): ReturnType {\n\t\t\ttry {\n\t\t\t\tconst parsedJson = JSON.parse(content);\n\t\t\t\treturn schema.parse(parsedJson);\n\t\t\t} catch (error) {\n\t\t\t\tlet errorMessage: string;\n\t\t\t\tif (error instanceof ZodError) {\n\t\t\t\t\t//Convert issues to a newline-separated string.\n\t\t\t\t\terrorMessage = error.issues.map((issue) => {\n\t\t\t\t\t\treturn issue.path.join('.') + ': ' + issue.message;\n\t\t\t\t\t}).join('\\n');\n\t\t\t\t} else if (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = String(error);\n\t\t\t\t}\n\t\t\t\t//Add the file name to the error message.\n\t\t\t\tthrow new Error('Error parsing ' + name + ':\\n' + errorMessage);\n\t\t\t}\n\t\t}\n\n\t\tdismissImportReport(): void {\n\t\t\tthis.isImportReportVisible(false);\n\t\t}\n\n\t\tlog(message: any): void {\n\t\t\tif (this.consoleLoggingEnabled && console && console.log) {\n\t\t\t\tconsole.log(message);\n\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\twsAdminCustomizer: AmeAdminCustomizer.AdminCustomizer;\n\t}\n}\n\njQuery(function () {\n\t//Give other scripts a chance to load before we start.\n\t//Some of them also use jQuery to run when the DOM is ready.\n\tsetTimeout(() => {\n\t\twindow.wsAdminCustomizer = new AmeAdminCustomizer.AdminCustomizer(wsAmeAdminCustomizerData);\n\t\tconst rootElement = document.getElementById('ame-ac-admin-customizer');\n\t\tif (rootElement === null) {\n\t\t\tthrow new Error('The root element for the admin customizer was not found.');\n\t\t}\n\n\t\tko.applyBindings(window.wsAdminCustomizer, rootElement);\n\n\t\t//Notify the customizer that bindings have been applied. It needs to do some\n\t\t//additional setup that can't be done until the DOM structure is ready.\n\t\tsetTimeout(() => {\n\t\t\twindow.wsAdminCustomizer.onBindingsApplied(rootElement);\n\t\t}, 5); //Components are rendered asynchronously.\n\t}, 20);\n});","'use strict';\r\nexport var AmeAdminCustomizerBase;\r\n(function (AmeAdminCustomizerBase) {\r\n class AdminCustomizerBase {\r\n constructor(scriptData) {\r\n this.allowedCommOrigins = scriptData.allowedCommOrigins;\r\n if (this.allowedCommOrigins.length === 0) {\r\n this.allowedCommOrigins = [window.location.origin];\r\n }\r\n this.allowedPreviewUrls = scriptData.allowedPreviewUrls;\r\n this.parsedAllowedUrls = this.allowedPreviewUrls.map(url => new URL(url));\r\n }\r\n isPreviewableUrl(url) {\r\n if (typeof url === 'string') {\r\n url = new URL(url);\r\n }\r\n if (typeof url.protocol === 'undefined') {\r\n return false;\r\n }\r\n //Only HTTP(S) links are previewable.\r\n if ((url.protocol !== 'http:') && (url.protocol !== 'https:')) {\r\n return false;\r\n }\r\n //Check against the list of allowed URLs.\r\n for (const allowedUrl of this.parsedAllowedUrls) {\r\n //Protocol and host must match. The path must start with the path\r\n //of the allowed URL (possibly without a trailing slash).\r\n if ((url.protocol === allowedUrl.protocol) && (url.host === allowedUrl.host)) {\r\n const allowedPath = allowedUrl.pathname.replace(/\\/$/, '');\r\n if (url.pathname.indexOf(allowedPath) === 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n }\r\n AmeAdminCustomizerBase.AdminCustomizerBase = AdminCustomizerBase;\r\n})(AmeAdminCustomizerBase || (AmeAdminCustomizerBase = {}));\r\n//# sourceMappingURL=admin-customizer-base.js.map","import { AmeAcSection } from './ame-ac-section.js';\r\nimport { createComponentConfig } from '../../../pro-customizables/ko-components/control-base.js';\r\nclass AmeAcContentSection extends AmeAcSection {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if ((typeof params.parentSectionLevel === 'function') && ko.isObservable(params.parentSectionLevel)) {\r\n this.parentSectionLevel = params.parentSectionLevel;\r\n }\r\n else {\r\n this.parentSectionLevel = null;\r\n }\r\n this.contentSectionLevel = ko.pureComputed(() => {\r\n let parentLevel = 0;\r\n if (this.parentSectionLevel !== null) {\r\n parentLevel = this.parentSectionLevel();\r\n }\r\n return parentLevel + 1;\r\n });\r\n //Tell child sections about our section level.\r\n this.childComponents().forEach((child) => {\r\n if (child.name === 'ame-ac-content-section') {\r\n child.params.parentSectionLevel = this.contentSectionLevel;\r\n }\r\n });\r\n this.sectionLevelClass = ko.pureComputed(() => {\r\n const level = this.contentSectionLevel();\r\n return 'ame-ac-content-section-' + level;\r\n });\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcContentSection, `\n\t
  • \n\t\t

    \t\n\t
  • \t\n\t\n\t\t\n\t\t\n`);\r\n//# sourceMappingURL=ame-ac-content-section.js.map","import { ComponentBindingOptions, createComponentConfig, KoContainerViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar ControlGroup = AmeCustomizable.ControlGroup;\r\nclass AmeAcControlGroup extends KoContainerViewModel {\r\n constructor(params, $element) {\r\n var _a, _b;\r\n super(params, $element);\r\n this.labelFor = (_b = ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.labelFor)) !== null && _b !== void 0 ? _b : null;\r\n this.titleDisabled = (typeof params.titleDisabled !== 'undefined') ? (!!params.titleDisabled) : false;\r\n }\r\n getExpectedUiElementType() {\r\n return ControlGroup;\r\n }\r\n mapChildToComponentBinding(child) {\r\n if (child.component) {\r\n return ComponentBindingOptions.fromElement(child);\r\n }\r\n return super.mapChildToComponentBinding(child);\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcControlGroup, `\n\t
  • \n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t
      \n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \t\t\n\t\t
    \n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-control-group.js.map","import { createComponentConfig, KoControlViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Control = AmeCustomizable.Control;\r\nclass MissingComponentError extends Error {\r\n constructor(uiElement) {\r\n super(`The UI element \"${uiElement.label}\" [${uiElement.id}] is missing a component name.`);\r\n this.uiElement = uiElement;\r\n }\r\n}\r\nclass AmeAcControl extends KoControlViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n //uiElement is required for this component.\r\n if (!this.uiElement) {\r\n throw new Error('The uiElement parameter is required for AmeAcControl');\r\n }\r\n this.wrapperLabelEnabled = (this.uiElement.label !== '') && (!this.uiElement.includesOwnLabel);\r\n this.labelForId = this.uiElement.labelTargetId;\r\n if (!this.uiElement.component) {\r\n throw new MissingComponentError(this.uiElement);\r\n }\r\n }\r\n getExpectedUiElementType() {\r\n return Control;\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcControl, `\n\t
  • \n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-control.js.map","import { createComponentConfig, KoContainerViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Section = AmeCustomizable.Section;\r\nimport { AmeAcSection } from './ame-ac-section.js';\r\nclass AmeAcSectionLink extends KoContainerViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n //uiElement is required for this component.\r\n if (!this.uiElement) {\r\n throw new Error('The uiElement parameter is required for AmeAcSectionLink');\r\n }\r\n this.targetElementId = AmeAcSection.getSectionElementId(this.uiElement);\r\n this.elementId = AmeAcSection.getSectionLinkElementId(this.uiElement);\r\n }\r\n getExpectedUiElementType() {\r\n return Section;\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcSectionLink, `\n\t
  • \n\t\t

    \n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-section-link.js.map","import { ComponentBindingOptions, createComponentConfig, KoContainerViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Section = AmeCustomizable.Section;\r\nvar Control = AmeCustomizable.Control;\r\nvar ControlGroup = AmeCustomizable.ControlGroup;\r\nexport class AmeAcSection extends KoContainerViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n //Must have an uiElement.\r\n if (this.uiElement === null) {\r\n throw new Error('AmeAcSection must have an uiElement.');\r\n }\r\n this.elementId = AmeAcSection.getSectionElementId(this.uiElement);\r\n if ((typeof params.breadcrumbs !== 'undefined') && ko.isObservable(params.breadcrumbs)) {\r\n this.breadcrumbs = params.breadcrumbs;\r\n }\r\n else {\r\n this.breadcrumbs = null;\r\n }\r\n //To keep the header text alignment consistent when navigating between sections,\r\n //let's show something even if there are no breadcrumbs.\r\n const defaultEmptyBreadcrumbText = 'Admin Menu Editor Pro';\r\n //Let other modules change the default text.\r\n let filteredEmptyBreadcrumbText = null;\r\n if (wp && wp.hooks && wp.hooks.applyFilters) {\r\n filteredEmptyBreadcrumbText = wp.hooks.applyFilters('adminMenuEditor.ac.emptyBreadcrumbText', defaultEmptyBreadcrumbText);\r\n }\r\n const emptyBreadcrumbText = ((typeof filteredEmptyBreadcrumbText === 'string')\r\n ? filteredEmptyBreadcrumbText\r\n : defaultEmptyBreadcrumbText);\r\n this.breadcrumbText = ko.pureComputed(() => {\r\n if (this.breadcrumbs === null) {\r\n return emptyBreadcrumbText;\r\n }\r\n const breadcrumbs = this.breadcrumbs();\r\n if (breadcrumbs.length < 1) {\r\n return emptyBreadcrumbText;\r\n }\r\n let titles = breadcrumbs.map(crumb => crumb.title);\r\n //Show the root section differently, \"Admin Customizer\" is too long.\r\n //Not sure about what text to use here, could matching the Theme Customizer be confusing?\r\n //Alternatives: 🛠️🎨, use \\uFE0E to render the emoji without colors (only works for some).\r\n //Alternatives: ⋯ and …\r\n titles[0] = 'Customizing';\r\n //Due to space constraints, show only the last 2 breadcrumbs.\r\n if (titles.length > 2) {\r\n titles = titles.slice(titles.length - 2);\r\n }\r\n return titles.join(' \\u25B8 ');\r\n });\r\n }\r\n getExpectedUiElementType() {\r\n return Section;\r\n }\r\n mapChildToComponentBinding(child) {\r\n if (child instanceof Section) {\r\n if (child.preferredRole === 'content') {\r\n return ComponentBindingOptions.fromElement(child, 'ame-ac-content-section');\r\n }\r\n else {\r\n return ComponentBindingOptions.fromElement(child, 'ame-ac-section-link');\r\n }\r\n }\r\n else if (child instanceof ControlGroup) {\r\n return ComponentBindingOptions.fromElement(child, 'ame-ac-control-group');\r\n }\r\n else if ((child instanceof Control)\r\n && (['ame-ac-separator', 'ame-horizontal-separator'].indexOf(child.component) < 0)) {\r\n //Wrap each control in a control group if it's not already in one.\r\n //Separators are an exception because they're cosmetic and need different styling.\r\n const controlGroup = child.createControlGroup();\r\n return this.mapChildToComponentBinding(controlGroup);\r\n }\r\n else {\r\n return ComponentBindingOptions.fromElement(child);\r\n }\r\n }\r\n static getSectionElementId(section) {\r\n return AmeAcSection.generateSectionElementId(section, 'ame-ac-section-');\r\n }\r\n static getSectionLinkElementId(section) {\r\n return AmeAcSection.generateSectionElementId(section, 'ame-ac-slink-');\r\n }\r\n static generateSectionElementId(section, prefix) {\r\n if (section.id) {\r\n return prefix + section.id;\r\n }\r\n const slug = section.title.toLowerCase().replace(/[^a-z0-9]/g, '-');\r\n if (slug !== '') {\r\n return prefix + slug;\r\n }\r\n throw new Error('Cannot generate a section element ID because the section does not have an ID or a title.');\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.childComponents.dispose();\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcSection, `\n\t
      \n\t\t\n\t\t\n\t\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-ac-section.js.map","import { createComponentConfig, KoStandaloneControl } from '../../../pro-customizables/ko-components/control-base.js';\r\nclass AmeAcSeparator extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcSeparator, `\n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-separator.js.map","import { createRendererComponentConfig, KoRendererViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Section = AmeCustomizable.Section;\r\nclass AmeAcStructure extends KoRendererViewModel {\r\n constructor(params, $element) {\r\n var _a;\r\n super(params, $element);\r\n this.allNavigationSections = [];\r\n const rootSection = new Section({\r\n t: 'section',\r\n id: 'structure-root',\r\n title: (_a = this.structure.title) !== null && _a !== void 0 ? _a : 'Root',\r\n }, this.structure.children);\r\n //Recursively collect all navigable sections. Don't include content\r\n //sections: their parents will output them, not this component.\r\n function collectChildSections(section, accumulator = []) {\r\n if (section.preferredRole === 'navigation') {\r\n accumulator.push(section);\r\n }\r\n for (const child of section.children) {\r\n if (child instanceof Section) {\r\n collectChildSections(child, accumulator);\r\n }\r\n }\r\n return accumulator;\r\n }\r\n this.allNavigationSections = collectChildSections(rootSection);\r\n //Give the breadcrumb list to each section, if available.\r\n if (typeof params.breadcrumbs !== 'undefined') {\r\n for (const section of this.allNavigationSections) {\r\n section.componentParams.breadcrumbs = params.breadcrumbs;\r\n }\r\n }\r\n }\r\n}\r\nexport default createRendererComponentConfig(AmeAcStructure, `\n\t\n\t\t\n\t\n`);\r\n//# sourceMappingURL=ame-ac-structure.js.map","import { createComponentConfig, KoStandaloneControl } from '../../../pro-customizables/ko-components/control-base.js';\r\nclass AmeAcValidationErrors extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if (typeof params.errors !== 'undefined') {\r\n if (Array.isArray(params.errors)) {\r\n this.errors = params.errors;\r\n }\r\n else if (ko.isObservable(params.errors)) {\r\n this.errors = params.errors;\r\n }\r\n else {\r\n throw new Error('The \"errors\" parameter must be an array or an observable array.');\r\n }\r\n }\r\n else {\r\n console.log('Params:', params);\r\n throw new Error('The \"errors\" parameter is required for the AmeAcValidationErrors component.');\r\n }\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcValidationErrors, `\n\t
      \n\t\t
    • \n\t\t\t\n\t\t
    • \n\t
    \n`);\r\n//# sourceMappingURL=ame-ac-validation-errors.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nimport { LazyPopupSliderAdapter } from '../lazy-popup-slider-adapter.js';\r\nconst allDimensionKeys = [\r\n 'top', 'bottom', 'left', 'right',\r\n 'topLeft', 'topRight', 'bottomLeft', 'bottomRight'\r\n];\r\nfunction isDimensionKey(key) {\r\n return allDimensionKeys.includes(key);\r\n}\r\nconst DefaultDimensionsInOrder = [\r\n ['top', 'Top'],\r\n ['bottom', 'Bottom'],\r\n ['left', 'Left'],\r\n ['right', 'Right'],\r\n];\r\nconst SideDimensions = ['top', 'bottom', 'left', 'right'];\r\nconst SymmetricDimensionMap = {\r\n 'vertical': ['top', 'bottom'],\r\n 'horizontal': ['left', 'right'],\r\n};\r\nfunction isSymmetricDimensionKey(key) {\r\n return SymmetricDimensionMap.hasOwnProperty(key);\r\n}\r\nlet nextId = 0;\r\nclass AmeBoxDimensions extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.inputIdPrefix = '_ame-box-dimensions-c-input-' + (nextId++);\r\n this.unitElementId = '_ame-box-dimensions-c-unit-' + (nextId++);\r\n this.wrapperAttributes = {};\r\n if ((typeof params.id === 'string') && (params.id !== '')) {\r\n this.wrapperAttributes['id'] = '_ame-box-dimensions-w-' + params.id;\r\n }\r\n if ((typeof params['dimensionNames'] !== 'undefined') && Array.isArray(params['dimensionNames'])) {\r\n this.dimensionsInOrder = params['dimensionNames'];\r\n }\r\n else {\r\n this.dimensionsInOrder = DefaultDimensionsInOrder;\r\n }\r\n //Make observable proxies for the individual dimension settings.\r\n const temp = {};\r\n for (const [dimensionKey, dimensionName] of this.dimensionsInOrder) {\r\n const setting = this.settings['value.' + dimensionKey];\r\n if (!setting || (typeof setting !== 'object')) {\r\n throw new Error(`Missing setting for the \"${dimensionName}\" side.`);\r\n }\r\n temp[dimensionKey] = ko.computed({\r\n read: () => {\r\n return setting.value();\r\n },\r\n write: (newValue) => {\r\n if (newValue === '') {\r\n newValue = null;\r\n }\r\n setting.value(newValue);\r\n },\r\n deferEvaluation: true,\r\n }).extend({ 'ameNumericInput': true });\r\n }\r\n this.dimensions = temp;\r\n //Similarly, make an observable for the unit setting.\r\n const unitSetting = this.settings['value.unit'];\r\n if (!unitSetting || (typeof unitSetting !== 'object')) {\r\n throw new Error('Missing setting for the unit.');\r\n }\r\n this.unitSetting = unitSetting;\r\n const defaultDropdownOptions = {\r\n options: [],\r\n optionsText: 'text',\r\n optionsValue: 'value'\r\n };\r\n if (params.unitDropdownOptions && (typeof params.unitDropdownOptions === 'object')) {\r\n const unitDropdownOptions = params.unitDropdownOptions;\r\n this.unitDropdownOptions = {\r\n options: unitDropdownOptions['options'] || defaultDropdownOptions.options,\r\n optionsText: unitDropdownOptions['optionsText'] || defaultDropdownOptions.optionsText,\r\n optionsValue: unitDropdownOptions['optionsValue'] || defaultDropdownOptions.optionsValue,\r\n };\r\n }\r\n else {\r\n this.unitDropdownOptions = defaultDropdownOptions;\r\n }\r\n this.isLinkActive = ko.observable(false);\r\n //Enable the link button by default if all dimensions are equal. Exception: null values.\r\n //Dimensions can have different defaults, so null doesn't necessarily mean that they\r\n //are actually equal.\r\n const firstKey = Object.keys(this.dimensions)[0];\r\n const firstValue = this.dimensions[firstKey]();\r\n if ((firstValue !== null) && (firstValue !== '')) {\r\n let areAllDimensionsEqual = true;\r\n for (const [dimensionKey] of this.dimensionsInOrder) {\r\n if (this.dimensions[dimensionKey]() !== firstValue) {\r\n areAllDimensionsEqual = false;\r\n break;\r\n }\r\n }\r\n this.isLinkActive(areAllDimensionsEqual);\r\n }\r\n //When \"link\" mode is enabled, keep all dimensions in sync.\r\n let isUpdatingAllDimensions = false; //Prevent infinite loops.\r\n const updateAllDimensions = (newValue) => {\r\n if (!isUpdatingAllDimensions && this.isLinkActive()) {\r\n isUpdatingAllDimensions = true;\r\n newValue = this.normalizeValue(newValue);\r\n for (const observable of Object.values(this.dimensions)) {\r\n observable(newValue);\r\n }\r\n isUpdatingAllDimensions = false;\r\n }\r\n };\r\n for (const dimensionKey of Object.keys(this.dimensions)) {\r\n this.dimensions[dimensionKey].subscribe(updateAllDimensions);\r\n }\r\n //In \"symmetric\" mode, the top/bottom and left/right dimensions are always equal.\r\n //The control will only show \"vertical\" and \"horizontal\" inputs.\r\n this.symmetricModeEnabled = ko.observable(this.decideSymmetricMode(params));\r\n //Create computed observables for the \"vertical\" and \"horizontal\" dimensions.\r\n this.symmetricValues = {};\r\n for (const name in SymmetricDimensionMap) {\r\n if (!isSymmetricDimensionKey(name) || !SymmetricDimensionMap.hasOwnProperty(name)) {\r\n continue;\r\n }\r\n const sides = SymmetricDimensionMap[name];\r\n this.symmetricValues[name] = ko.computed({\r\n read: () => {\r\n if (this.symmetricModeEnabled()) {\r\n return this.dimensions[sides[0]]();\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n write: (newValue) => {\r\n if (this.symmetricModeEnabled()) {\r\n newValue = this.normalizeValue(newValue);\r\n for (const side of sides) {\r\n this.dimensions[side](newValue);\r\n }\r\n }\r\n },\r\n deferEvaluation: true\r\n }).extend({ 'ameNumericInput': true });\r\n }\r\n //The control displays a different set of inputs depending on the current mode.\r\n this.inputsInOrder = ko.pureComputed(() => {\r\n let result;\r\n if (this.symmetricModeEnabled()) {\r\n result = [\r\n ['vertical', 'Vertical'],\r\n ['horizontal', 'Horizontal'],\r\n ];\r\n }\r\n else {\r\n result = this.dimensionsInOrder;\r\n }\r\n return result;\r\n });\r\n let sliderOptions = {\r\n 'positionParentSelector': '.ame-single-box-dimension',\r\n 'verticalOffset': -2,\r\n };\r\n if (typeof params.popupSliderWithin === 'string') {\r\n sliderOptions.positionWithinClosest = params.popupSliderWithin;\r\n }\r\n this.sliderAdapter = new LazyPopupSliderAdapter(params.sliderRanges ? params.sliderRanges : null, '.ame-box-dimensions-control', 'input.ame-box-dimensions-input', sliderOptions);\r\n }\r\n get classes() {\r\n return ['ame-box-dimensions-control', ...super.classes];\r\n }\r\n //noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n /**\r\n * Get an observable for a specific dimension or a pair of dimensions.\r\n *\r\n * Unfortunately, Knockout doesn't seem to support nested indexed accessors\r\n * like \"dimensions[$data[0]]\", so we have to use a method instead.\r\n */\r\n getInputObservable(key) {\r\n if (this.symmetricModeEnabled() && isSymmetricDimensionKey(key)) {\r\n return this.symmetricValues[key];\r\n }\r\n if (isDimensionKey(key)) {\r\n return this.dimensions[key];\r\n }\r\n throw new Error('Invalid input key for the current mode: ' + key);\r\n }\r\n getInputIdFor(key) {\r\n return this.inputIdPrefix + '-' + key;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n getInputAttributes(key) {\r\n return {\r\n id: this.getInputIdFor(key),\r\n 'data-unit-element-id': this.unitElementId,\r\n 'data-ame-box-dimension': key,\r\n };\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n getSettingFor(key) {\r\n const settingName = 'value.' + key;\r\n if (settingName in this.settings) {\r\n return this.settings[settingName];\r\n }\r\n if (this.symmetricModeEnabled() && isSymmetricDimensionKey(key)) {\r\n for (const dimension of SymmetricDimensionMap[key]) {\r\n //Since both symmetric dimensions are always equal, we can use\r\n //either of the two settings.\r\n const settingName = 'value.' + dimension;\r\n if (settingName in this.settings) {\r\n return this.settings[dimension];\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Actually used in the template.\r\n toggleLink() {\r\n this.isLinkActive(!this.isLinkActive());\r\n //When enabling \"link\" mode, fill all inputs with the same value.\r\n //Use the first non-empty value.\r\n if (this.isLinkActive()) {\r\n let firstValue = null;\r\n for (const dimensionObservable of Object.values(this.dimensions)) {\r\n const value = dimensionObservable();\r\n if ((value !== null) && (value !== '')) {\r\n firstValue = value;\r\n break;\r\n }\r\n }\r\n if (firstValue !== null) {\r\n firstValue = this.normalizeValue(firstValue);\r\n for (const dimensionObservable of Object.values(this.dimensions)) {\r\n dimensionObservable(firstValue);\r\n }\r\n }\r\n }\r\n }\r\n normalizeValue(value) {\r\n if (value === null) {\r\n return null;\r\n }\r\n //Convert strings to numbers, and invalid strings to null.\r\n if (typeof value === 'string') {\r\n value = parseFloat(value);\r\n if (isNaN(value)) {\r\n return null;\r\n }\r\n }\r\n return value;\r\n }\r\n /**\r\n * Determine whether the control should be in \"symmetric\" mode.\r\n */\r\n decideSymmetricMode(componentParams) {\r\n //This mode is off by default and can be enabled by setting the \"symmetricMode\" parameter.\r\n let enableMode = (typeof componentParams['symmetricMode'] !== 'undefined')\r\n ? (!!componentParams['symmetricMode'])\r\n : false;\r\n if (!enableMode) {\r\n return false;\r\n }\r\n //Symmetric mode can't be enabled if the control doesn't have all side dimensions.\r\n const hasAllSideDimensions = SideDimensions.every((key) => {\r\n return (key in this.dimensions);\r\n });\r\n if (!hasAllSideDimensions) {\r\n return false;\r\n }\r\n //It also can only be enabled if top/bottom and left/right dimensions are equal.\r\n return ((this.dimensions['top']() === this.dimensions['bottom']())\r\n && (this.dimensions['left']() === this.dimensions['right']()));\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeBoxDimensions, `\n\t
    \n\t\t\n\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-box-dimensions.js.map","import { KoStandaloneControl } from '../control-base.js';\r\nexport class ChoiceControlOption {\r\n constructor(data) {\r\n this.value = data.value;\r\n this.label = data.label;\r\n this.description = data.description || '';\r\n this.enabled = (typeof data.enabled === 'undefined') || data.enabled;\r\n this.icon = data.icon || '';\r\n }\r\n}\r\nexport class AmeChoiceControl extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.options = ko.observableArray([]);\r\n if ((typeof params['options'] !== 'undefined') && Array.isArray(params.options)) {\r\n this.options(params.options.map((optionData) => new ChoiceControlOption(optionData)));\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ame-choice-control.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n/**\r\n * Code editor control with syntax highlighting.\r\n *\r\n * This control uses the custom Knockout binding \"ameCodeMirror\" to do the heavy\r\n * lifting. The binding is defined in ko-extensions.ts.\r\n *\r\n * Note: The user can disable syntax highlighting. In that case, this control\r\n * should behave like a normal textarea.\r\n */\r\nclass AmeCodeEditor extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if ((typeof params.editorSettings === 'object') && (params.editorSettings !== null)) {\r\n this.editorSettings = params.editorSettings;\r\n }\r\n else {\r\n this.editorSettings = false;\r\n }\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeCodeEditor, `\n\t
    \n\t\t\n\t
    \n\t\n\t\t\n\t\n`);\r\n//# sourceMappingURL=ame-code-editor.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n/**\r\n * A wrapper for the WordPress color picker.\r\n *\r\n * Note that the custom 'ameColorPicker' binding must be available when this component\r\n * is used. You must enqueue the 'ame-ko-extensions' script for this to work.\r\n */\r\nclass AmeColorPicker extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n koDescendantsComplete(node) {\r\n //Make the color picker input visible. Its visibility is set to hidden by default.\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n //The component was bound to a comment node. The real element\r\n //should be the next non-comment sibling.\r\n let nextElement;\r\n do {\r\n nextElement = node.nextElementSibling;\r\n } while (nextElement && (nextElement.nodeType === Node.COMMENT_NODE));\r\n if (!nextElement) {\r\n return; //This should never happen.\r\n }\r\n node = nextElement;\r\n }\r\n if (!node || (node.nodeType !== Node.ELEMENT_NODE)) {\r\n return; //This should never happen.\r\n }\r\n const $picker = jQuery(node);\r\n //This should be a .wp-picker-container element that contains an input.\r\n const $input = $picker.find('input.ame-color-picker');\r\n if ($input.length > 0) {\r\n $input.css('visibility', 'visible');\r\n }\r\n }\r\n get classes() {\r\n return ['ame-color-picker', 'ame-color-picker-component', ...super.classes];\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeColorPicker, `\n\t\n`);\r\n//# sourceMappingURL=ame-color-picker.js.map","/*\r\n * This utility module imports all the base Knockout components and exports\r\n * a function that can be used to register the components with Knockout.\r\n */\r\nimport ameBoxDimensions from './ame-box-dimensions/ame-box-dimensions.js';\r\nimport ameColorPicker from './ame-color-picker/ame-color-picker.js';\r\nimport ameFontStylePicker from './ame-font-style-picker/ame-font-style-picker.js';\r\nimport ameImageSelector from './ame-image-selector/ame-image-selector.js';\r\nimport ameNumberInput from './ame-number-input/ame-number-input.js';\r\nimport ameNestedDescription from './ame-nested-description/ame-nested-description.js';\r\nimport ameRadioButtonBar from './ame-radio-button-bar/ame-radio-button-bar.js';\r\nimport ameRadioGroup from './ame-radio-group/ame-radio-group.js';\r\nimport ameSelectBox from './ame-select-box/ame-select-box.js';\r\nimport ameSiblingDescription from './ame-sibling-description/ame-sibling-description.js';\r\nimport ameStaticHtml from './ame-static-html/ame-static-html.js';\r\nimport ameTextInput from './ame-text-input/ame-text-input.js';\r\nimport ameToggleCheckbox from './ame-toggle-checkbox/ame-toggle-checkbox.js';\r\nimport ameUnitDropdown from './ame-unit-dropdown/ame-unit-dropdown.js';\r\nimport ameWpEditor from './ame-wp-editor/ame-wp-editor.js';\r\nimport ameHorizontalSeparator from './ame-horizontal-separator/ame-horizontal-separator.js';\r\nimport ameCodeEditor from './ame-code-editor/ame-code-editor.js';\r\nlet componentsRegistered = false;\r\n/**\r\n * Register the base Knockout components that are part of AME.\r\n *\r\n * It's safe to call this function multiple times. It will only register the components once.\r\n */\r\nexport function registerBaseComponents() {\r\n if (componentsRegistered) {\r\n return;\r\n }\r\n ko.components.register('ame-box-dimensions', ameBoxDimensions);\r\n ko.components.register('ame-color-picker', ameColorPicker);\r\n ko.components.register('ame-font-style-picker', ameFontStylePicker);\r\n ko.components.register('ame-image-selector', ameImageSelector);\r\n ko.components.register('ame-number-input', ameNumberInput);\r\n ko.components.register('ame-nested-description', ameNestedDescription);\r\n ko.components.register('ame-radio-button-bar', ameRadioButtonBar);\r\n ko.components.register('ame-radio-group', ameRadioGroup);\r\n ko.components.register('ame-select-box', ameSelectBox);\r\n ko.components.register('ame-sibling-description', ameSiblingDescription);\r\n ko.components.register('ame-static-html', ameStaticHtml);\r\n ko.components.register('ame-text-input', ameTextInput);\r\n ko.components.register('ame-toggle-checkbox', ameToggleCheckbox);\r\n ko.components.register('ame-unit-dropdown', ameUnitDropdown);\r\n ko.components.register('ame-wp-editor', ameWpEditor);\r\n ko.components.register('ame-horizontal-separator', ameHorizontalSeparator);\r\n ko.components.register('ame-code-editor', ameCodeEditor);\r\n componentsRegistered = true;\r\n}\r\n//# sourceMappingURL=ame-components.js.map","import { KoComponentViewModel } from '../control-base.js';\r\n/**\r\n * Base class for description components.\r\n */\r\nexport class AmeDescriptionComponent extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.description = params.description || '';\r\n }\r\n}\r\n//# sourceMappingURL=ame-description.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n//Note: Font style picker CSS is already included in the main 'controls.scss' file\r\n//and won't be duplicated or included here. Instead, load that stylesheet when\r\n//using any control components.\r\n/**\r\n * Font style options that can be selected in the picker component.\r\n *\r\n * Regrettably, these are duplicated from the PHP version of the control.\r\n * Once browsers support importing JSON files, we can move this to a separate\r\n * file and use that file in both places.\r\n */\r\nconst fontStyleOptions = {\r\n \"font-style\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default font style\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"italic\",\r\n \"text\": \"Italic\",\r\n \"label\": \"\"\r\n }\r\n ],\r\n \"text-transform\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default letter case\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"uppercase\",\r\n \"text\": \"Uppercase\",\r\n \"label\": {\r\n 'text-transform': 'uppercase'\r\n }\r\n },\r\n {\r\n \"value\": \"lowercase\",\r\n \"text\": \"Lowercase\",\r\n \"label\": {\r\n 'text-transform': 'lowercase'\r\n }\r\n },\r\n {\r\n \"value\": \"capitalize\",\r\n \"text\": \"Capitalize each word\",\r\n \"label\": {\r\n 'text-transform': 'capitalize'\r\n }\r\n }\r\n ],\r\n \"font-variant\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default font variant\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"small-caps\",\r\n \"text\": \"Small caps\",\r\n \"label\": {\r\n 'font-variant': 'small-caps'\r\n }\r\n }\r\n ],\r\n \"text-decoration\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default text decoration\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"underline\",\r\n \"text\": \"Underline\",\r\n \"label\": \"\"\r\n },\r\n {\r\n \"value\": \"line-through\",\r\n \"text\": \"Strikethrough\",\r\n \"label\": \"\"\r\n }\r\n ]\r\n};\r\n//Generate label HTML for options that don't have it yet.\r\nfunction makeFontSample(styles) {\r\n let styleString = '';\r\n for (const [property, value] of Object.entries(styles)) {\r\n styleString += `${property}: ${value};`;\r\n }\r\n return `ab`;\r\n}\r\nlet flattenedOptions = [];\r\nfor (const [property, options] of Object.entries(fontStyleOptions)) {\r\n options.forEach((option) => {\r\n //Skip null values. They're used to indicate the default option,\r\n //and we don't need those in the Knockout version of this control.\r\n if (option.value === null) {\r\n return;\r\n }\r\n let labelString;\r\n if (typeof option.label === 'object') {\r\n labelString = makeFontSample(option.label);\r\n }\r\n else {\r\n labelString = option.label;\r\n }\r\n flattenedOptions.push({\r\n 'value': option.value,\r\n 'text': option.text || '',\r\n 'property': property,\r\n 'label': labelString\r\n });\r\n });\r\n}\r\nclass AmeFontStylePicker extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.options = flattenedOptions;\r\n }\r\n get classes() {\r\n return ['ame-font-style-control', ...super.classes];\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template, below.\r\n isOptionSelected(property, value) {\r\n if (this.settings.hasOwnProperty(property)) {\r\n return (this.settings[property].value() === value);\r\n }\r\n return false;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n toggleOption(property, value) {\r\n if (!this.settings.hasOwnProperty(property)) {\r\n return;\r\n }\r\n const targetSetting = this.settings[property];\r\n if (targetSetting.value() === value) {\r\n //When the user clicks on the currently selected option, reset it to the default.\r\n targetSetting.tryUpdate(null);\r\n }\r\n else {\r\n //Otherwise, set the new value.\r\n targetSetting.tryUpdate(value);\r\n }\r\n }\r\n}\r\n//Note: This weird spacing in the template string is intentional. It's used to\r\n//remove whitespace nodes from the DOM, which would otherwise slightly change\r\n//the layout of the control.\r\nexport default createControlComponentConfig(AmeFontStylePicker, `\n\t
    \n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-font-style-picker.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nclass AmeHorizontalSeparator extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeHorizontalSeparator, `\n\t
    \n`);\r\n//# sourceMappingURL=ame-horizontal-separator.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n/**\r\n * Image selector control.\r\n *\r\n * This implementation hands off the work to the existing AmeImageSelectorApi.ImageSelector\r\n * class to avoid duplicating the effort. That class is not a module because it is also\r\n * used for the more progressive-enhancement-y PHP-rendered controls, so we can't import it.\r\n */\r\nclass AmeImageSelector extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.selectorInstance = null;\r\n //Verify that our dependencies are available.\r\n if (typeof AmeImageSelectorApi === 'undefined') {\r\n throw new Error('AmeImageSelectorApi is not available. Remember to enqueue \"ame-image-selector-control-v2\".');\r\n }\r\n if (typeof AmeImageSelectorApi.ImageSelector === 'undefined') {\r\n throw new Error('AmeImageSelectorApi.ImageSelector is not available. This is probably a bug.');\r\n }\r\n this.externalUrlsAllowed = !!params.externalUrlsAllowed;\r\n this.canSelectMedia = !!params.canSelectMedia;\r\n this.imageProxy = this.settings.value.value;\r\n }\r\n get classes() {\r\n return [\r\n 'ame-image-selector-v2',\r\n ...super.classes,\r\n ];\r\n }\r\n koDescendantsComplete() {\r\n const $container = this.findChild('.ame-image-selector-v2');\r\n if ($container.length === 0) {\r\n return;\r\n }\r\n this.selectorInstance = new AmeImageSelectorApi.ImageSelector($container, {\r\n externalUrlsAllowed: this.externalUrlsAllowed,\r\n canSelectMedia: this.canSelectMedia,\r\n }, this.imageProxy());\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeImageSelector, `\n\t
    \n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-image-selector.js.map","import { createComponentConfig } from '../control-base.js';\r\nimport { AmeDescriptionComponent } from '../ame-description/ame-description.js';\r\n/**\r\n * A simple component that displays the description of a UI element.\r\n *\r\n * Like AmeSiblingDescription, but intended to be rendered inside\r\n * the parent control or container, not as a sibling.\r\n */\r\nclass AmeNestedDescription extends AmeDescriptionComponent {\r\n}\r\nexport default createComponentConfig(AmeNestedDescription, `\n\t
    \t\n`);\r\n//# sourceMappingURL=ame-nested-description.js.map","/// \r\nimport { createControlComponentConfig, KoDependentControl } from '../control-base.js';\r\nimport { AmeCustomizable } from '../../assets/customizable.js';\r\nvar Control = AmeCustomizable.Control;\r\nexport class AmeNumberInput extends KoDependentControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.sliderRanges = null;\r\n this.slider = null;\r\n this.numericValue = this.valueProxy.extend({ 'ameNumericInput': true });\r\n this.unitText = params.unitText || '';\r\n this.hasUnitDropdown = params.hasUnitDropdown || false;\r\n this.unitElementId = params.unitElementId || '';\r\n if (this.hasUnitDropdown && params.unitDropdownOptions) {\r\n this.unitDropdownOptions = {\r\n options: params.unitDropdownOptions.options || [],\r\n optionsText: params.unitDropdownOptions.optionsText || 'text',\r\n optionsValue: params.unitDropdownOptions.optionsValue || 'value'\r\n };\r\n }\r\n else {\r\n this.unitDropdownOptions = null;\r\n }\r\n this.min = params.min || null;\r\n this.max = params.max || null;\r\n this.step = params.step || null;\r\n if (params.sliderRanges) {\r\n this.sliderRanges = params.sliderRanges;\r\n }\r\n this.popupSliderWithin = (typeof params.popupSliderWithin === 'string') ? params.popupSliderWithin : null;\r\n this.inputClasses.unshift('ame-input-with-popup-slider', 'ame-number-input');\r\n }\r\n get classes() {\r\n const classes = ['ame-number-input-control'];\r\n if (this.sliderRanges !== null) {\r\n classes.push('ame-container-with-popup-slider');\r\n }\r\n classes.push(...super.classes);\r\n return classes;\r\n }\r\n get inputClasses() {\r\n const classes = ['ame-input-with-popup-slider', 'ame-number-input'];\r\n classes.push(...super.inputClasses);\r\n return classes;\r\n }\r\n getAdditionalInputAttributes() {\r\n let attributes = super.getAdditionalInputAttributes();\r\n if (this.min !== null) {\r\n attributes['min'] = this.min.toString();\r\n }\r\n if (this.max !== null) {\r\n attributes['max'] = this.max.toString();\r\n }\r\n if (this.step !== null) {\r\n attributes['step'] = this.step.toString();\r\n }\r\n if (this.unitElementId) {\r\n attributes['data-unit-element-id'] = this.unitElementId;\r\n }\r\n return attributes;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the Knockout template in this same file.\r\n showPopupSlider($data, event) {\r\n if ((this.sliderRanges === null) || (typeof AmePopupSlider === 'undefined')) {\r\n return;\r\n }\r\n //Some sanity checks.\r\n if (!event.target) {\r\n return;\r\n }\r\n const $input = jQuery(event.target);\r\n if ($input.is(':disabled') || !$input.is('input')) {\r\n return;\r\n }\r\n const $container = $input.closest('.ame-container-with-popup-slider');\r\n if ($container.length < 1) {\r\n return;\r\n }\r\n //Initialize the slider if it's not already initialized.\r\n if (!this.slider) {\r\n let sliderOptions = {};\r\n if (this.popupSliderWithin) {\r\n sliderOptions.positionWithinClosest = this.popupSliderWithin;\r\n }\r\n //In HTML, we would pass the range data as a \"data-slider-ranges\" attribute,\r\n //but here we can just set the data directly.\r\n $input.data('slider-ranges', this.sliderRanges);\r\n this.slider = AmePopupSlider.createSlider($container, sliderOptions);\r\n }\r\n this.slider.showForInput($input);\r\n }\r\n getExpectedUiElementType() {\r\n return Control;\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeNumberInput, `\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t
    \t\n`);\r\n//# sourceMappingURL=ame-number-input.js.map","'use strict';\r\nimport { createControlComponentConfig } from '../control-base.js';\r\nimport { AmeChoiceControl } from '../ame-choice-control/ame-choice-control.js';\r\nclass AmeRadioButtonBar extends AmeChoiceControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n get classes() {\r\n return ['ame-radio-button-bar-control', ...super.classes];\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeRadioButtonBar, `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-radio-button-bar.js.map","'use strict';\r\nimport { createControlComponentConfig } from '../control-base.js';\r\nimport { AmeChoiceControl } from '../ame-choice-control/ame-choice-control.js';\r\n// noinspection JSUnusedGlobalSymbols -- Enum keys like \"Paragraph\" are used when serializing wrapStyle in PHP.\r\nvar WrapStyle;\r\n(function (WrapStyle) {\r\n WrapStyle[\"LineBreak\"] = \"br\";\r\n WrapStyle[\"Paragraph\"] = \"p\";\r\n WrapStyle[\"None\"] = \"\";\r\n})(WrapStyle || (WrapStyle = {}));\r\nfunction isWrapStyle(value) {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n return (typeof WrapStyle[value] === 'string');\r\n}\r\nlet nextRadioGroupId = 1;\r\nclass AmeRadioGroup extends AmeChoiceControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.wrapStyle = WrapStyle.None;\r\n this.childByValue = new Map();\r\n if ((typeof params['valueChildIndexes'] === 'object') && Array.isArray(params.valueChildIndexes)) {\r\n const children = ko.unwrap(this.inputChildren);\r\n for (const [value, index] of params.valueChildIndexes) {\r\n if (!children || !children[index]) {\r\n throw new Error('The \"' + this.label + '\" radio group has no children, but its valueChildIndexes'\r\n + ' requires child #' + index + ' to be associated with value \"' + value + '\".');\r\n }\r\n this.childByValue.set(value, children[index]);\r\n }\r\n }\r\n this.wrapStyle = isWrapStyle(params.wrapStyle) ? WrapStyle[params.wrapStyle] : WrapStyle.None;\r\n if (this.childByValue.size > 0) {\r\n this.wrapStyle = WrapStyle.None;\r\n }\r\n this.radioInputPrefix = (typeof params.radioInputPrefix === 'string')\r\n ? params.radioInputPrefix\r\n : ('ame-rg-input-' + nextRadioGroupId++ + '-');\r\n }\r\n get classes() {\r\n const result = ['ame-radio-group-component', ...super.classes];\r\n if (this.childByValue.size > 0) {\r\n result.push('ame-rg-has-nested-controls');\r\n }\r\n return result;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template below.\r\n getChoiceChild(value) {\r\n return this.childByValue.get(value) || null;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n /**\r\n * Get the ID attribute for a radio input.\r\n *\r\n * Note: This must match the algorithm used by the PHP version of this control\r\n * to work correctly with the BorderStyleSelector control that adds style samples\r\n * to each choice and uses the ID to link them to the inputs (so that clicking\r\n * the sample selects the option).\r\n */\r\n getRadioInputId(choice) {\r\n let sanitizedValue = (choice.value !== null) ? choice.value.toString() : '';\r\n //Emulate the sanitize_key() function from WordPress core.\r\n sanitizedValue = sanitizedValue.toLowerCase().replace(/[^a-z0-9_\\-]/gi, '');\r\n return this.radioInputPrefix + sanitizedValue;\r\n }\r\n}\r\nconst choiceTemplate = `\n\t\n`;\r\nexport default createControlComponentConfig(AmeRadioGroup, `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t${choiceTemplate}
    \n\t\t\t\n\t\t\t\n\t\t\t\t

    ${choiceTemplate}

    \n\t\t\t\n\t\t\t\n\t\t\t\t${choiceTemplate}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-radio-group.js.map","import { AmeChoiceControl } from '../ame-choice-control/ame-choice-control.js';\r\nimport { createControlComponentConfig } from '../control-base.js';\r\nclass AmeSelectBox extends AmeChoiceControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n get classes() {\r\n return ['ame-select-box-control', ...super.classes];\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeSelectBox, `\n\t\n\t\n\t\t\n\t\t\n`);\r\n//# sourceMappingURL=ame-select-box.js.map","import { createComponentConfig } from '../control-base.js';\r\nimport { AmeDescriptionComponent } from '../ame-description/ame-description.js';\r\n/**\r\n * A simple component that displays the description of a UI element.\r\n *\r\n * This should be rendered as a sibling of the UI element's component,\r\n * typically immediately after it.\r\n *\r\n * Caution: HTML is allowed in the description.\r\n */\r\nclass AmeSiblingDescription extends AmeDescriptionComponent {\r\n}\r\nexport default createComponentConfig(AmeSiblingDescription, `\n\t

    \t\n`);\r\n//# sourceMappingURL=ame-sibling-description.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nclass AmeStaticHtml extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.containerType = 'span';\r\n this.htmlContent = (typeof params.html === 'string') ? params.html : '';\r\n if (typeof params.container === 'string') {\r\n this.containerType = params.container;\r\n }\r\n }\r\n}\r\n//Note: The HTML content has to be in a container element because Knockout doesn't allow\r\n//using the \"html\" binding with virtual elements.\r\nexport default createControlComponentConfig(AmeStaticHtml, `\n\t\n\t\t
    \n\t\n\t\n\t\t\n\t\n`);\r\n//# sourceMappingURL=ame-static-html.js.map","import { createControlComponentConfig, KoDependentControl } from '../control-base.js';\r\nexport class AmeTextInput extends KoDependentControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.inputType = 'text';\r\n this.isCode = params.isCode || false;\r\n this.inputType = params.inputType || 'text';\r\n }\r\n get inputClasses() {\r\n const classes = ['regular-text'];\r\n if (this.isCode) {\r\n classes.push('code');\r\n }\r\n classes.push('ame-text-input-control', ...super.inputClasses);\r\n return classes;\r\n }\r\n getAdditionalInputAttributes() {\r\n return Object.assign({ 'type': this.inputType }, super.getAdditionalInputAttributes());\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeTextInput, `\n\t\n\t\n\t\t\n\t\t\n`);\r\n//# sourceMappingURL=ame-text-input.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nclass AmeToggleCheckbox extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.onValue = (typeof params.onValue !== 'undefined') ? params.onValue : true;\r\n this.offValue = (typeof params.offValue !== 'undefined') ? params.offValue : false;\r\n if (typeof this.settings['value'] === 'undefined') {\r\n this.isChecked = ko.pureComputed(() => false);\r\n }\r\n else {\r\n this.isChecked = ko.computed({\r\n read: () => {\r\n return this.settings.value.value() === ko.unwrap(this.onValue);\r\n },\r\n write: (newValue) => {\r\n this.settings.value.value(ko.unwrap(newValue ? this.onValue : this.offValue));\r\n },\r\n deferEvaluation: true\r\n });\r\n }\r\n }\r\n get classes() {\r\n return ['ame-toggle-checkbox-control', ...super.classes];\r\n }\r\n}\r\n//Unlike the HTML version of this control, the Knockout version doesn't have\r\n//a second, hidden checkbox. This is because the component is entirely JS-based\r\n//and doesn't need to be submitted as part of a form.\r\nexport default createControlComponentConfig(AmeToggleCheckbox, `\n\t\t\n`);\r\n//# sourceMappingURL=ame-toggle-checkbox.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nexport class AmeUnitDropdown extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.dropdownData = params.optionData || {\r\n options: [],\r\n optionsText: 'text',\r\n optionsValue: 'value'\r\n };\r\n this.selectId = params.id || '';\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeUnitDropdown, `\n\t\n`);\r\n//# sourceMappingURL=ame-unit-dropdown.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n//Note: Requires Lodash, but does not explicitly import it because this plugin\r\n//already uses Lodash as a global variable (wsAmeLodash) in many places. Code\r\n//that uses this component should make sure that Lodash is loaded.\r\nlet autoAssignedIdCounter = 0;\r\n/**\r\n * List of visual editor buttons that are visible in the \"teeny\" mode.\r\n *\r\n * Found in /wp-includes/class-wp-editor.php, the editor_settings() method.\r\n * The relevant code is around line #601 (as of WP 6.1.1).\r\n */\r\nconst TeenyButtons = [\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'blockquote',\r\n 'strikethrough',\r\n 'bullist',\r\n 'numlist',\r\n 'alignleft',\r\n 'aligncenter',\r\n 'alignright',\r\n 'undo',\r\n 'redo',\r\n 'link',\r\n 'fullscreen'\r\n];\r\n/**\r\n * List of Quicktags editor buttons that are visible by default.\r\n *\r\n * The default list of text editor buttons used by wp.editor.initialize()\r\n * doesn't match the defaults used by wp_editor() in PHP. Let's copy the list\r\n * from /includes/class-wp-editor.php.\r\n */\r\nconst DefaultQuicktagsButtons = [\r\n 'strong', 'em', 'link', 'block', 'del', 'ins', 'img', 'ul', 'ol', 'li', 'code', 'more', 'close'\r\n];\r\nclass AmeWpEditor extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.editorId = null;\r\n this.isWpEditorInitialized = false;\r\n const textSetting = this.settings.value;\r\n if (typeof textSetting === 'undefined') {\r\n throw new Error('Visual Editor control is missing the required setting');\r\n }\r\n this.rows = params.rows || 6;\r\n this.isTeeny = !!params.teeny;\r\n }\r\n getAdditionalInputAttributes() {\r\n return Object.assign({ rows: this.rows.toString() }, super.getAdditionalInputAttributes());\r\n }\r\n koDescendantsComplete() {\r\n const $textArea = this.findChild('textarea.ame-wp-editor-textarea');\r\n if ($textArea.length === 0) {\r\n return;\r\n }\r\n const currentValue = this.valueProxy();\r\n $textArea.val((currentValue === null) ? '' : currentValue.toString());\r\n //The textarea must have an ID for wp.editor.initialize() to work.\r\n {\r\n let editorId = $textArea.attr('id');\r\n if (!editorId) {\r\n editorId = 'ws-ame-wp-editor-aid-' + (autoAssignedIdCounter++);\r\n $textArea.attr('id', editorId);\r\n }\r\n this.editorId = editorId;\r\n }\r\n //Update the setting when the contents of the underlying textarea change.\r\n //This happens when the user selects the \"Text\" tab in the editor, or when\r\n //TinyMCE is unavailable (e.g. if the \"Disable the visual editor when writing\"\r\n //option is checked in the user's profile).\r\n $textArea.on('change input', this.throttleUpdates(() => $textArea.val()));\r\n let editorSettings = {\r\n tinymce: {\r\n wpautop: true\r\n },\r\n quicktags: {\r\n //The default list of text editor buttons used by wp.editor.initialize()\r\n //doesn't match the defaults used by wp_editor() in PHP. Let's copy the list\r\n //from /includes/class-wp-editor.php.\r\n buttons: DefaultQuicktagsButtons.join(','),\r\n },\r\n //Include the \"Add Media\" button.\r\n mediaButtons: true,\r\n };\r\n if (typeof window['tinymce'] === 'undefined') {\r\n //TinyMCE is disabled or not available.\r\n editorSettings.tinymce = false;\r\n }\r\n if (this.isTeeny && (typeof editorSettings.tinymce === 'object')) {\r\n editorSettings.tinymce.toolbar1 = TeenyButtons.join(',');\r\n editorSettings.tinymce.toolbar2 = '';\r\n }\r\n const $document = jQuery(document);\r\n const self = this;\r\n //After the editor finishes initializing, add an event listener to update\r\n //the setting when the contents of the visual editor change.\r\n $document.on('tinymce-editor-init', function addMceChangeListener(event, editor) {\r\n if (editor.id !== self.editorId) {\r\n return; //Not our editor.\r\n }\r\n //According to the TinyMCE documentation, the \"Change\" event is fired\r\n //when \"changes [...] cause an undo level to be added\". This could be\r\n //too frequent for our purposes, so we'll throttle the callback.\r\n editor.on('Change', self.throttleUpdates(() => editor.getContent()));\r\n $document.off('tinymce-editor-init', addMceChangeListener);\r\n });\r\n //Unfortunately, as of WP 6.2-beta, wp.editor.initialize() doesn't add\r\n //the \"wp-editor-container\" wrapper when only the Quicktags editor is used.\r\n //This means the editor won't be styled correctly. Let's fix that.\r\n $document.on('quicktags-init', function maybeAddEditorWrapper(event, editor) {\r\n if (!editor || (editor.id !== self.editorId)) {\r\n return;\r\n }\r\n if (editor.canvas) {\r\n const $textarea = jQuery(editor.canvas);\r\n const $wrapper = $textarea.closest('.wp-editor-container');\r\n if ($wrapper.length === 0) {\r\n //Also include the toolbar in the wrapper.\r\n const $toolbar = $textarea.prevAll('.quicktags-toolbar').first();\r\n $textarea.add($toolbar).wrapAll('
    ');\r\n }\r\n }\r\n $document.off('quicktags-init', maybeAddEditorWrapper);\r\n });\r\n //Finally, initialize the editor.\r\n wp.editor.initialize($textArea.attr('id'), editorSettings);\r\n this.isWpEditorInitialized = true;\r\n }\r\n /**\r\n * Create a throttled function that updates the setting.\r\n *\r\n * There are multiple ways to get the contents of the editor (e.g. TinyMCE mode\r\n * vs a plain textarea), so using a utility function helps avoid code duplication.\r\n *\r\n * @param valueGetter\r\n * @protected\r\n */\r\n throttleUpdates(valueGetter) {\r\n const textSetting = this.settings.value;\r\n return wsAmeLodash.throttle(function () {\r\n textSetting.value(valueGetter());\r\n return void 0;\r\n }, 1000, { leading: true, trailing: true });\r\n }\r\n dispose() {\r\n //Destroy the editor. It's not clear whether this is necessary, but it's\r\n //probably a good idea to give WP a chance to clean up.\r\n if (this.isWpEditorInitialized && (this.editorId !== null)) {\r\n wp.editor.remove(this.editorId);\r\n this.isWpEditorInitialized = false;\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//Note: The class of the textarea element is set directly instead of using a binding\r\n//because it must always have the \"wp-editor-area\" class for it to render correctly\r\n//(apparently, wp.editor.initialize() does not automatically add that class).\r\n//Knockout should not be able to remove the class.\r\nexport default createControlComponentConfig(AmeWpEditor, `\n\t\t\n`);\r\n//# sourceMappingURL=ame-wp-editor.js.map","import { AmeCustomizable } from '../assets/customizable.js';\r\nvar Setting = AmeCustomizable.Setting;\r\nvar InterfaceStructure = AmeCustomizable.InterfaceStructure;\r\nvar Control = AmeCustomizable.Control;\r\nexport class KoComponentViewModel {\r\n constructor(params, $element) {\r\n var _a;\r\n this.params = params;\r\n this.$element = $element;\r\n this.isBoundToComment = ($element[0]) && ($element[0].nodeType === Node.COMMENT_NODE);\r\n this.uiElement = null;\r\n const expectedType = this.getExpectedUiElementType();\r\n if (expectedType !== null) {\r\n if ((typeof params.uiElement !== 'undefined')\r\n && (params.uiElement instanceof expectedType)) {\r\n this.uiElement = params.uiElement;\r\n }\r\n else {\r\n throw new Error('uiElement is not a ' + expectedType.name + ' instance.');\r\n }\r\n }\r\n else if ((typeof params.uiElement !== 'undefined') && !(this instanceof KoStandaloneControl)) {\r\n console.warn('Unexpected \"uiElement\" parameter for ' + this.constructor.name\r\n + ' that did not expect an UI element. Did you forget to override getExpectedUiElementType() ?', params.uiElement);\r\n }\r\n if (typeof params.children !== 'undefined') {\r\n if (Array.isArray(params.children) || this.isObservableArray(params.children)) {\r\n this.inputChildren = params.children;\r\n }\r\n else {\r\n throw new Error('Invalid \"children\" parameter: expected an array or an observable array.');\r\n }\r\n }\r\n else {\r\n this.inputChildren = [];\r\n }\r\n this.customClasses = ((typeof params.classes === 'object') && Array.isArray(params.classes)) ? params.classes : [];\r\n this.customStyles = ((typeof params.styles === 'object') && (params.styles !== null)) ? params.styles : {};\r\n if (typeof params.enabled !== 'undefined') {\r\n if (ko.isObservable(params.enabled)) {\r\n this.isEnabled = params.enabled;\r\n }\r\n else {\r\n this.isEnabled = ko.pureComputed(() => !!params.enabled);\r\n }\r\n }\r\n else {\r\n this.isEnabled = ko.pureComputed(() => true);\r\n }\r\n //Get the description either from the \"description\" parameter or from the UI element.\r\n this.description = params.description\r\n ? ko.unwrap(params.description.toString())\r\n : (((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.description) || '');\r\n }\r\n dispose() {\r\n //Does nothing by default.\r\n }\r\n getExpectedUiElementType() {\r\n return null;\r\n }\r\n get classes() {\r\n return [].concat(this.customClasses);\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in Knockout templates.\r\n get classString() {\r\n return this.classes.join(' ');\r\n }\r\n get styles() {\r\n return Object.assign({}, this.customStyles);\r\n }\r\n findChild(selector, allowSiblingSearch = null) {\r\n if (allowSiblingSearch === null) {\r\n //Enable only if the component is bound to a comment (i.e. \"\").\r\n allowSiblingSearch = this.isBoundToComment;\r\n }\r\n if (this.isBoundToComment) {\r\n if (allowSiblingSearch) {\r\n return this.$element.nextAll(selector).first();\r\n }\r\n else {\r\n //We would never find anything because a comment node has no children.\r\n return jQuery();\r\n }\r\n }\r\n return this.$element.find(selector);\r\n }\r\n isObservableArray(value) {\r\n return (typeof value === 'object')\r\n && (value !== null)\r\n && (typeof value.slice === 'function')\r\n && (typeof value.indexOf === 'function')\r\n && (ko.isObservable(value));\r\n }\r\n}\r\nfunction makeCreateVmFunctionForComponent(ctor) {\r\n return function (params, componentInfo) {\r\n const $element = jQuery(componentInfo.element);\r\n return new ctor(params, $element);\r\n };\r\n}\r\nexport function createComponentConfig(ctor, templateString) {\r\n return {\r\n viewModel: {\r\n createViewModel: makeCreateVmFunctionForComponent(ctor),\r\n },\r\n template: templateString,\r\n };\r\n}\r\n//endregion\r\n//region Container\r\nexport class ComponentBindingOptions {\r\n // noinspection JSUnusedGlobalSymbols -- the uiElement property is used in the KO template of AC control groups.\r\n constructor(name, params, uiElement) {\r\n this.name = name;\r\n this.params = params;\r\n this.uiElement = uiElement;\r\n if (name === '') {\r\n throw new Error('Component name cannot be empty.');\r\n }\r\n }\r\n static fromElement(element, overrideComponentName = null) {\r\n if (!element.component && (overrideComponentName === null)) {\r\n throw new Error(`Cannot create component binding options for UI element \"${element.id}\" without a component name.`);\r\n }\r\n return new ComponentBindingOptions(overrideComponentName || element.component, element.getComponentParams(), element);\r\n }\r\n}\r\nexport class KoContainerViewModel extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n if (typeof params.children === 'undefined') {\r\n throw new Error('Missing \"children\" parameter.');\r\n }\r\n super(params, $element);\r\n this.title = ko.pureComputed(() => {\r\n if (typeof params.title !== 'undefined') {\r\n let title = ko.unwrap(params.title);\r\n if ((title !== null) && (typeof title !== 'undefined')) {\r\n return title.toString();\r\n }\r\n }\r\n if (this.uiElement) {\r\n return this.uiElement.title;\r\n }\r\n return '';\r\n });\r\n this.childComponents = ko.pureComputed(() => {\r\n const result = ko.unwrap(this.inputChildren)\r\n .map(child => this.mapChildToComponentBinding(child))\r\n .filter(binding => binding !== null);\r\n //TypeScript does not recognize that the filter() call above removes\r\n //all null values, so we need an explicit cast.\r\n return result;\r\n });\r\n }\r\n mapChildToComponentBinding(child) {\r\n //Does not map any children by default.\r\n return null;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.childComponents.dispose();\r\n }\r\n}\r\n//endregion\r\n//region Control\r\nexport class KoControlViewModel extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n var _a;\r\n super(params, $element);\r\n this.settings =\r\n ((typeof params.settings === 'object') && isSettingMap(params.settings))\r\n ? params.settings\r\n : {};\r\n if (typeof this.settings.value !== 'undefined') {\r\n this.valueProxy = this.settings.value.value;\r\n }\r\n else {\r\n this.valueProxy = ko.pureComputed(() => {\r\n console.error('Missing \"value\" setting for a control component.', this.settings, params);\r\n return '';\r\n });\r\n }\r\n //Input ID will be provided by the server if applicable.\r\n this.primaryInputId = (typeof params.primaryInputId === 'string') ? params.primaryInputId : null;\r\n this.inputAttributes = ko.pureComputed(() => {\r\n var _a;\r\n const attributes = ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.inputAttributes) || {};\r\n const inputId = this.getPrimaryInputId();\r\n if ((inputId !== null) && (inputId !== '')) {\r\n attributes.id = inputId;\r\n }\r\n //Note: The \"name\" field is not used because these controls are entirely JS-driven.\r\n const additionalAttributes = this.getAdditionalInputAttributes();\r\n for (const key in additionalAttributes) {\r\n if (!additionalAttributes.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n attributes[key] = additionalAttributes[key];\r\n }\r\n return attributes;\r\n });\r\n if ((typeof params.label !== 'undefined') && (params.label !== null)) {\r\n const unwrappedLabel = ko.unwrap(params.label);\r\n this.label = (typeof unwrappedLabel === 'undefined') ? '' : unwrappedLabel.toString();\r\n }\r\n else {\r\n this.label = ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.label) || '';\r\n }\r\n }\r\n get inputClasses() {\r\n var _a;\r\n return ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.inputClasses) || [];\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in Knockout templates.\r\n get inputClassString() {\r\n return this.inputClasses.join(' ');\r\n }\r\n getAdditionalInputAttributes() {\r\n return {};\r\n }\r\n getPrimaryInputId() {\r\n return this.primaryInputId;\r\n }\r\n}\r\nfunction isSettingMap(value) {\r\n if (value === null) {\r\n return false;\r\n }\r\n if (typeof value !== 'object') {\r\n return false;\r\n }\r\n const valueAsRecord = value;\r\n for (const key in valueAsRecord) {\r\n if (!valueAsRecord.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n if (!(valueAsRecord[key] instanceof Setting)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * A control that doesn't use or need a UI element instance, but can still have\r\n * settings and other parameters typically associated with controls.\r\n */\r\nexport class KoStandaloneControl extends KoControlViewModel {\r\n}\r\n/**\r\n * A control that requires a UI element of the \"Control\" class.\r\n */\r\nexport class KoDependentControl extends KoControlViewModel {\r\n getExpectedUiElementType() {\r\n return Control;\r\n }\r\n}\r\nexport function createControlComponentConfig(ctor, templateString) {\r\n return {\r\n viewModel: {\r\n createViewModel: makeCreateVmFunctionForComponent(ctor),\r\n },\r\n template: templateString,\r\n };\r\n}\r\n//endregion\r\n//region Renderer\r\nexport class KoRendererViewModel extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if ((typeof params.structure !== 'object') || !(params.structure instanceof InterfaceStructure)) {\r\n throw new Error('Invalid interface structure for a renderer component.');\r\n }\r\n this.structure = params.structure;\r\n }\r\n}\r\nexport function createRendererComponentConfig(ctor, templateString) {\r\n return {\r\n viewModel: {\r\n createViewModel: makeCreateVmFunctionForComponent(ctor),\r\n },\r\n template: templateString,\r\n };\r\n}\r\n//endregion\r\n//# sourceMappingURL=control-base.js.map","/// \r\n/**\r\n * This is a wrapper for the popup slider that initializes the slider on first use.\r\n * It's useful for Knockout components.\r\n */\r\nexport class LazyPopupSliderAdapter {\r\n constructor(sliderRanges, containerSelector = '.ame-container-with-popup-slider', inputSelector = 'input', sliderOptions = {}) {\r\n this.sliderRanges = sliderRanges;\r\n this.containerSelector = containerSelector;\r\n this.inputSelector = inputSelector;\r\n this.sliderOptions = sliderOptions;\r\n this.slider = null;\r\n if (!sliderOptions.hasOwnProperty('ranges')) {\r\n sliderOptions.ranges = sliderRanges;\r\n }\r\n this.handleKoClickEvent = ($data, event) => {\r\n //Verify that this is one of the inputs we're interested in.\r\n //Also, disabled inputs should not trigger the slider.\r\n if (event.target === null) {\r\n return;\r\n }\r\n const $input = jQuery(event.target);\r\n if ($input.is(':disabled') || !$input.is(this.inputSelector)) {\r\n return;\r\n }\r\n //Short-circuit if the slider is already initialized.\r\n if (this.slider) {\r\n this.slider.showForInput($input);\r\n return;\r\n }\r\n //Some sanity checks.\r\n if (typeof AmePopupSlider === 'undefined') {\r\n return;\r\n }\r\n const $container = $input.closest(this.containerSelector);\r\n if ($container.length < 1) {\r\n return;\r\n }\r\n this.initSlider($container);\r\n if (this.slider !== null) {\r\n //TS doesn't realize that this.initSlider() will initialize the slider.\r\n this.slider.showForInput($input);\r\n }\r\n };\r\n }\r\n /**\r\n * Initialize the slider if it's not already initialized.\r\n */\r\n initSlider($container) {\r\n if (this.slider) {\r\n return;\r\n }\r\n //In HTML, we would pass the range data as a \"data-slider-ranges\" attribute,\r\n //but here they are passed via the \"ranges\" option (see the constructor).\r\n this.slider = AmePopupSlider.createSlider($container, this.sliderOptions);\r\n }\r\n}\r\n//# sourceMappingURL=lazy-popup-slider-adapter.js.map"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"admin-customizer.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,0DAA0D;AAC1D,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe,aAAa,eAAe;AACjF;AACA;AACA;AACA,yDAAyD,2DAA2D;AACpH;AACA;AACA,wDAAwD,kCAAkC;AAC1F;AACA;AACA;AACA;AACA;AACA,+DAA+D,+BAA+B;AAC9F;AACA;AACA,sDAAsD,+BAA+B,cAAc,eAAe;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,0BAA0B;AACxF;AACA,qCAAqC,SAAS,oDAAoD,0BAA0B;AAC5H;AACA;AACA;AACA,iEAAiE,4BAA4B;AAC7F;AACA;AACA,+DAA+D,0BAA0B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sEAAsE,EAAE,eAAe;AACvI;AACA,iDAAiD,iEAAiE,EAAE,eAAe;AACnI;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,0CAA0C,EAAE,cAAc;AAC1D;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,0CAA0C,EAAE,gCAAgC;AAC5E;AACA;AACA;AACA;AACA;AACA,gDAAgD,qEAAqE,EAAE,eAAe;AACtI;AACA,iDAAiD,iEAAiE,EAAE,eAAe;AACnI;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,uCAAuC,EAAE,cAAc;AACvD;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,uCAAuC,EAAE,cAAc;AACvD;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,0CAA0C,EAAE,gCAAgC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iBAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,CAAC;AACD,4BAA4B,wBAAwB;AACpD,yBAAyB,wBAAwB;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,sEAAsE,UAAU;AAChF;AACA,CAAC,8BAA8B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAA4D;AACxE;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mCAAmC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sBAAsB,gCAAgC;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B;AACA,sCAAsC,GAAG;AACzC,8BAA8B,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,GAAG;AACtF;AACA;AACA,4DAA4D,GAAG,mFAAmF,GAAG;AACrJ;AACA,sCAAsC,sBAAsB,sCAAsC,uBAAuB,OAAO,GAAG,cAAc;AACjJ;AACA,qCAAqC,yBAAyB,4DAA4D,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI,yBAAyB,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,mCAAmC,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI,0DAA0D,GAAG;AACnoB;AACA,yBAAyB,sBAAsB,IAAI,gBAAgB;AACnE,sDAAsD,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI;AAC7H,+BAA+B,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,mCAAmC,EAAE,SAAS,IAAI,MAAM,EAAE,iCAAiC,EAAE,SAAS,IAAI;AAC3Y;AACA;AACA;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,UAAU,EAAE,OAAO,EAAE;AACvH;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB;AAClG;AACA;AACA;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9F;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACzE;AACA;AACA;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE;AACxG;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D,SAAS;AACT;AACA;AACA,4CAA4C,qBAAqB;AACjE,SAAS;AACT;AACA;AACA,4CAA4C,qBAAqB;AACjE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAiD;AACvF;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uBAAuB;AAC7D;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA,gCAAgC,6CAA6C;AAC7E;AACA;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA,gCAAgC,8CAA8C;AAC9E;AACA;AACA,gCAAgC,8CAA8C;AAC9E;AACA;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA,gCAAgC,8CAA8C;AAC9E;AACA;AACA,gCAAgC,4CAA4C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,wDAAwD;AACjF,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB,wDAAwD;AACjF,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,kDAAkD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,gBAAgB,cAAc;AAC9B,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D,iCAAiC,uCAAuC;AACxE,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,cAAc;AACjF;AACA;AACA;AACA,8DAA8D,uBAAuB,sBAAsB,cAAc;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC;AACjC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sDAAsD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA,uBAAuB,sDAAsD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA;AACA,uGAAuG,qCAAqC;AAC5I,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,qDAAqD,aAAa;AAClE,+BAA+B,sCAAsC;AACrE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA,sCAAsC,SAAS;AAC/C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA,KAAK;AACL,yCAAyC,sBAAsB;AAC/D,qCAAqC,sBAAsB;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAE+pD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh3HnpD;AAEb,gDAAgD;AAChD,uCAAuC;AACvC,+CAA+C;AAE0D;AACV;AAC9B;AACJ;AACS;AACT;AACW;AACI;AACV;AACD;AACe;AACpB;AAKrD,IAAU,kBAAkB,CAiuElC;AAjuED,WAAiB,kBAAkB;IAElC,IAAO,iBAAiB,GAAG,wGAAiC,CAAC;IAG7D,IAAO,oBAAoB,GAAG,2GAAoC,CAAC;IACnE,IAAO,kBAAkB,GAAG,yGAAkC,CAAC;IAI/D,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,MAAM,CAAC,GAAG,WAAW,CAAC;IAEtB,0GAAsB,EAAE,CAAC;IACzB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,EAAE,0EAAc,CAAC,CAAC;IAC3D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,wEAAY,CAAC,CAAC;IACvD,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,EAAE,6EAAgB,CAAC,CAAC;IAChE,E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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;;;;;;;;;;;;;;;;ACvCmD;AAC8C;AACjG,kCAAkC,4DAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACtCgJ;AAC5D;AACpF,mBAAmB,mGAA4B;AAC/C,gCAAgC,kGAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iHAAmC;AACtD;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC9CqH;AACjC;AACpF,cAAc,8FAAuB;AACrC;AACA;AACA,iCAAiC,gBAAgB,KAAK,aAAa;AACnE;AACA;AACA;AACA,2BAA2B,gGAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA;AACA,sEAAsE,gBAAgB;AACtF;AACA;AACA;AACA;AACA;AACA,sBAAsB,mEAAmE;AACzF;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;ACvCuH;AACnC;AACpF,cAAc,8FAAuB;AACc;AACnD,+BAA+B,kGAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gFAAgC;AAC/D,yBAAyB,oFAAoC;AAC7D;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC,mDAAmD,oDAAoD;AACvG;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;ACvBgJ;AAC5D;AACpF,cAAc,8FAAuB;AACrC,cAAc,8FAAuB;AACrC,mBAAmB,mGAA4B;AACxC,2BAA2B,kGAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iHAAmC;AAC1D;AACA;AACA,uBAAuB,iHAAmC;AAC1D;AACA;AACA;AACA,mBAAmB,iHAAmC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iHAAmC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,sDAAsD,oDAAoD;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACtHsH;AACtH,6BAA6B,iGAAmB;AAChD;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACT8H;AAC1C;AACpF,cAAc,8FAAuB;AACrC,6BAA6B,iGAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,+GAA6B;AAC5C;AACA,sBAAsB,4DAA4D;AAClF;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACxCsH;AACtH,oCAAoC,iGAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,uGAAqB;AACpC;AACA;AACA,6EAA6E,qBAAqB;AAClG;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC5Ba;AAC0E;AACd;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa,WAAW,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa,WAAW,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iFAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0CAA0C;AACvE;AACA;AACA;AACA;AACA,yEAAyE,mBAAmB;AAC5F;AACA;AACA;AACA,2DAA2D,uBAAuB;AAClF;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC1SyD;AAClD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,+BAA+B,iEAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACnBa;AAC0E;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0CAA0C,2BAA2B;AAC3F;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;AChCuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AAC0E;AACN;AACc;AACR;AACN;AACkB;AACP;AACd;AACH;AAC2B;AACxB;AACH;AACe;AACN;AACZ;AACiC;AAC3B;AACjE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iDAAiD,iFAAgB;AACjE,+CAA+C,6EAAc;AAC7D,oDAAoD,uFAAkB;AACtE,iDAAiD,iFAAgB;AACjE,+CAA+C,6EAAc;AAC7D,qDAAqD,yFAAoB;AACzE,mDAAmD,qFAAiB;AACpE,8CAA8C,2EAAa;AAC3D,6CAA6C,yEAAY;AACzD,sDAAsD,2FAAqB;AAC3E,8CAA8C,4EAAa;AAC3D,6CAA6C,0EAAY;AACzD,kDAAkD,oFAAiB;AACnE,gDAAgD,gFAAe;AAC/D,4CAA4C,wEAAW;AACvD,uDAAuD,8FAAsB;AAC7E,8CAA8C,4EAAa;AAC3D;AACA;AACA;;;;;;;;;;;;;;;AClD0D;AAC1D;AACA;AACA;AACO,sCAAsC,kEAAoB;AACjE;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACVuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAS,IAAI,OAAO;AAC9C;AACA,mDAAmD,YAAY;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,iCAAiC,iEAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA,oEAAoE,oBAAoB;AACxF;AACA;AACA;AACA;AACA,mCAAmC,wDAAwD;AAC3F;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACnKuF;AACvF,qCAAqC,iEAAmB;AACxD;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACTa;AAC0E;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA,8DAA8D,wBAAwB;AACtF;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC/C2D;AACqB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wFAAuB;AAC1D;AACA,iEAAe,uEAAqB;AACpC;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;ACbA;AACsF;AACvB;AAC/D,cAAc,4EAAuB;AAC9B,6BAA6B,gEAAkB;AACtD;AACA;AACA;AACA;AACA,qDAAqD,yBAAyB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,qBAAqB;AAChG;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAgD;AACzF;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACnHa;AACqD;AACa;AAC/E,gCAAgC,uFAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA,8DAA8D,2BAA2B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AC9Ba;AACqD;AACa;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uFAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAwE;AAChF;AACA;AACA,UAAU,sCAAsC;AAChD;AACA;AACA,uBAAuB,yCAAyC,2BAA2B;AAC3F;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;AACA,SAAS,eAAe;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,2BAA2B,8CAA8C;AACzE;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;AClG+E;AACb;AAClE,2BAA2B,uFAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA,sBAAsB,0CAA0C,2BAA2B;AAC3F;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACjB2D;AACqB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wFAAuB;AAC3D;AACA,iEAAe,uEAAqB;AACpC;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACfuF;AACvF,4BAA4B,iEAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACrBsF;AAC/E,2BAA2B,gEAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,sBAAsB,0CAA0C,2BAA2B;AAC3F;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;AC1BuF;AACvF,gCAAgC,iEAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA,uBAAuB,yCAAyC,2BAA2B;AAC3F;AACA;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;ACtCuF;AAChF,8BAA8B,iEAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA;AACA,SAAS,aAAa;AACtB,EAAE,EAAC;AACH;;;;;;;;;;;;;;;ACjBa;AAC0E;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iEAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,+BAA+B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,8EAA4B;AAC3C;AACA,EAAE,EAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;ACpK4D;AAC5D,cAAc,4EAAuB;AACrC,yBAAyB,uFAAkC;AAC3D,cAAc,4EAAuB;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,WAAW;AAClG;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5RA;AACA;AACA;AACA;AACA;AACO;AACP,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack:///./extras/zod/lib/index.js","webpack:///./extras/modules/admin-customizer/admin-customizer.ts","webpack:///./extras/modules/admin-customizer/admin-customizer-base.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-content-section.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-control-group.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-control.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-section-link.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-section.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-separator.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-structure.js","webpack:///./extras/modules/admin-customizer/ko-components/ame-ac-validation-errors.js","webpack:///./extras/pro-customizables/ko-components/ame-box-dimensions/ame-box-dimensions.js","webpack:///./extras/pro-customizables/ko-components/ame-choice-control/ame-choice-control.js","webpack:///./extras/pro-customizables/ko-components/ame-code-editor/ame-code-editor.js","webpack:///./extras/pro-customizables/ko-components/ame-color-picker/ame-color-picker.js","webpack:///./extras/pro-customizables/ko-components/ame-components.js","webpack:///./extras/pro-customizables/ko-components/ame-description/ame-description.js","webpack:///./extras/pro-customizables/ko-components/ame-font-style-picker/ame-font-style-picker.js","webpack:///./extras/pro-customizables/ko-components/ame-horizontal-separator/ame-horizontal-separator.js","webpack:///./extras/pro-customizables/ko-components/ame-image-selector/ame-image-selector.js","webpack:///./extras/pro-customizables/ko-components/ame-nested-description/ame-nested-description.js","webpack:///./extras/pro-customizables/ko-components/ame-number-input/ame-number-input.js","webpack:///./extras/pro-customizables/ko-components/ame-radio-button-bar/ame-radio-button-bar.js","webpack:///./extras/pro-customizables/ko-components/ame-radio-group/ame-radio-group.js","webpack:///./extras/pro-customizables/ko-components/ame-select-box/ame-select-box.js","webpack:///./extras/pro-customizables/ko-components/ame-sibling-description/ame-sibling-description.js","webpack:///./extras/pro-customizables/ko-components/ame-static-html/ame-static-html.js","webpack:///./extras/pro-customizables/ko-components/ame-text-input/ame-text-input.js","webpack:///./extras/pro-customizables/ko-components/ame-toggle-checkbox/ame-toggle-checkbox.js","webpack:///./extras/pro-customizables/ko-components/ame-unit-dropdown/ame-unit-dropdown.js","webpack:///./extras/pro-customizables/ko-components/ame-wp-editor/ame-wp-editor.js","webpack:///./extras/pro-customizables/ko-components/control-base.js","webpack:///./extras/pro-customizables/ko-components/lazy-popup-slider-adapter.js"],"sourcesContent":["var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (typeof value.value !== \"undefined\" || pair.alwaysSet) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n if (typeof ctx.data === \"undefined\") {\n return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };\n }\n return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[a-z][a-z0-9]*$/;\nconst ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\nconst ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// Adapted from https://stackoverflow.com/a/3143231\nconst datetimeRegex = (args) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`);\n }\n }\n else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`);\n }\n }\n else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`);\n }\n }\n};\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n constructor() {\n super(...arguments);\n this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));\n this.trim = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n this.toLowerCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n this.toUpperCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n }\n //\n );\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return Object.keys(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else {\n return null;\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n return OK(async (...args) => {\n const error = new ZodError([]);\n const parsedArgs = await this._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await fn(...parsedArgs);\n const parsedReturns = await this._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n return OK((...args) => {\n const parsedArgs = this._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = fn(...parsedArgs.data);\n const parsedReturns = this._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values) {\n return ZodEnum.create(values);\n }\n exclude(values) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data);\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed) => {\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n });\n }\n else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc\n // effect: RefinementEffect\n ) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nconst custom = (check, params = {}, \n/*\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n};\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","'use strict';\n\n/// \n/// \n/// \n\nimport {AmeCustomizable, AmeCustomizableViewModel} from '../../pro-customizables/assets/customizable.js';\nimport {registerBaseComponents} from '../../pro-customizables/ko-components/ame-components.js';\nimport AmeAcStructure from './ko-components/ame-ac-structure.js';\nimport AmeAcSection from './ko-components/ame-ac-section.js';\nimport AmeAcSectionLink from './ko-components/ame-ac-section-link.js';\nimport AmeAcControl from './ko-components/ame-ac-control.js';\nimport AmeAcControlGroup from './ko-components/ame-ac-control-group.js';\nimport AmeAcContentSection from './ko-components/ame-ac-content-section.js';\nimport {AmeAdminCustomizerBase} from './admin-customizer-base.js';\nimport AmeAcSeparator from './ko-components/ame-ac-separator.js';\nimport AmeAcValidationErrors from './ko-components/ame-ac-validation-errors.js';\nimport z, {ZodError, ZodType} from '../../zod/lib/index.js';\n\ndeclare var wsAmeLodash: _.LoDashStatic;\ndeclare const wsAmeAdminCustomizerData: AmeAdminCustomizer.ScriptData;\n\nexport namespace AmeAdminCustomizer {\n\timport Setting = AmeCustomizable.Setting;\n\timport SettingCollection = AmeCustomizable.SettingCollection;\n\timport InterfaceStructureData = AmeCustomizable.InterfaceStructureData;\n\timport InterfaceStructure = AmeCustomizable.InterfaceStructure;\n\timport unserializeUiElement = AmeCustomizable.unserializeUiElement;\n\timport unserializeSetting = AmeCustomizable.unserializeSetting;\n\timport AnySpecificElementData = AmeCustomizable.AnySpecificElementData;\n\timport CustomizableVmInterface = AmeCustomizableViewModel.CustomizableVmInterface;\n\n\tconst $ = jQuery;\n\tconst _ = wsAmeLodash;\n\n\tregisterBaseComponents();\n\tko.components.register('ame-ac-structure', AmeAcStructure);\n\tko.components.register('ame-ac-section', AmeAcSection);\n\tko.components.register('ame-ac-section-link', AmeAcSectionLink);\n\tko.components.register('ame-ac-content-section', AmeAcContentSection);\n\tko.components.register('ame-ac-control-group', AmeAcControlGroup);\n\tko.components.register('ame-ac-control', AmeAcControl);\n\tko.components.register('ame-ac-separator', AmeAcSeparator);\n\tko.components.register('ame-ac-validation-errors', AmeAcValidationErrors);\n\n\texport interface ScriptData extends AmeAdminCustomizerBase.ScriptData, AdminThemeTexts {\n\t\tajaxUrl: string;\n\t\tsaveChangesetNonce: string;\n\t\ttrashChangesetNonce: string;\n\t\tchangesetItemCount: number;\n\t\tchangesetStatus: string;\n\t\tchangesetThemeMetadata: AdminThemeMetadata | null;\n\n\t\trefreshPreviewNonce: string;\n\t\tinitialPreviewUrl: string;\n\t\tinterfaceStructure: InterfaceStructureData;\n\n\t\t/**\n\t\t * The template to use when generating the URL for a changeset.\n\t\t *\n\t\t * By default, the changeset name is added as a query parameter. Alternatively,\n\t\t * you can use a path template that includes a \"{changeset}\" placeholder, which\n\t\t * will be replaced with the changeset name.\n\t\t */\n\t\tchangesetPathTemplate: string | null;\n\n\t\t/**\n\t\t * Whether to use pushState() to update the URL when the changeset name changes.\n\t\t *\n\t\t * By default, we discourage navigating to the old URL (no pushState()) because\n\t\t * the name is only expected to change when the old changeset becomes invalid\n\t\t * (e.g. it's deleted or published).\n\t\t */\n\t\tchangesetPushStateEnabled: boolean;\n\n\t\t/**\n\t\t * Admin Customizer base path. Defaults to the current URL path.\n\t\t *\n\t\t * Note that setting this to a non-empty value will also stop AC from\n\t\t * adding the \"page\" query parameter to the URL.\n\t\t */\n\t\tcustomBasePath: string | null;\n\n\t\texitPromptMode?: number;\n\t}\n\n\tinterface AdminThemeTexts {\n\t\tgeneratorCreditPhrase?: string;\n\t\tstandalonePluginNote?: string;\n\t}\n\n\tconst reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n\tlet prefersReducedMotion = reducedMotionQuery && reducedMotionQuery.matches;\n\treducedMotionQuery.addEventListener('change', () => {\n\t\tprefersReducedMotion = reducedMotionQuery.matches;\n\t});\n\n\tclass CustomizerSettingsCollection extends SettingCollection {\n\t\t/**\n\t\t * Settings that have changed since the last save attempt.\n\t\t */\n\t\tprivate pendingSettings: Record = {};\n\t\t/**\n\t\t * Settings that in the process of being sent to the server to be saved.\n\t\t * They might not be saved yet.\n\t\t */\n\t\tprivate sentSettings: Record = {};\n\t\tprivate currentChangesetRequest: JQueryXHR | null = null;\n\t\tprivate saveTriggerTimeoutId: null | ReturnType = null;\n\n\t\tprivate readonly currentChangeset: KnockoutObservable;\n\t\tpublic readonly changesetName: KnockoutComputed;\n\n\t\tpublic readonly adminThemeMetadata: KnockoutObservable;\n\t\tprivate readonly underlyingMetadata: KnockoutObservable = ko.observable(null);\n\t\tprivate readonly metadataHasChanged: KnockoutObservable = ko.observable(false);\n\n\t\tpublic readonly isExclusiveOperationInProgress: KnockoutComputed;\n\t\tprivate readonly exclusiveOperation: KnockoutObservable = ko.observable(false);\n\n\t\tconstructor(\n\t\t\tpublic readonly ajaxUrl: string,\n\t\t\tpublic readonly saveChangesetNonce: string,\n\t\t\tpublic readonly trashChangesetNonce: string,\n\t\t\tchangesetName: string,\n\t\t\tchangesetItemCount: number = 0,\n\t\t\tchangesetStatus: string | null = null\n\t\t) {\n\t\t\tsuper();\n\t\t\tconst self = this;\n\n\t\t\tthis.currentChangeset = ko.observable(\n\t\t\t\tnew Changeset(changesetName, changesetItemCount, changesetStatus)\n\t\t\t);\n\t\t\tthis.changesetName = ko.pureComputed(() => {\n\t\t\t\treturn (self.currentChangeset()?.name()) || '';\n\t\t\t});\n\n\t\t\tthis.adminThemeMetadata = ko.computed({\n\t\t\t\tread: () => this.underlyingMetadata(),\n\t\t\t\twrite: (newValue) => {\n\t\t\t\t\tconst oldValue = this.underlyingMetadata.peek();\n\t\t\t\t\tif (!_.isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tthis.underlyingMetadata(newValue);\n\t\t\t\t\t\tthis.metadataHasChanged(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//Automatically save the changeset when any settings change.\n\t\t\tconst totalChangeCount = ko.pureComputed(() => {\n\t\t\t\tconst changeset = self.currentChangeset();\n\t\t\t\treturn (changeset ? changeset.currentSessionChanges() : 0);\n\t\t\t});\n\t\t\tconst debouncedSaveTrigger = _.debounce(\n\t\t\t\t() => {\n\t\t\t\t\t//Only save if there are changes. This may look like a duplicate check,\n\t\t\t\t\t//but it's not: the totalChangeCount() may change between the time\n\t\t\t\t\t//the debounced function is called and the time this code is executed.\n\t\t\t\t\t//\n\t\t\t\t\t//Also save if the metadata has changed, but only if the changeset\n\t\t\t\t\t//is not empty. Saving a changeset with only metadata is not useful.\n\t\t\t\t\tif (\n\t\t\t\t\t\t(totalChangeCount() > 0)\n\t\t\t\t\t\t|| (this.metadataHasChanged() && this.currentChangeset().isNonEmpty())\n\t\t\t\t\t) {\n\t\t\t\t\t\tself.queueChangesetUpdate()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t3000,\n\t\t\t\t{leading: true, trailing: true}\n\t\t\t)\n\t\t\ttotalChangeCount.subscribe((counter) => {\n\t\t\t\tif (counter > 0) {\n\t\t\t\t\tdebouncedSaveTrigger();\n\t\t\t\t}\n\t\t\t});\n\t\t\t//Also save when theme metadata changes.\n\t\t\tthis.metadataHasChanged.subscribe((hasChanged) => {\n\t\t\t\tif (hasChanged) {\n\t\t\t\t\tdebouncedSaveTrigger();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.isExclusiveOperationInProgress = ko.pureComputed(() => {\n\t\t\t\treturn self.exclusiveOperation();\n\t\t\t});\n\n\t\t\t//Keep track of unsaved changes and changesets.\n\t\t\tthis.addChangeListener((setting: Setting) => {\n\t\t\t\tthis.pendingSettings[setting.id] = setting;\n\n\t\t\t\tlet changeset = this.currentChangeset();\n\t\t\t\t//If the current changeset cannot be modified, create a new one\n\t\t\t\t//for the changed setting(s).\n\t\t\t\tif (!changeset?.canBeModified()) {\n\t\t\t\t\tchangeset = new Changeset();\n\t\t\t\t\tthis.currentChangeset(changeset);\n\t\t\t\t}\n\t\t\t\t//Track the number of changes in the current session.\n\t\t\t\tchangeset.currentSessionChanges(changeset.currentSessionChanges() + 1);\n\t\t\t});\n\t\t}\n\n\t\tqueueChangesetUpdate(delay: number = 0) {\n\t\t\tif (delay > 0) {\n\t\t\t\tif (this.saveTriggerTimeoutId !== null) {\n\t\t\t\t\t//Replace the existing timeout with a new one.\n\t\t\t\t\tclearTimeout(this.saveTriggerTimeoutId);\n\t\t\t\t}\n\t\t\t\tthis.saveTriggerTimeoutId = setTimeout(() => {\n\t\t\t\t\tthis.saveTriggerTimeoutId = null;\n\t\t\t\t\tthis.queueChangesetUpdate(0);\n\t\t\t\t}, delay);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.saveTriggerTimeoutId !== null) {\n\t\t\t\treturn; //Another timeout is already waiting.\n\t\t\t}\n\n\t\t\tif (this.currentChangesetRequest !== null) {\n\t\t\t\t//There's an in-progress request, so wait until it's done.\n\t\t\t\tthis.currentChangesetRequest.always(() => {\n\t\t\t\t\t//Wait a bit to avoid hammering the server.\n\t\t\t\t\tthis.queueChangesetUpdate(1000);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.saveChangeset();\n\t\t}\n\n\t\tprivate saveChangeset(status: string | null = null): JQueryPromise {\n\t\t\t//Do nothing if there are no changes.\n\t\t\tif (_.isEmpty(this.pendingSettings) && (status === null) && !this.metadataHasChanged()) {\n\t\t\t\treturn $.Deferred().reject(new Error('There are no changes to save.')).promise();\n\t\t\t}\n\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\treturn $.Deferred().reject(\n\t\t\t\t\tnew Error('Another exclusive changeset operation is in progress.')\n\t\t\t\t).promise();\n\t\t\t}\n\n\t\t\tlet isExclusiveRequest = (status === 'publish') || (status === 'trash');\n\t\t\tif (isExclusiveRequest) {\n\t\t\t\tthis.exclusiveOperation(true);\n\t\t\t}\n\n\t\t\tconst savedChangeset = this.currentChangeset();\n\n\t\t\t//Keep a local copy of the settings in case something changes instance\n\t\t\t//properties while the request is in progress (should never happen).\n\t\t\tconst settingsToSend = this.pendingSettings;\n\t\t\tthis.sentSettings = settingsToSend;\n\t\t\tthis.pendingSettings = {};\n\n\t\t\tconst modifiedSettings = _.mapValues(settingsToSend, setting => setting.value());\n\t\t\tconst requestData: Record = {\n\t\t\t\taction: 'ws_ame_ac_save_changeset',\n\t\t\t\t_ajax_nonce: this.saveChangesetNonce,\n\t\t\t\tchangeset: (savedChangeset?.name()) ?? '',\n\t\t\t\tmodified: JSON.stringify(modifiedSettings),\n\t\t\t};\n\t\t\tif (status !== null) {\n\t\t\t\trequestData['status'] = status;\n\t\t\t}\n\t\t\t//If the changeset doesn't have a name, it is new.\n\t\t\tif (!savedChangeset?.hasName()) {\n\t\t\t\trequestData['createNew'] = 1;\n\t\t\t}\n\n\t\t\t//Also send the metadata if it has changed.\n\t\t\tconst metadataWasChanged = this.metadataHasChanged();\n\t\t\tif (metadataWasChanged) {\n\t\t\t\tconst metadata = this.adminThemeMetadata();\n\t\t\t\trequestData['adminThemeMetadata'] = JSON.stringify(metadata);\n\t\t\t}\n\t\t\tthis.metadataHasChanged(false);\n\n\t\t\tconst request = $.ajax({\n\t\t\t\turl: this.ajaxUrl,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: requestData,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttimeout: 20000,\n\t\t\t});\n\t\t\tthis.currentChangesetRequest = request;\n\n\t\t\tinterface ServerValidationResults {\n\t\t\t\t[settingId: string]: {\n\t\t\t\t\tisValid: boolean;\n\t\t\t\t\terrors: Array<{ code: string; message: string; }>;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst self = this;\n\n\t\t\tfunction storeValidationResultsFrom(serverResponse: any) {\n\t\t\t\tconst results: ServerValidationResults = _.get(\n\t\t\t\t\tserverResponse,\n\t\t\t\t\t['data', 'validationResults']\n\t\t\t\t);\n\t\t\t\tif (typeof results !== 'object') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (const settingId in results) {\n\t\t\t\t\tconst setting = self.get(settingId);\n\t\t\t\t\tif (!setting.isDefined()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!modifiedSettings.hasOwnProperty(settingId)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst sentValue = modifiedSettings[settingId];\n\n\t\t\t\t\tconst state = results[settingId];\n\t\t\t\t\tif (state.isValid) {\n\t\t\t\t\t\tsetting.get().clearValidationErrorsForValue(sentValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Since the server response is not fully validated, some typeof checks\n\t\t\t\t\t\t//are still useful.\n\t\t\t\t\t\t// noinspection SuspiciousTypeOfGuard\n\t\t\t\t\t\tsetting.get().addValidationErrorsForValue(\n\t\t\t\t\t\t\tsentValue,\n\t\t\t\t\t\t\t_.filter(state.errors, error => (typeof error.message === 'string'))\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction storeChangesetDetailsFrom(serverResponse: any) {\n\t\t\t\tif (!savedChangeset) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Store the returned changeset name in case a new changeset was created\n\t\t\t\t//or an existing changeset was forked due to permissions.\n\t\t\t\tconst newName = _.get(serverResponse, ['data', 'changeset']);\n\t\t\t\tif (!savedChangeset.hasName() || (newName !== savedChangeset.name())) {\n\t\t\t\t\tif (typeof newName === 'string') {\n\t\t\t\t\t\tsavedChangeset.name(newName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Store the changeset status.\n\t\t\t\tconst newStatus = _.get(serverResponse, ['data', 'changesetStatus']);\n\t\t\t\tif (typeof newStatus === 'string') {\n\t\t\t\t\tsavedChangeset.status(newStatus);\n\t\t\t\t}\n\n\t\t\t\t//Store the number of changes in the changeset.\n\t\t\t\tconst newChangeCount = _.get(serverResponse, ['data', 'changesetItemCount']);\n\t\t\t\tif (typeof newChangeCount === 'number') {\n\t\t\t\t\tsavedChangeset.knownItemCount(newChangeCount);\n\t\t\t\t}\n\n\t\t\t\t//Was the changeset published? Because changesets are typically moved\n\t\t\t\t//to trash after publishing, \"status\" might be \"trash\" instead of \"publish\",\n\t\t\t\t//but we still want to know if it was successfully published.\n\t\t\t\tconst wasPublished = _.get(serverResponse, ['data', 'changesetWasPublished'], null);\n\t\t\t\tif (wasPublished) {\n\t\t\t\t\tsavedChangeset.wasPublished(wasPublished);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trequest.done(function (response) {\n\t\t\t\tstoreChangesetDetailsFrom(response);\n\t\t\t\tstoreValidationResultsFrom(response);\n\n\t\t\t\t//After successfully publishing a changeset, it has no more\n\t\t\t\t//unsaved changes.\n\t\t\t\tconst isPublished =\n\t\t\t\t\t(savedChangeset.status() === 'publish')\n\t\t\t\t\t|| (savedChangeset.status() === 'future')\n\t\t\t\t\t|| (savedChangeset.wasPublished());\n\t\t\t\tif (isPublished) {\n\t\t\t\t\tsavedChangeset.currentSessionChanges(0);\n\t\t\t\t}\n\n\t\t\t\t//After a changeset is published or trashed, it can no longer\n\t\t\t\t//be edited. We may be able to replace it with a new changeset\n\t\t\t\t//that was created on the server.\n\t\t\t\tif (!self.currentChangeset().canBeModified()) {\n\t\t\t\t\tconst nextChangeset = _.get(response, ['data', 'nextChangeset']);\n\t\t\t\t\tif ((typeof nextChangeset === 'string') && (nextChangeset !== '')) {\n\t\t\t\t\t\tself.currentChangeset(new Changeset(nextChangeset));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trequest.fail((requestObject: JQueryXHR) => {\n\t\t\t\tif (typeof requestObject.responseJSON === 'object') {\n\t\t\t\t\tstoreValidationResultsFrom(requestObject.responseJSON);\n\t\t\t\t\tstoreChangesetDetailsFrom(requestObject.responseJSON);\n\t\t\t\t}\n\n\t\t\t\t//Add the unsaved settings back to the pending list.\n\t\t\t\tfor (const id in settingsToSend) {\n\t\t\t\t\t//Keep only settings that still exist.\n\t\t\t\t\tif (this.get(id).isDefined()) {\n\t\t\t\t\t\tthis.pendingSettings[id] = settingsToSend[id];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//We don't automatically retry because the problem might be something\n\t\t\t\t//that doesn't get better on its own, like missing permissions.\n\t\t\t});\n\n\t\t\trequest.always(() => {\n\t\t\t\tthis.currentChangesetRequest = null;\n\t\t\t\tthis.sentSettings = {};\n\t\t\t\tif (isExclusiveRequest) {\n\t\t\t\t\tthis.exclusiveOperation(false);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn request;\n\t\t}\n\n\t\tpublic savePendingSettings(timeout: number = 20): JQueryPromise {\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\t//Wait for the exclusive operation to finish.\n\t\t\t\tconst deferred = $.Deferred();\n\t\t\t\tconst result = deferred.then(() => this.doSavePendingSettings());\n\n\t\t\t\tconst startTime = Date.now();\n\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\tif (!this.isExclusiveOperationInProgress()) {\n\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\tdeferred.resolve();\n\t\t\t\t\t} else if ((Date.now() - startTime) > timeout) {\n\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\tdeferred.reject(new Error('Exclusive operation timed out.'));\n\t\t\t\t\t}\n\t\t\t\t}, 200);\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn this.doSavePendingSettings();\n\t\t}\n\n\t\tprivate doSavePendingSettings(): JQueryPromise {\n\t\t\t//If there are no changes, we don't need to do anything.\n\t\t\tif (_.isEmpty(this.pendingSettings)) {\n\t\t\t\treturn $.Deferred().resolve().promise();\n\t\t\t}\n\t\t\treturn this.saveChangeset();\n\t\t}\n\n\t\tpublic getCurrentChangeset(): Changeset {\n\t\t\treturn this.currentChangeset();\n\t\t}\n\n\t\t/**\n\t\t * Get any unsaved setting changes.\n\t\t *\n\t\t * @returns Object An object mapping setting IDs to their modified values.\n\t\t */\n\t\tpublic get unsavedChanges(): Record {\n\t\t\t//Include both pending settings and sent settings. Sent settings\n\t\t\t//might not be saved yet.\n\t\t\tlet unsavedSettings: Record = {};\n\t\t\t_.defaults(unsavedSettings, this.pendingSettings, this.sentSettings);\n\n\t\t\treturn _.mapValues(unsavedSettings, setting => setting.value());\n\t\t}\n\n\t\tpublic publishChangeset(): JQueryPromise {\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\treturn $.Deferred()\n\t\t\t\t\t.reject(new Error('Another exclusive changeset operation is already in progress.'))\n\t\t\t\t\t.promise();\n\t\t\t}\n\t\t\treturn this.saveChangeset('publish');\n\t\t}\n\n\t\tpublic trashChangeset(): JQueryPromise {\n\t\t\tif (this.isExclusiveOperationInProgress()) {\n\t\t\t\treturn $.Deferred()\n\t\t\t\t\t.reject(new Error('Another exclusive changeset operation is already in progress.'))\n\t\t\t\t\t.promise();\n\t\t\t}\n\n\t\t\tconst changeset = this.currentChangeset();\n\t\t\tif (!changeset.hasName()) {\n\t\t\t\t//The changeset hasn't been saved yet, so we can just mark it as trashed.\n\t\t\t\tchangeset.status('trash');\n\t\t\t\tchangeset.currentSessionChanges(0);\n\n\t\t\t\t//It's a success of sorts.\n\t\t\t\treturn $.Deferred().resolve(true).promise();\n\t\t\t}\n\n\t\t\tthis.exclusiveOperation(true);\n\n\t\t\tconst requestData: Record = {\n\t\t\t\taction: 'ws_ame_ac_trash_changeset',\n\t\t\t\t_ajax_nonce: this.trashChangesetNonce,\n\t\t\t\tchangeset: changeset.name\n\t\t\t};\n\n\t\t\tconst request = $.ajax({\n\t\t\t\turl: this.ajaxUrl,\n\t\t\t\tmethod: 'POST',\n\t\t\t\tdata: requestData,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttimeout: 20000,\n\t\t\t});\n\t\t\tthis.currentChangesetRequest = request;\n\n\t\t\trequest.done(function () {\n\t\t\t\tchangeset.status('trash');\n\t\t\t\tchangeset.currentSessionChanges(0);\n\t\t\t});\n\n\t\t\t//Unfortunately, jQuery doesn't seem to allow us to create a custom\n\t\t\t//error object and pass it to other handlers, so code that uses this\n\t\t\t//method will have to parse the error response itself.\n\n\t\t\trequest.always(() => {\n\t\t\t\tthis.currentChangesetRequest = null;\n\t\t\t\tthis.exclusiveOperation(false);\n\t\t\t});\n\n\t\t\treturn request;\n\t\t}\n\n\t\tpublic addInitialThemeMetadata(metadata: AdminThemeMetadata | null) {\n\t\t\tthis.underlyingMetadata(metadata);\n\t\t\tthis.metadataHasChanged(false);\n\t\t}\n\t}\n\n\tclass Changeset {\n\t\tpublic readonly name: KnockoutObservable;\n\t\tpublic readonly knownItemCount: KnockoutObservable;\n\t\tpublic readonly status: KnockoutObservable;\n\n\t\t/**\n\t\t * The number of times settings have been changed in this changeset\n\t\t * during the current customizer session.\n\t\t *\n\t\t * Note that this is not the same as the number settings in the changeset:\n\t\t * if the same setting is changed X times, this counter will increase by X,\n\t\t * but the changeset will still only have one entry for that setting.\n\t\t */\n\t\tpublic readonly currentSessionChanges: KnockoutObservable = ko.observable(0);\n\n\t\t/**\n\t\t * Once a changeset has been published or deleted, its contents can't be modified any more.\n\t\t * @private\n\t\t */\n\t\tprivate readonly fixedContentStatuses: Record =\n\t\t\t{'publish': true, 'trash': true, 'future': true};\n\n\t\tpublic readonly wasPublished: KnockoutObservable = ko.observable(false);\n\n\t\tconstructor(name: string = '', knownItemCount: number = 0, initialStatus: string | null = '') {\n\t\t\tthis.name = ko.observable(name);\n\n\t\t\tthis.name.subscribe((newName) => {\n\t\t\t\t//In theory, the type system should ensure that the name is always a string,\n\t\t\t\t//but that only works on the TS side. I've previously run into a bug where\n\t\t\t\t//a null value was sent from the server. Let's add a check here to make it\n\t\t\t\t//easier to spot bugs like that in the future.\n\t\t\t\tif ((typeof (newName as unknown) !== 'string')) {\n\t\t\t\t\tthrow new Error('Changeset name must always be a string, found ' + (typeof newName));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.knownItemCount = ko.observable(knownItemCount);\n\t\t\tthis.status = ko.observable(initialStatus ?? '');\n\t\t}\n\n\t\tpublic hasName(): boolean {\n\t\t\tconst name = this.name();\n\t\t\treturn (name !== '');\n\t\t}\n\n\t\tpublic canBeModified(): boolean {\n\t\t\treturn !this.fixedContentStatuses.hasOwnProperty(this.status());\n\t\t}\n\n\t\tpublic isNonEmpty(): boolean {\n\t\t\treturn (this.currentSessionChanges() > 0) || (this.knownItemCount() > 0)\n\t\t}\n\t}\n\n\tconst TemporaryChangesetName = 'temporary000'; //Note: Must match the value used in PHP.\n\n\t//region Admin theme\n\tconst UrlOrEmpty = z.union([\n\t\tz.string().url().max(1000),\n\t\tz.literal('')\n\t]);\n\n\tconst AdminThemeMetadata = z.object({\n\t\tpluginName: z.string().max(100),\n\t\tshortDescription: z.string().max(500),\n\n\t\tpluginSlug: z.string().max(64).toLowerCase().default('')\n\t\t\t.refine(\n\t\t\t\tfunction (input: string) {\n\t\t\t\t\t//Only allow alphanumeric characters, underscores, and dashes.\n\t\t\t\t\t//Empty string is allowed.\n\t\t\t\t\treturn /^[a-z0-9_-]*$/.test(input);\n\t\t\t\t},\n\t\t\t\t{message: 'The slug can only contain letters (a-z), numbers, underscores, and dashes.'}\n\t\t\t),\n\t\tidentifierPrefix: z.string().max(20).optional(),\n\n\t\tpluginVersion: z.string().default('1.0').optional(),\n\t\tpluginUrl: UrlOrEmpty.optional(),\n\t\tauthorName: z.string().max(100).optional(),\n\t\tauthorUrl: UrlOrEmpty.optional(),\n\t\trequiredWpVersion: z.string().max(30).default('4.7').optional(),\n\t\ttestedWpVersion: z.string().max(30).optional(),\n\t\twasEverConfirmed: z.boolean().default(false).optional(),\n\t});\n\n\ttype AdminThemeMetadata = z.infer;\n\n\tconst AdminThemeSettings = z.record(\n\t\t//Key type\n\t\tz.string().min(1),\n\t\t//Value type\n\t\tz.any()\n\t);\n\n\tclass AdminThemeImportReport {\n\t\tpublic totalSettings: number = 0;\n\t\tpublic importedSettings: number = 0;\n\t\tpublic invalidSettings: number = 0;\n\t\tpublic skippedSettings: number = 0;\n\t\tpublic differentImportedSettings: number = 0;\n\n\t\tpublic readonly pluginName: string;\n\n\t\tconstructor(\n\t\t\tpublic readonly fileName: string,\n\t\t\tpublic readonly metadata: AdminThemeMetadata\n\t\t) {\n\t\t\tthis.pluginName = metadata.pluginName || '(Unnamed)';\n\t\t}\n\t}\n\n\tinterface WithZodValidationResults extends ObservableValidationFields {\n\t\tameZodValidationError: KnockoutObservable;\n\t}\n\n\ttype ZodValidatedObservable = KnockoutComputed & WithZodValidationResults;\n\n\tfunction observableWithZodValidation>(\n\t\tvalue: z.output,\n\t\tschema: S\n\t): ZodValidatedObservable> {\n\t\tconst underlyingObservable = ko.observable(value);\n\n\t\tconst observable: ZodValidatedObservable = ko.pureComputed({\n\t\t\tread: underlyingObservable,\n\t\t\twrite: (newValue: T) => {\n\t\t\t\tconst validationResult = schema.safeParse(newValue);\n\t\t\t\tif (validationResult.success) {\n\t\t\t\t\tunderlyingObservable(validationResult.data);\n\t\t\t\t\tobservable.ameZodValidationError(null);\n\t\t\t\t\tobservable.ameValidationErrors([]);\n\t\t\t\t} else {\n\t\t\t\t\tobservable.ameZodValidationError(validationResult.error);\n\t\t\t\t\t//Convert Zod issues to ObservableValidationErrors.\n\t\t\t\t\tobservable.ameValidationErrors(validationResult.error.issues.map(issue => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcode: issue.code,\n\t\t\t\t\t\t\tmessage: issue.message\n\t\t\t\t\t\t} satisfies ObservableValidationError;\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t}) as ZodValidatedObservable;\n\n\t\tobservable.ameZodValidationError = ko.observable(null);\n\t\tobservable.ameValidationErrors = ko.observable([] as ObservableValidationError[]);\n\t\tobservable.ameIsValid = ko.pureComputed(() => {\n\t\t\tconst errors = observable.ameValidationErrors();\n\t\t\treturn !errors || errors.length === 0;\n\t\t});\n\n\t\treturn observable;\n\t}\n\n\tclass ObservableThemeMetadata {\n\t\tpublic readonly pluginName: ZodValidatedObservable;\n\t\tpublic readonly shortDescription: ZodValidatedObservable;\n\t\tpublic readonly pluginSlug: ZodValidatedObservable;\n\t\tpublic readonly identifierPrefix: ZodValidatedObservable;\n\t\tpublic readonly pluginVersion: ZodValidatedObservable;\n\t\tpublic readonly pluginUrl: ZodValidatedObservable;\n\t\tpublic readonly authorName: ZodValidatedObservable;\n\t\tpublic readonly authorUrl: ZodValidatedObservable;\n\t\tpublic readonly requiredWpVersion: ZodValidatedObservable;\n\t\tpublic readonly testedWpVersion: ZodValidatedObservable;\n\t\tpublic readonly wasEverConfirmed: ZodValidatedObservable;\n\n\t\tconstructor(metadata: AdminThemeMetadata) {\n\t\t\tthis.pluginName = observableWithZodValidation(\n\t\t\t\tmetadata.pluginName,\n\t\t\t\tAdminThemeMetadata.shape.pluginName\n\t\t\t);\n\t\t\tthis.shortDescription = observableWithZodValidation(\n\t\t\t\tmetadata.shortDescription,\n\t\t\t\tAdminThemeMetadata.shape.shortDescription\n\t\t\t);\n\n\t\t\tthis.pluginSlug = observableWithZodValidation(\n\t\t\t\tmetadata.pluginSlug ?? '',\n\t\t\t\tAdminThemeMetadata.shape.pluginSlug\n\t\t\t);\n\t\t\tthis.identifierPrefix = observableWithZodValidation(\n\t\t\t\tmetadata.identifierPrefix ?? '',\n\t\t\t\tAdminThemeMetadata.shape.identifierPrefix\n\t\t\t);\n\n\t\t\tthis.pluginVersion = observableWithZodValidation(\n\t\t\t\tmetadata.pluginVersion ?? '',\n\t\t\t\tAdminThemeMetadata.shape.pluginVersion\n\t\t\t);\n\t\t\tthis.pluginUrl = observableWithZodValidation(\n\t\t\t\tmetadata.pluginUrl ?? '',\n\t\t\t\tAdminThemeMetadata.shape.pluginUrl\n\t\t\t);\n\t\t\tthis.authorName = observableWithZodValidation(\n\t\t\t\tmetadata.authorName ?? '',\n\t\t\t\tAdminThemeMetadata.shape.authorName\n\t\t\t);\n\t\t\tthis.authorUrl = observableWithZodValidation(\n\t\t\t\tmetadata.authorUrl ?? '',\n\t\t\t\tAdminThemeMetadata.shape.authorUrl\n\t\t\t);\n\t\t\tthis.requiredWpVersion = observableWithZodValidation(\n\t\t\t\tmetadata.requiredWpVersion ?? '',\n\t\t\t\tAdminThemeMetadata.shape.requiredWpVersion\n\t\t\t);\n\t\t\tthis.testedWpVersion = observableWithZodValidation(\n\t\t\t\tmetadata.testedWpVersion ?? '',\n\t\t\t\tAdminThemeMetadata.shape.testedWpVersion\n\t\t\t);\n\n\t\t\tthis.wasEverConfirmed = observableWithZodValidation(\n\t\t\t\tmetadata.wasEverConfirmed ?? false,\n\t\t\t\tAdminThemeMetadata.shape.wasEverConfirmed\n\t\t\t);\n\t\t}\n\n\t\tpublic toObject(): AdminThemeMetadata {\n\t\t\treturn {\n\t\t\t\tpluginName: this.pluginName(),\n\t\t\t\tshortDescription: this.shortDescription(),\n\t\t\t\tpluginSlug: this.pluginSlug(),\n\t\t\t\tidentifierPrefix: this.identifierPrefix(),\n\t\t\t\tpluginVersion: this.pluginVersion(),\n\t\t\t\tpluginUrl: this.pluginUrl(),\n\t\t\t\tauthorName: this.authorName(),\n\t\t\t\tauthorUrl: this.authorUrl(),\n\t\t\t\trequiredWpVersion: this.requiredWpVersion(),\n\t\t\t\ttestedWpVersion: this.testedWpVersion(),\n\t\t\t\twasEverConfirmed: this.wasEverConfirmed()\n\t\t\t};\n\t\t}\n\n\t\tisValid(): boolean {\n\t\t\t//This seems really inelegant, but I can't think of a better way to do it.\n\t\t\treturn this.pluginName.ameIsValid()\n\t\t\t\t&& this.shortDescription.ameIsValid()\n\t\t\t\t&& this.pluginSlug.ameIsValid()\n\t\t\t\t&& this.identifierPrefix.ameIsValid()\n\t\t\t\t&& this.pluginVersion.ameIsValid()\n\t\t\t\t&& this.pluginUrl.ameIsValid()\n\t\t\t\t&& this.authorName.ameIsValid()\n\t\t\t\t&& this.authorUrl.ameIsValid()\n\t\t\t\t&& this.requiredWpVersion.ameIsValid()\n\t\t\t\t&& this.testedWpVersion.ameIsValid()\n\t\t\t\t&& this.wasEverConfirmed.ameIsValid();\n\t\t}\n\t}\n\n\tenum MetadataDialogMode {\n\t\tDownload,\n\t\tEdit\n\t}\n\n\tclass DownloadThemeDialog extends AmeBaseKnockoutDialog {\n\t\tpublic readonly meta: KnockoutObservable;\n\t\tpublic readonly areFieldsEditable: KnockoutComputed;\n\t\tpublic readonly isOperationInProgress: KnockoutObservable = ko.observable(false);\n\n\t\tpublic readonly mode: KnockoutObservable = ko.observable(MetadataDialogMode.Download);\n\n\t\tautoCancelButton: boolean = true;\n\t\tisConfirmButtonEnabled: KnockoutObservable;\n\t\treadonly confirmButtonLabel: KnockoutObservable;\n\n\t\tadvancedOptionsVisible: KnockoutObservable = ko.observable(false);\n\t\tadvancedOptionsToggleLabel: KnockoutComputed;\n\n\t\thelpVisible: KnockoutObservable = ko.observable(false);\n\t\thelpToggleLabel: KnockoutComputed;\n\t\thelpContainerVisible: KnockoutComputed;\n\n\t\tchangesetName: KnockoutObservable = ko.observable('');\n\t\tmetadataJson: KnockoutObservable = ko.observable('');\n\t\tdownloadCookieName: KnockoutObservable = ko.observable('');\n\n\t\tpublic readonly adminThemeTexts: Required;\n\n\t\tprivate cleanupCurrentDownload: () => void = () => {\n\t\t};\n\n\t\tconstructor(\n\t\t\tprivate readonly getChangesetName: () => string,\n\t\t\tprivate readonly savePendingChangesetData: () => JQueryPromise,\n\t\t\tprivate readonly metadataObservable: KnockoutObservable,\n\t\t\tcustomAdminThemeTexts: AdminThemeTexts\n\t\t) {\n\t\t\tsuper();\n\t\t\tthis.options.minWidth = 400;\n\n\t\t\tthis.adminThemeTexts = {\n\t\t\t\t...{\n\t\t\t\t\tgeneratorCreditPhrase: 'generated using the Admin Menu Editor Pro plugin.',\n\t\t\t\t\tstandalonePluginNote: 'The result is a standalone plugin that you can use without Admin Menu Editor Pro.',\n\t\t\t\t},\n\t\t\t\t...customAdminThemeTexts\n\t\t\t}\n\n\t\t\tlet initialMetadata = metadataObservable();\n\t\t\tif (initialMetadata === null) {\n\t\t\t\tinitialMetadata = this.getSampleMetadata();\n\t\t\t}\n\n\t\t\tthis.meta = ko.observable(new ObservableThemeMetadata(initialMetadata));\n\n\t\t\tthis.confirmButtonLabel = ko.computed(() => {\n\t\t\t\tif (this.mode() === MetadataDialogMode.Download) {\n\t\t\t\t\treturn 'Download Admin Theme';\n\t\t\t\t}\n\t\t\t\treturn 'OK';\n\t\t\t});\n\n\t\t\tthis.isConfirmButtonEnabled = ko.computed(() => {\n\t\t\t\tif (this.isOperationInProgress()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (getChangesetName() === '') {\n\t\t\t\t\t//To generate an admin theme, the changeset must have already been saved.\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn this.meta().isValid();\n\t\t\t});\n\n\t\t\tthis.areFieldsEditable = ko.computed(() => {\n\t\t\t\treturn !this.isOperationInProgress();\n\t\t\t});\n\n\t\t\tthis.advancedOptionsToggleLabel = ko.pureComputed((): string => {\n\t\t\t\treturn this.advancedOptionsVisible() ? 'Fewer options' : 'More options';\n\t\t\t});\n\t\t\tthis.helpToggleLabel = ko.pureComputed((): string => {\n\t\t\t\treturn this.helpVisible() ? 'Hide info' : 'How it works';\n\t\t\t});\n\n\t\t\t//Hide the help container in download mode.\n\t\t\tthis.helpContainerVisible = ko.pureComputed((): boolean => {\n\t\t\t\treturn this.mode() === MetadataDialogMode.Download;\n\t\t\t});\n\n\t\t\tthis.mode.subscribe((newMode: MetadataDialogMode) => {\n\t\t\t\tif (newMode === MetadataDialogMode.Download) {\n\t\t\t\t\tthis.title('Generate admin theme');\n\t\t\t\t} else if (newMode === MetadataDialogMode.Edit) {\n\t\t\t\t\tthis.title('Edit admin theme properties');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprivate getSampleMetadata() {\n\t\t\treturn AdminThemeMetadata.parse({\n\t\t\t\tpluginName: 'Custom Admin Theme',\n\t\t\t\tshortDescription: 'A custom admin theme ' + this.adminThemeTexts.generatorCreditPhrase,\n\t\t\t\tpluginVersion: '1.0',\n\t\t\t});\n\t\t}\n\n\t\tonOpen(event: JQueryEventObject, ui: any): void {\n\t\t\tlet latestMetadata = this.metadataObservable();\n\t\t\tif (latestMetadata === null) {\n\t\t\t\tlatestMetadata = this.getSampleMetadata();\n\t\t\t}\n\t\t\tthis.meta(new ObservableThemeMetadata(latestMetadata));\n\t\t}\n\n\t\ttoggleAdvancedOptions(): void {\n\t\t\tthis.advancedOptionsVisible(!this.advancedOptionsVisible());\n\t\t}\n\n\t\ttoggleHelp(): void {\n\t\t\tthis.helpVisible(!this.helpVisible());\n\t\t}\n\n\t\tonConfirm(event: JQueryEventObject) {\n\t\t\tif (!this.meta().isValid()) {\n\t\t\t\t//This should never happen because the confirm button is disabled\n\t\t\t\t//when the metadata is invalid.\n\t\t\t\talert('Error: The admin theme details are not valid.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst metadata = this.meta().toObject();\n\t\t\tmetadata.wasEverConfirmed = true;\n\t\t\tthis.metadataObservable(metadata);\n\n\t\t\tif (this.mode() === MetadataDialogMode.Edit) {\n\t\t\t\t//That's all we need to do in edit mode.\n\t\t\t\tthis.isOpen(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.triggerDownloadWithErrorReporting(metadata);\n\t\t}\n\n\t\tpublic triggerDownloadWithErrorReporting(metadata: AdminThemeMetadata) {\n\t\t\tif (this.isOperationInProgress()) {\n\t\t\t\talert('Error: Another operation is already in progress.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.triggerDownload(metadata)\n\t\t\t\t.fail((error: string) => {\n\t\t\t\t\tif (error !== '') {\n\t\t\t\t\t\talert('Error: ' + error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tprivate triggerDownload(metadata: AdminThemeMetadata): JQueryPromise {\n\t\t\tconst deferred = $.Deferred();\n\n\t\t\t//Sanity checks.\n\t\t\t//Download mode still requires a saved changeset.\n\t\t\tconst changesetName = this.getChangesetName();\n\t\t\tif (changesetName === '') {\n\t\t\t\treturn deferred.reject('The changeset has not been saved yet (name is empty).').promise();\n\t\t\t}\n\n\t\t\tthis.isOperationInProgress(true);\n\n\t\t\tconst $form = $('#ame-ac-theme-download-request-form');\n\t\t\tconst $frame = $('#ame-ac-theme-download-frame');\n\n\t\t\t//Cancel the operation and re-enable buttons if the request takes too long.\n\t\t\tlet isCancelledOrDone: boolean = false;\n\t\t\tconst requestTimeoutMs = 30000;\n\t\t\tconst requestStartTime = (new Date()).getTime();\n\t\t\tlet statusCheckInterval: ReturnType | null = null;\n\n\t\t\tconst cleanup = this.cleanupCurrentDownload = () => {\n\t\t\t\tisCancelledOrDone = true;\n\n\t\t\t\t$frame.off('load.ameAcDownloadAdminTheme');\n\t\t\t\tif (timeoutTimer) {\n\t\t\t\t\tclearTimeout(timeoutTimer);\n\t\t\t\t}\n\t\t\t\tif (statusCheckInterval) {\n\t\t\t\t\tclearInterval(statusCheckInterval);\n\t\t\t\t}\n\t\t\t\t$frame.attr('src', 'about:blank');\n\n\t\t\t\tthis.isOperationInProgress(false);\n\n\t\t\t\tif (this.cleanupCurrentDownload === cleanup) {\n\t\t\t\t\tthis.cleanupCurrentDownload = () => {\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst timeoutTimer = setTimeout(() => {\n\t\t\t\tdeferred.reject('The download operation timed out.');\n\t\t\t\tcleanup();\n\t\t\t}, requestTimeoutMs);\n\n\t\t\tthis.savePendingChangesetData().then(\n\t\t\t\t() => {\n\t\t\t\t\tif (isCancelledOrDone) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.changesetName(changesetName);\n\t\t\t\t\tthis.metadataJson(JSON.stringify(metadata));\n\n\t\t\t\t\t//The server will set a cookie with a unique name that can be used\n\t\t\t\t\t//to check if the download has been initiated. Note that the user\n\t\t\t\t\t//can still cancel the download.\n\t\t\t\t\tconst cookieName = ('ameAcFileDownload_'\n\t\t\t\t\t\t+ new Date().getTime()\n\t\t\t\t\t\t+ '_'\n\t\t\t\t\t\t+ Math.round(Math.random() * 10000) //No dots allowed in these cookie names.\n\t\t\t\t\t);\n\t\t\t\t\tthis.downloadCookieName(cookieName);\n\n\t\t\t\t\t//Clear the frame to prevent the old response from being read.\n\t\t\t\t\t$frame.attr('src', 'about:blank');\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$frame.contents().find('body').html('');\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t//Ignore but log cross-origin errors. These should not happen in practice.\n\t\t\t\t\t\tif (console && console.error) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tstatusCheckInterval = setInterval(() => {\n\t\t\t\t\t\tconst cookieValue = $.cookie(cookieName);\n\t\t\t\t\t\tif (cookieValue) {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\t$.removeCookie(cookieName);\n\n\t\t\t\t\t\t\t//Close the dialog when the download starts.\n\t\t\t\t\t\t\tthis.isOpen(false);\n\t\t\t\t\t\t\tdeferred.resolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((new Date()).getTime() - requestStartTime > requestTimeoutMs) {\n\t\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\t\tdeferred.reject('The download operation timed out.');\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1000);\n\n\t\t\t\t\t$frame.on('load.ameAcDownloadAdminTheme', () => {\n\t\t\t\t\t\t//Get the response from the frame. It should be JSON displayed as text.\n\t\t\t\t\t\tconst responseText = String($frame.contents().text()).trim();\n\t\t\t\t\t\tconst response = JSON.parse(responseText);\n\n\t\t\t\t\t\tcleanup();\n\n\t\t\t\t\t\tif ((response === null) || (typeof response !== 'object')) {\n\t\t\t\t\t\t\tdeferred.reject('Received an invalid response from the server.');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (!response.success) {\n\t\t\t\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t\t\t\tif (response.data.message) {\n\t\t\t\t\t\t\t\t\terrorMessage = response.data.message;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\terrorMessage = 'An unknown error occurred on the server.';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdeferred.reject(errorMessage);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t//This should never happen in practice.\n\t\t\t\t\t\t\t\tdeferred.reject('The server did not start the download correctly.');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t$form.trigger('submit');\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tif (isCancelledOrDone) {\n\t\t\t\t\t\tif (deferred.state() === 'pending') {\n\t\t\t\t\t\t\tdeferred.reject(''); //No error message; the user probably cancelled the operation.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcleanup();\n\t\t\t\t\tdeferred.reject('Could not save the changeset data before generating an admin theme.');\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn deferred.promise();\n\t\t}\n\n\t\tonClose(event: JQueryEventObject, ui: any) {\n\t\t\tthis.cleanupCurrentDownload();\n\t\t}\n\t}\n\n\t//endregion\n\n\tclass SectionNavigation {\n\t\tprivate sectionNavStack: KnockoutObservableArray = ko.observableArray([] as string[]);\n\t\tprivate $sectionList: JQuery;\n\n\t\tpublic readonly breadcrumbs: KnockoutObservable;\n\n\t\tconstructor() {\n\t\t\tthis.$sectionList = $('#ame-ac-container-collection');\n\n\t\t\tthis.$sectionList.on('click', '.ame-ac-section-link', (event) => {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (event.currentTarget === null) {\n\t\t\t\t\treturn; //Shouldn't happen in practice, but let's satisfy the type checker.\n\t\t\t\t}\n\n\t\t\t\tconst targetId = $(event.currentTarget).data('target-id');\n\t\t\t\tif (targetId) {\n\t\t\t\t\tthis.navigateToSection(targetId);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$sectionList.on('click', '.ame-ac-section-back-button', (event) => {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.navigateBack();\n\t\t\t});\n\n\t\t\tthis.breadcrumbs = ko.pureComputed(() => {\n\t\t\t\treturn this.sectionNavStack()\n\t\t\t\t\t.map((sectionId) => $('#' + sectionId))\n\t\t\t\t\t.filter(($section) => $section.length > 0)\n\t\t\t\t\t.map(($section) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: $section.find('.ame-ac-section-title .ame-ac-section-own-title')\n\t\t\t\t\t\t\t\t.first().text()\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tnavigateToSection(sectionElementId: string) {\n\t\t\tconst $section = $('#' + sectionElementId);\n\t\t\tif ($section.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($section.hasClass('ame-ac-current-section')) {\n\t\t\t\treturn; //Already on this section.\n\t\t\t}\n\n\t\t\t//If the requested section is in the navigation stack, navigate back\n\t\t\t//to it instead of putting more sections on the stack.\n\t\t\tconst stackIndex = this.sectionNavStack.indexOf(sectionElementId);\n\t\t\tif (stackIndex !== -1) {\n\t\t\t\twhile (this.sectionNavStack().length > stackIndex) {\n\t\t\t\t\tthis.navigateBack();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst $previousSection = this.$sectionList.find('.ame-ac-current-section');\n\t\t\tif ($previousSection.length > 0) {\n\t\t\t\tthis.expectTransition($previousSection, '.ame-ac-section');\n\t\t\t\t$previousSection\n\t\t\t\t\t.removeClass('ame-ac-current-section')\n\t\t\t\t\t.addClass('ame-ac-previous-section');\n\t\t\t\tthis.sectionNavStack.push($previousSection.attr('id'));\n\n\t\t\t\t$previousSection.trigger('adminMenuEditor:leaveSection');\n\t\t\t}\n\n\t\t\tthis.expectTransition($section, '.ame-ac-section');\n\t\t\t$section.addClass('ame-ac-current-section');\n\n\t\t\t$section.trigger('adminMenuEditor:enterSection');\n\t\t}\n\n\t\tnavigateBack() {\n\t\t\tif (this.sectionNavStack().length < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst $newCurrentSection = $('#' + this.sectionNavStack.pop());\n\t\t\tif ($newCurrentSection.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst $oldCurrentSection = this.$sectionList.find('.ame-ac-current-section');\n\t\t\tthis.expectTransition($oldCurrentSection, '.ame-ac-section');\n\t\t\t$oldCurrentSection.removeClass('ame-ac-current-section ame-ac-previous-section');\n\t\t\t$oldCurrentSection.trigger('adminMenuEditor:leaveSection');\n\n\t\t\tconst $oldPreviousSection = this.$sectionList.find('.ame-ac-previous-section');\n\t\t\t$oldPreviousSection.removeClass('ame-ac-previous-section');\n\n\t\t\t//Show the new current section.\n\t\t\tthis.expectTransition($newCurrentSection, '.ame-ac-section');\n\t\t\t$newCurrentSection.addClass('ame-ac-current-section');\n\t\t\t$newCurrentSection.trigger('adminMenuEditor:enterSection');\n\n\t\t\t//The next section in the stack becomes the previous section.\n\t\t\tif (this.sectionNavStack().length > 0) {\n\t\t\t\tthis.$sectionList.find('#' + this.sectionNavStack()[this.sectionNavStack().length - 1])\n\t\t\t\t\t.addClass('ame-ac-previous-section');\n\t\t\t}\n\t\t}\n\n\t\t//Add a special class to sections when they have an active CSS transition.\n\t\t//This is used to keep both sections visible while the previous section\n\t\t//slides out and the next section slides in.\n\t\texpectTransition($element: JQuery, requiredSelector: string) {\n\t\t\tif (prefersReducedMotion) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($element.data('ameHasTransitionEvents')) {\n\t\t\t\treturn; //Event handler(s) already added.\n\t\t\t}\n\n\t\t\tconst transitionEvents = 'transitionend transitioncancel';\n\n\t\t\t$element.addClass('ame-ac-transitioning');\n\n\t\t\tfunction transitionEndCallback(event: JQueryEventObject) {\n\t\t\t\t//Ignore events that bubble from child elements.\n\t\t\t\tif (!$(event.target).is(requiredSelector)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$element\n\t\t\t\t\t.off(transitionEvents, transitionEndCallback)\n\t\t\t\t\t.data('ameHasTransitionEvents', null)\n\t\t\t\t\t.removeClass('ame-ac-transitioning');\n\t\t\t}\n\n\t\t\t$element.data('ameHasTransitionEvents', true);\n\t\t\t$element.on(transitionEvents, transitionEndCallback);\n\t\t}\n\t}\n\n\texport interface NavigationBreadcrumb {\n\t\ttitle: string;\n\t}\n\n\t/**\n\t * Whether to ask for confirmation when the user tries to exit the customizer.\n\t */\n\tenum ExitPromptMode {\n\t\t/**\n\t\t * Ask if there are unsaved changes.\n\t\t */\n\t\tUnsavedChanges = 1,\n\n\t\t/**\n\t\t * Ask if the current changeset hasn't been published yet.\n\t\t */\n\t\tUnpublishedChanges = 2\n\t}\n\n\texport class AdminCustomizer extends AmeAdminCustomizerBase.AdminCustomizerBase implements CustomizableVmInterface {\n\t\tprivate readonly exitPromptMessage = 'Unsaved changes will be lost if you navigate away from this page.';\n\t\t//Admin themes generated by this plugin should be fairly small.\n\t\tprivate readonly maxImportFileSize = 500 * 1024;\n\n\t\tsectionNavigation: SectionNavigation;\n\t\tsettings: CustomizerSettingsCollection;\n\t\tpublic readonly interfaceStructure: InterfaceStructure;\n\n\t\tprivate readonly $previewFrame: JQuery;\n\n\t\t/**\n\t\t * Preview frame URL.\n\t\t */\n\t\tprivate currentPreviewUrl: string | null = null;\n\t\t/**\n\t\t * The default preview URL that can be used when the current frame URL cannot be detected.\n\t\t */\n\t\tprivate readonly initialPreviewUrl: string;\n\t\tprivate previewConnection: ReturnType | null = null;\n\t\tprivate readonly refreshPreviewNonce: string;\n\n\t\tprivate readonly $saveButton: JQuery;\n\n\t\tpublic readonly downloadThemeDialog: DownloadThemeDialog;\n\t\tprivate $extraActionMenu: JQuery | null = null;\n\t\tprivate $extraActionButton: JQuery | null = null;\n\n\t\tprivate $importFileInput: JQuery | null = null;\n\t\tprivate isImporting: KnockoutObservable = ko.observable(false);\n\t\tprivate lastImportReport: KnockoutObservable = ko.observable(null);\n\t\tprivate isImportReportVisible: KnockoutObservable = ko.observable(true);\n\n\t\tprivate isDiscardingChanges: KnockoutObservable = ko.observable(false);\n\n\t\tpublic readonly isGeneralOverlayVisible: KnockoutObservable;\n\n\t\tprivate readonly importActionEnabled: KnockoutComputed;\n\t\tprivate readonly discardChangesActionEnabled: KnockoutComputed;\n\t\tprivate readonly downloadThemeActionEnabled: KnockoutComputed;\n\n\t\tprivate readonly customBasePath: string | null;\n\t\tprivate readonly consoleLoggingEnabled: boolean;\n\t\tprivate readonly exitPromptMode: ExitPromptMode;\n\n\t\tconstructor(scriptData: ScriptData) {\n\t\t\tsuper(scriptData);\n\n\t\t\tthis.settings = new CustomizerSettingsCollection(\n\t\t\t\tscriptData.ajaxUrl,\n\t\t\t\tscriptData.saveChangesetNonce,\n\t\t\t\tscriptData.trashChangesetNonce,\n\t\t\t\tscriptData.changesetName,\n\t\t\t\tscriptData.changesetItemCount,\n\t\t\t\tscriptData.changesetStatus\n\t\t\t);\n\t\t\t_.forOwn(scriptData.settings, (data, id) => {\n\t\t\t\tif (typeof id === 'string') {\n\t\t\t\t\tthis.settings.add(unserializeSetting(id, data));\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (scriptData.changesetThemeMetadata) {\n\t\t\t\tthis.settings.addInitialThemeMetadata(scriptData.changesetThemeMetadata);\n\t\t\t}\n\n\t\t\tthis.customBasePath = scriptData.customBasePath || null;\n\t\t\tthis.consoleLoggingEnabled = scriptData.isWpDebugEnabled || false;\n\n\t\t\tif ((typeof scriptData.exitPromptMode === 'number') && (scriptData.exitPromptMode in ExitPromptMode)) {\n\t\t\t\tthis.exitPromptMode = scriptData.exitPromptMode;\n\t\t\t} else {\n\t\t\t\tthis.exitPromptMode = ExitPromptMode.UnpublishedChanges;\n\t\t\t}\n\n\t\t\tlet sectionIdCounter = 0;\n\n\t\t\tthis.interfaceStructure = unserializeUiElement(\n\t\t\t\tscriptData.interfaceStructure,\n\t\t\t\tthis.settings.get.bind(this.settings),\n\t\t\t\t(data: AnySpecificElementData) => {\n\t\t\t\t\tswitch (data.t) {\n\t\t\t\t\t\tcase 'section':\n\t\t\t\t\t\t\tdata.component = 'ame-ac-section';\n\t\t\t\t\t\t\t//All sections must have unique IDs for navigation to work.\n\t\t\t\t\t\t\tif (!data.id) {\n\t\t\t\t\t\t\t\tdata.id = 'autoID-' + (++sectionIdCounter);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'control-group':\n\t\t\t\t\t\t\tdata.component = 'ame-ac-control-group';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'control':\n\t\t\t\t\t\t\t//Tell controls that use number inputs to position the popup\n\t\t\t\t\t\t\t//slider within the customizer sidebar.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(data.component === 'ame-number-input')\n\t\t\t\t\t\t\t\t|| (data.component === 'ame-box-dimensions')\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tdata.params = data.params || {};\n\t\t\t\t\t\t\t\tdata.params.popupSliderWithin = '#ame-ac-sidebar-content';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//Replace regular separators with AC-specific ones.\n\t\t\t\t\t\t\tif (data.component === 'ame-horizontal-separator') {\n\t\t\t\t\t\t\t\tdata.component = 'ame-ac-separator';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t//Remove the reload parameter from the URL. It is only used to avoid\n\t\t\t//caching issues, and is not needed otherwise.\n\t\t\tconst currentUrl = new URL(window.location.href);\n\t\t\tif (currentUrl.searchParams.get('_ame-ac-reload') !== null) {\n\t\t\t\tcurrentUrl.searchParams.delete('_ame-ac-reload');\n\t\t\t\twindow.history.replaceState({}, '', currentUrl.href);\n\t\t\t}\n\n\t\t\t//Also remove the \"request new changeset\" parameter.\n\t\t\tif (currentUrl.searchParams.get('_ame-ac-new-changeset') !== null) {\n\t\t\t\tcurrentUrl.searchParams.delete('_ame-ac-new-changeset');\n\t\t\t\twindow.history.replaceState({}, '', currentUrl.href);\n\t\t\t}\n\n\t\t\tconst changesetPathTemplate: string | null = scriptData.changesetPathTemplate;\n\t\t\tconst changesetPlaceholder = '{changeset}';\n\n\t\t\tfunction addChangesetToUrl(currentUrl: string, changesetName: string): URL {\n\t\t\t\tconst url = new URL(currentUrl);\n\t\t\t\tif (changesetPathTemplate) {\n\t\t\t\t\turl.pathname = changesetPathTemplate.replace(changesetPlaceholder, changesetName);\n\t\t\t\t\t//With a custom path, the \"page\" parameter that points to the AC\n\t\t\t\t\t//admin page is not necessary and would be confusing.\n\t\t\t\t\turl.searchParams.delete('page');\n\t\t\t\t\t//When the changeset name is stored in the path, the \"ame-ac-changeset\"\n\t\t\t\t\t//parameter is no longer needed, and could be out of sync with the path.\n\t\t\t\t\turl.searchParams.delete('ame-ac-changeset');\n\t\t\t\t} else {\n\t\t\t\t\turl.searchParams.set('ame-ac-changeset', changesetName);\n\t\t\t\t}\n\t\t\t\treturn url;\n\t\t\t}\n\n\t\t\tfunction getChangesetFromUrl(url: string): string {\n\t\t\t\tconst parsedUrl = new URL(url);\n\t\t\t\tif (changesetPathTemplate) {\n\t\t\t\t\tfunction escapeRegExp(input: string): string {\n\t\t\t\t\t\treturn input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst placeholderStart = changesetPathTemplate.indexOf(changesetPlaceholder);\n\t\t\t\t\tconst placeholderEnd = placeholderStart + changesetPlaceholder.length;\n\n\t\t\t\t\tconst changesetPathTemplateRegex = new RegExp(\n\t\t\t\t\t\t'^' + escapeRegExp(changesetPathTemplate.slice(0, placeholderStart))\n\t\t\t\t\t\t+ '([^a-zA-Z0-9]+)'\n\t\t\t\t\t\t+ escapeRegExp(changesetPathTemplate.slice(placeholderEnd))\n\t\t\t\t\t);\n\n\t\t\t\t\tconst match = parsedUrl.pathname.match(changesetPathTemplateRegex);\n\t\t\t\t\treturn match ? match[1] : '';\n\t\t\t\t} else {\n\t\t\t\t\treturn parsedUrl.searchParams.get('ame-ac-changeset') ?? '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Add the changeset name to the URL (if not already present).\n\t\t\tif (getChangesetFromUrl(window.location.href) !== this.settings.changesetName()) {\n\t\t\t\tconst newUrl = addChangesetToUrl(window.location.href, this.settings.changesetName());\n\t\t\t\twindow.history.replaceState({}, '', newUrl.href);\n\t\t\t}\n\n\t\t\t//When the changeset name changes, also change the URL.\n\t\t\tthis.settings.changesetName.subscribe((changesetName) => {\n\t\t\t\tconst url = addChangesetToUrl(window.location.href, changesetName);\n\t\t\t\tif (scriptData.changesetPushStateEnabled) {\n\t\t\t\t\twindow.history.pushState({}, '', url.href);\n\t\t\t\t} else {\n\t\t\t\t\twindow.history.replaceState({}, '', url.href);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$saveButton = $('#ame-ac-apply-changes');\n\n\t\t\t//The save button should be enabled when:\n\t\t\t// - There are non-zero changes in the current changeset.\n\t\t\t// - All settings are valid.\n\t\t\t// - The changeset is not in the process of being published, deleted, etc.\n\t\t\t// - The contents of the changeset can be modified (e.g. not already published).\n\t\t\tconst isSaveButtonEnabled = ko.pureComputed(() => {\n\t\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\t\t\t\treturn (\n\t\t\t\t\tchangeset.isNonEmpty()\n\t\t\t\t\t&& changeset.canBeModified()\n\t\t\t\t\t&& !this.settings.isExclusiveOperationInProgress()\n\t\t\t\t\t&& !this.settings.hasValidationErrors()\n\t\t\t\t);\n\t\t\t});\n\t\t\t//Update button state when the customizer loads.\n\t\t\tthis.$saveButton.prop('disabled', !isSaveButtonEnabled());\n\t\t\t//And also on changes.\n\t\t\tisSaveButtonEnabled.subscribe((isEnabled) => {\n\t\t\t\tthis.$saveButton.prop('disabled', !isEnabled);\n\t\t\t\t//Change the text back to the default when the button is enabled.\n\t\t\t\tif (isEnabled) {\n\t\t\t\t\tthis.$saveButton.val(this.$saveButton.data('default-text') ?? 'Save Changes');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//Handle the \"Save Changes\" button.\n\t\t\tthis.$saveButton.on('click', () => {\n\t\t\t\t//Show the spinner.\n\t\t\t\tconst $spinner = $('#ame-ac-primary-actions .spinner');\n\t\t\t\t$spinner.css('visibility', 'visible').show();\n\n\t\t\t\tconst publishFailNoticeId = 'ame-ac-publish-failed-notice';\n\t\t\t\t//Remove the previous error notification, if any.\n\t\t\t\t$('#' + publishFailNoticeId).remove();\n\n\t\t\t\tconst promise = this.settings.publishChangeset();\n\n\t\t\t\tpromise.fail((error) => {\n\t\t\t\t\t//Show a dismissible error notification.\n\t\t\t\t\tlet message = 'An unexpected error occurred while saving changes.';\n\t\t\t\t\tif (typeof error === 'string') {\n\t\t\t\t\t\tmessage = error;\n\t\t\t\t\t} else if (error instanceof Error) {\n\t\t\t\t\t\tmessage = error.message;\n\t\t\t\t\t} else if (typeof error.responseJSON === 'object') {\n\t\t\t\t\t\tmessage = _.get(error.responseJSON, ['data', 'message'], message);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst $notice = $('
    ')\n\t\t\t\t\t\t.attr('id', publishFailNoticeId)\n\t\t\t\t\t\t.addClass('notice notice-error is-dismissible')\n\t\t\t\t\t\t.text(message);\n\n\t\t\t\t\t//WordPress won't automatically add the dismiss button to a dynamically\n\t\t\t\t\t//generated notice like this, so we have to do it.\n\t\t\t\t\t$notice.append(\n\t\t\t\t\t\t$('')\n\t\t\t\t\t\t\t.append('Dismiss this notice')\n\t\t\t\t\t\t\t.on('click', (event) => {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t$notice.remove(); //Not as fancy as WP does it.\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\t\tconst $container = $('#ame-ac-global-notification-area');\n\t\t\t\t\t$container.append($notice);\n\t\t\t\t})\n\n\t\t\t\tpromise.done(() => {\n\t\t\t\t\tthis.$saveButton.val(this.$saveButton.data('published-text') ?? 'Saved');\n\n\t\t\t\t\t//The preview could be stale. For example, the color scheme module\n\t\t\t\t\t//switches between \"actual\" and \"preview\" color schemes dynamically,\n\t\t\t\t\t//but the \"actual\" scheme could change after applying new settings.\n\t\t\t\t\t//Let's reload the preview frame to make sure it's up-to-date.\n\t\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t\t});\n\n\t\t\t\tpromise.always(() => {\n\t\t\t\t\t$spinner.css('visibility', 'hidden');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t//Prevent the user from interacting with settings while the changeset is being modified.\n\t\t\tthis.settings.isExclusiveOperationInProgress.subscribe((isInProgress) => {\n\t\t\t\t$('#ame-ac-sidebar-blocker-overlay').toggle(isInProgress);\n\t\t\t});\n\n\t\t\t//Show a general overlay with a progress spinner while something is happening.\n\t\t\tthis.isGeneralOverlayVisible = ko.pureComputed(() => {\n\t\t\t\treturn this.isImporting() || this.isDiscardingChanges();\n\t\t\t});\n\n\t\t\t//Initialize the \"download admin theme\" dialog.\n\t\t\tthis.downloadThemeDialog = new DownloadThemeDialog(\n\t\t\t\t() => this.settings.getCurrentChangeset().name(),\n\t\t\t\t() => this.settings.savePendingSettings(),\n\t\t\t\tthis.settings.adminThemeMetadata,\n\t\t\t\tscriptData\n\t\t\t);\n\n\t\t\t//Toggle available extra actions based on changeset status.\n\t\t\tthis.importActionEnabled = ko.pureComputed(() => {\n\t\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\t\t\t\treturn changeset && changeset.canBeModified()\n\t\t\t\t\t&& !this.settings.isExclusiveOperationInProgress();\n\t\t\t});\n\t\t\tthis.importActionEnabled.subscribe((isEnabled) => {\n\t\t\t\tif (this.$extraActionMenu) {\n\t\t\t\t\tthis.$extraActionMenu.find('.ame-ac-import-theme-action')\n\t\t\t\t\t\t.toggleClass('ui-state-disabled', !isEnabled);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.discardChangesActionEnabled = ko.pureComputed(() => {\n\t\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\t\t\t\treturn changeset && changeset.isNonEmpty() && changeset.canBeModified()\n\t\t\t\t\t&& !this.settings.isExclusiveOperationInProgress()\n\t\t\t});\n\t\t\tthis.discardChangesActionEnabled.subscribe((isEnabled) => {\n\t\t\t\tif (this.$extraActionMenu) {\n\t\t\t\t\tthis.$extraActionMenu.find('.ame-ac-discard-changes-action')\n\t\t\t\t\t\t.toggleClass('ui-state-disabled', !isEnabled);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.downloadThemeActionEnabled = ko.pureComputed(() => {\n\t\t\t\treturn (\n\t\t\t\t\t!this.settings.isExclusiveOperationInProgress()\n\t\t\t\t\t&& !this.downloadThemeDialog.isOperationInProgress()\n\t\t\t\t\t//The changeset must already be saved for the download to work,\n\t\t\t\t\t//which means it should have a name.\n\t\t\t\t\t&& (this.settings.getCurrentChangeset().name() !== '')\n\t\t\t\t\t//The changeset should probably be non-empty.\n\t\t\t\t\t&& this.settings.getCurrentChangeset().isNonEmpty()\n\t\t\t\t);\n\t\t\t});\n\t\t\tthis.downloadThemeActionEnabled.subscribe((isEnabled) => {\n\t\t\t\tif (this.$extraActionMenu) {\n\t\t\t\t\tthis.$extraActionMenu.find('.ame-ac-download-theme-action')\n\t\t\t\t\t\t.toggleClass('ui-state-disabled', !isEnabled);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.sectionNavigation = new SectionNavigation();\n\n\t\t\t//Set up the preview frame.\n\t\t\tthis.$previewFrame = $('iframe#ame-ac-preview');\n\n\t\t\tthis.initialPreviewUrl = scriptData.initialPreviewUrl;\n\t\t\tthis.refreshPreviewNonce = scriptData.refreshPreviewNonce;\n\n\t\t\tthis.$previewFrame.on('load', () => {\n\t\t\t\tthis.isFrameLoading = false;\n\n\t\t\t\t//The URL that was actually loaded might not match the one that\n\t\t\t\t//was requested (e.g. because there was a redirect).\n\t\t\t\tthis.currentPreviewUrl = null;\n\n\t\t\t\t//Close the previous postMessage connection.\n\t\t\t\tif (this.previewConnection) {\n\t\t\t\t\tthis.previewConnection.disconnect();\n\t\t\t\t\tthis.previewConnection = null;\n\t\t\t\t}\n\n\t\t\t\tconst frame = this.$previewFrame.get(0) as HTMLIFrameElement;\n\t\t\t\tif (!frame || !(frame instanceof HTMLIFrameElement)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Try to get the preview URL from the iframe.\n\t\t\t\ttry {\n\t\t\t\t\tconst url = frame.contentWindow?.location.href;\n\t\t\t\t\tif (url) {\n\t\t\t\t\t\tthis.currentPreviewUrl = url;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t//We can't get the URL directly, probably because it's a cross-origin iframe.\n\t\t\t\t}\n\n\t\t\t\tthis.previewConnection = AmeAcCommunicator.connectToChild(\n\t\t\t\t\tframe,\n\t\t\t\t\t{\n\t\t\t\t\t\t'setPreviewUrl': (url: string) => {\n\t\t\t\t\t\t\tif (this.isPreviewableUrl(url)) {\n\t\t\t\t\t\t\t\tthis.previewUrl = url;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'notifyPreviewUrlChanged': (url: string) => {\n\t\t\t\t\t\t\tthis.currentPreviewUrl = url;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tthis.allowedCommOrigins,\n\t\t\t\t\tscriptData.isWpDebugEnabled\n\t\t\t\t);\n\n\t\t\t\tthis.previewConnection.promise.then((connection) => {\n\t\t\t\t\tif (typeof connection === 'undefined') {\n\t\t\t\t\t\t//This should never happen, but the type checker doesn't know that.\n\t\t\t\t\t\tthrow new Error('Unexpected error: Connection apparently succeeded, but the connection object is undefined');\n\t\t\t\t\t}\n\n\t\t\t\t\tconnection.execute('getCurrentUrl').then((url) => {\n\t\t\t\t\t\tif (url && (typeof url === 'string')) {\n\t\t\t\t\t\t\tthis.currentPreviewUrl = url;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t//Notify other scripts that the preview frame is loaded and\n\t\t\t\t\t//the postMessage connection is ready for use.\n\t\t\t\t\t$('body').trigger('adminMenuEditor:acPreviewConnectionReady');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.previewUrl = this.initialPreviewUrl;\n\n\t\t\t//Notify other scripts. This lets them register custom controls and so on.\n\t\t\t$('#ame-ac-admin-customizer').trigger('adminMenuEditor:acRegister', [this]);\n\n\t\t\tconst throttledReloadPreview = _.throttle(\n\t\t\t\t() => {\n\t\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t\t},\n\t\t\t\t1000, //The reload method does its own throttling, so we use a low wait time here.\n\t\t\t\t{leading: true, trailing: true}\n\t\t\t);\n\n\t\t\t//Refresh the preview when any setting changes.\n\t\t\tthis.settings.addChangeListener((setting, newValue) => {\n\t\t\t\tif (\n\t\t\t\t\tsetting.supportsPostMessage\n\t\t\t\t\t&& this.previewConnection\n\t\t\t\t\t&& this.previewConnection.isConnected\n\t\t\t\t) {\n\t\t\t\t\tthis.previewConnection.execute('previewSetting', setting.id, newValue);\n\t\t\t\t} else {\n\t\t\t\t\tlet reason: string = 'Unknown';\n\t\t\t\t\tif (!setting.supportsPostMessage) {\n\t\t\t\t\t\treason = 'Setting \"' + setting.id + '\" does not support postMessage';\n\t\t\t\t\t} else if (!this.previewConnection) {\n\t\t\t\t\t\treason = 'No preview connection';\n\t\t\t\t\t} else if (!this.previewConnection.isConnected) {\n\t\t\t\t\t\treason = 'Preview connection is not connected';\n\t\t\t\t\t}\n\t\t\t\t\tthis.log('Reloading the preview frame because: ' + reason);\n\n\t\t\t\t\tthrottledReloadPreview();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst registerUnloadPrompt = () => {\n\t\t\t\t//Ask for confirmation when the user tries to leave the page and the changeset\n\t\t\t\t//has unpublished/unsaved changes.\n\t\t\t\t$(window).on('beforeunload.ame-ac-exit-confirm', (event) => {\n\t\t\t\t\tif (this.isExitPromptNeeded()) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t//Note: The confirmation prompt will only be displayed if the user\n\t\t\t\t\t\t//has interacted with the page (e.g. clicked something).\n\n\t\t\t\t\t\t//As of this writing, MDN says that some browsers still don't support triggering\n\t\t\t\t\t\t//an \"unsaved changes\" prompt with event.preventDefault(). You need to set\n\t\t\t\t\t\t//event.returnValue to a string or return a string from the event handler.\n\t\t\t\t\t\t//Modern browsers will ignore the content and display their own generic message.\n\t\t\t\t\t\treturn this.exitPromptMessage;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t/*\n\t\t\t Allegedly, registering a beforeunload handler can cause the browser to\n\t\t\t disable some optimizations, so let's only do it when the user changes\n\t\t\t something or the changeset already contains some changes.\n\t\t\t */\n\t\t\tif (this.settings.getCurrentChangeset().isNonEmpty()) {\n\t\t\t\tregisterUnloadPrompt();\n\t\t\t} else {\n\t\t\t\tconst listenerId = this.settings.addChangeListener(() => {\n\t\t\t\t\t//Remove the listener after it has been triggered once.\n\t\t\t\t\tthis.settings.removeChangeListener(listenerId);\n\t\t\t\t\tregisterUnloadPrompt();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tgetSettingObservable(settingId: string, defaultValue: any): KnockoutObservable {\n\t\t\t//Let's just implement this temporarily while working on refactoring this\n\t\t\t//stuff to use KO components.\n\t\t\treturn this.settings\n\t\t\t\t.get(settingId)\n\t\t\t\t.map(setting => setting.value)\n\t\t\t\t.getOrElse(ko.observable(defaultValue));\n\t\t}\n\n\t\tgetAllSettingValues(): Record {\n\t\t\tthrow new Error('Method not implemented.');\n\t\t}\n\n\t\tget previewUrl(): string | null {\n\t\t\treturn this.currentPreviewUrl;\n\t\t}\n\n\t\tset previewUrl(url: string | null) {\n\t\t\tif (url === this.currentPreviewUrl) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//The URL starts out as null, but it cannot be set to NULL again after\n\t\t\t//the preview frame has been loaded.\n\t\t\tif (url === null) {\n\t\t\t\tthrow new Error('Cannot directly set preview URL to null');\n\t\t\t}\n\n\t\t\tif (this.isPreviewableUrl(url)) {\n\t\t\t\tthis.navigatePreviewFrame(url);\n\t\t\t}\n\t\t}\n\n\t\tprivate navigatePreviewFrame(url: string | null = null, forceReload: boolean = false) {\n\t\t\tconst oldUrl = this.previewUrl;\n\t\t\tif (url === null) {\n\t\t\t\turl = oldUrl ?? this.initialPreviewUrl;\n\t\t\t}\n\n\t\t\tconst isSameUrl = (oldUrl === url);\n\t\t\tif (isSameUrl && !forceReload) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//If there are any unsaved changes, let's include them in the preview by simulating\n\t\t\t//a form submission and sending the changes as form data. The server-side component\n\t\t\t//will merge these changes with existing changeset data.\n\t\t\tconst unsavedChanges = this.settings.unsavedChanges;\n\t\t\tconst simulateFormSubmission = !_.isEmpty(unsavedChanges);\n\n\t\t\tconst parsedUrl = new URL(url);\n\n\t\t\t//If we're not using form submission, add a special parameter\n\t\t\t//to the URL to force a refresh.\n\t\t\tconst refreshParam = '_ame-ac-refresh-trigger';\n\t\t\tif (isSameUrl && !simulateFormSubmission) {\n\t\t\t\tparsedUrl.searchParams.set(refreshParam, Date.now() + '_' + Math.random());\n\t\t\t} else {\n\t\t\t\t//Otherwise, remove the parameter just to be safe.\n\t\t\t\tparsedUrl.searchParams.delete(refreshParam);\n\t\t\t}\n\n\t\t\t//Ensure that the changeset used in the preview matches the current\n\t\t\t//changeset and preview is enabled. This is just a precaution. Normally,\n\t\t\t//the preview script automatically changes link URLs.\n\t\t\tlet changesetName = this.settings.changesetName();\n\t\t\tif (changesetName === '') {\n\t\t\t\t//Use a special value if the changeset hasn't been saved yet.\n\t\t\t\tchangesetName = TemporaryChangesetName;\n\t\t\t}\n\t\t\tparsedUrl.searchParams.set('ame-ac-changeset', changesetName);\n\t\t\tparsedUrl.searchParams.set('ame-ac-preview', '1');\n\n\t\t\tthis.hasPendingPreviewReload = false; //Reloading now, so no longer pending.\n\t\t\tthis.isFrameLoading = true;\n\n\t\t\t//console.info('navigatePreviewFrame: Navigating to ' + parsedUrl.href);\n\t\t\tif (simulateFormSubmission) {\n\t\t\t\tconst formData = {\n\t\t\t\t\taction: 'ws_ame_ac_refresh_preview_frame',\n\t\t\t\t\t\"ame-ac-changeset\": changesetName,\n\t\t\t\t\tmodified: JSON.stringify(unsavedChanges),\n\t\t\t\t\tnonce: this.refreshPreviewNonce\n\t\t\t\t}\n\n\t\t\t\tconst $form = $('')\n\t\t\t\t\t.attr('method', 'post')\n\t\t\t\t\t.attr('action', parsedUrl.href)\n\t\t\t\t\t.attr('target', 'ame-ac-preview-frame')\n\t\t\t\t\t.appendTo('body');\n\n\t\t\t\tlet key: keyof typeof formData;\n\t\t\t\tfor (key in formData) {\n\t\t\t\t\tconst value = formData[key];\n\t\t\t\t\t$('')\n\t\t\t\t\t\t.attr('type', 'hidden')\n\t\t\t\t\t\t.attr('name', key)\n\t\t\t\t\t\t.val(value)\n\t\t\t\t\t\t.appendTo($form);\n\t\t\t\t}\n\n\t\t\t\tthis.currentPreviewUrl = parsedUrl.href;\n\t\t\t\t$form.trigger('submit');\n\t\t\t\t$form.remove();\n\t\t\t} else {\n\t\t\t\tthis.currentPreviewUrl = parsedUrl.href;\n\t\t\t\tthis.$previewFrame.attr('src', this.currentPreviewUrl);\n\t\t\t}\n\t\t}\n\n\t\tprivate _isFrameLoading: boolean = false;\n\t\tprivate frameLoadingTimeoutId: number | null = null;\n\t\tprivate lastPreviewLoadTimestamp: Date = new Date(0);\n\n\t\tprivate reloadWaitTimeoutId: number | null = null;\n\t\tprivate hasPendingPreviewReload: boolean = false;\n\n\t\tprivate set isFrameLoading(isLoading: boolean) {\n\t\t\tconst wasLoadingBefore = this._isFrameLoading;\n\t\t\tif (!isLoading && (isLoading === wasLoadingBefore)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//In some circumstances, we may start to load a new URL before\n\t\t\t//the previous one has finished loading. This is valid and should\n\t\t\t//reset the load timeout.\n\n\t\t\t$('#ame-ac-preview-refresh-indicator').toggleClass('ame-ac-show-indicator', isLoading);\n\t\t\tif (this.frameLoadingTimeoutId) {\n\t\t\t\tclearTimeout(this.frameLoadingTimeoutId);\n\t\t\t\tthis.frameLoadingTimeoutId = null;\n\t\t\t}\n\n\t\t\tif (isLoading) {\n\t\t\t\t//As a precaution, we'll assume that if the frame doesn't load in a reasonable\n\t\t\t\t//time, it will never finish loading.\n\t\t\t\tthis.frameLoadingTimeoutId = window.setTimeout(() => {\n\t\t\t\t\tif (this.isFrameLoading) {\n\t\t\t\t\t\tthis.isFrameLoading = false;\n\t\t\t\t\t}\n\t\t\t\t}, 20000);\n\t\t\t}\n\t\t\tthis._isFrameLoading = isLoading;\n\n\t\t\tif (wasLoadingBefore && !isLoading) {\n\t\t\t\tthis.lastPreviewLoadTimestamp = new Date();\n\t\t\t}\n\n\t\t\t//Once the frame is loaded, trigger any pending reload.\n\t\t\tif (!isLoading && this.hasPendingPreviewReload) {\n\t\t\t\tthis.hasPendingPreviewReload = false;\n\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t}\n\t\t}\n\n\t\tpublic get isFrameLoading(): boolean {\n\t\t\treturn this._isFrameLoading;\n\t\t}\n\n\t\tprivate queuePreviewFrameReload() {\n\t\t\tif (this.reloadWaitTimeoutId) {\n\t\t\t\treturn; //The frame will reload soon.\n\t\t\t}\n\n\t\t\tif (this.isFrameLoading) {\n\t\t\t\tthis.hasPendingPreviewReload = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//To avoid stressing the server, wait at least X ms after the last\n\t\t\t//load completes before reloading the frame.\n\t\t\tconst reloadWaitTime = 2000;\n\t\t\tconst now = new Date();\n\t\t\tconst timeSinceLastLoad = now.getTime() - this.lastPreviewLoadTimestamp.getTime();\n\t\t\tif (timeSinceLastLoad < reloadWaitTime) {\n\t\t\t\tthis.reloadWaitTimeoutId = window.setTimeout(() => {\n\t\t\t\t\tthis.reloadWaitTimeoutId = null;\n\t\t\t\t\tthis.queuePreviewFrameReload();\n\t\t\t\t}, reloadWaitTime - timeSinceLastLoad);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Actually reload the frame.\n\t\t\tthis.navigatePreviewFrame(null, true);\n\t\t}\n\n\t\tonBindingsApplied(rootElement: HTMLElement) {\n\t\t\t//Navigate to the root section. In the current implementation this can't happen\n\t\t\t//until bindings have been applied, so it's not part of the constructor.\n\t\t\tthis.navigateToRootSection();\n\n\t\t\t//Initialize the action menu.\n\t\t\tthis.$extraActionButton = jQuery('#ame-ac-extra-actions-trigger', rootElement);\n\t\t\tthis.$extraActionMenu = jQuery('#ame-ac-extra-actions-menu', rootElement).menu();\n\n\t\t\t//Update menu states.\n\t\t\tthis.importActionEnabled.notifySubscribers(this.importActionEnabled());\n\t\t\tthis.discardChangesActionEnabled.notifySubscribers(this.discardChangesActionEnabled());\n\t\t\tthis.downloadThemeActionEnabled.notifySubscribers(this.downloadThemeActionEnabled());\n\n\t\t\t//Get the file picker.\n\t\t\tthis.$importFileInput = jQuery('#ame-ac-import-admin-theme-file', rootElement);\n\t\t}\n\n\t\tnavigateToRootSection() {\n\t\t\tthis.sectionNavigation.navigateToSection('ame-ac-section-structure-root');\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in at least one add-on.\n\t\t/**\n\t\t * Execute an RPC method in the preview frame.\n\t\t *\n\t\t * @param {string} methodName\n\t\t * @param {*} args\n\t\t */\n\t\texecuteRpcMethod(methodName: string, ...args: any): JQueryPromise {\n\t\t\tif (!this.previewConnection || !this.previewConnection.isConnected) {\n\t\t\t\treturn $.Deferred().reject('The preview frame is not connected.').promise();\n\t\t\t}\n\t\t\treturn this.previewConnection.execute(methodName, ...args);\n\t\t}\n\n\t\tconfirmExit() {\n\t\t\tif (this.isExitPromptNeeded()) {\n\t\t\t\tif (window.confirm(this.exitPromptMessage)) {\n\t\t\t\t\t//Remove the confirmation prompt that appears when leaving the page.\n\t\t\t\t\t//We don't want to show two prompts.\n\t\t\t\t\t$(window).off('beforeunload.ame-ac-exit-confirm');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate isExitPromptNeeded(): boolean {\n\t\t\tconst changeset = this.settings.getCurrentChangeset();\n\n\t\t\t//No need to save anything if the changeset is empty.\n\t\t\tif (!changeset.isNonEmpty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tswitch (this.exitPromptMode) {\n\t\t\t\tcase ExitPromptMode.UnpublishedChanges:\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!changeset.wasPublished()\n\t\t\t\t\t\t&& (changeset.status() !== 'trash') //Can't publish a trashed changeset.\n\t\t\t\t\t);\n\t\t\t\tcase ExitPromptMode.UnsavedChanges:\n\t\t\t\t\tconst unsavedChanges = this.settings.unsavedChanges;\n\t\t\t\t\treturn !_.isEmpty(unsavedChanges);\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in the Knockout template.\n\t\ttoggleExtraActionMenu() {\n\t\t\tif (!this.$extraActionMenu) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$extraActionMenu.toggle();\n\n\t\t\tif (this.$extraActionMenu.is(':visible')) {\n\t\t\t\t//Position the menu below the button.\n\t\t\t\tconst $button = $('#ame-ac-extra-actions-trigger');\n\t\t\t\tthis.$extraActionMenu.position({\n\t\t\t\t\tmy: 'right top',\n\t\t\t\t\tat: 'right bottom',\n\t\t\t\t\tof: $button,\n\t\t\t\t\tcollision: 'flipfit'\n\t\t\t\t});\n\n\t\t\t\t//Hide the menu when the user clicks outside the menu or the button.\n\t\t\t\t$(document).on('mousedown.ameAcExtraMenuHide', this.handleClickOutsideActionMenu.bind(this));\n\t\t\t} else {\n\t\t\t\t//Remove the click listener if it's still active.\n\t\t\t\t$(document).off('mousedown.ameAcExtraMenuHide');\n\t\t\t}\n\t\t}\n\n\t\thandleClickOutsideActionMenu(event: JQueryEventObject) {\n\t\t\tif (\n\t\t\t\t!this.$extraActionMenu\n\t\t\t\t|| !this.$extraActionMenu.is(':visible')\n\t\t\t\t|| !this.$extraActionButton\n\t\t\t) {\n\t\t\t\t//The event listener should not be active if the menu is not visible.\n\t\t\t\t$(document).off('mousedown.ameAcExtraMenuHide');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst menuElement = this.$extraActionMenu.get(0);\n\t\t\tconst buttonElement = this.$extraActionButton.get(0);\n\t\t\tconst isClickOutsideMenu = !menuElement.contains(event.target);\n\t\t\tconst isClickOutsideButton = !buttonElement.contains(event.target);\n\n\t\t\tif (isClickOutsideMenu && isClickOutsideButton) {\n\t\t\t\tthis.hideExtraActionMenu();\n\t\t\t}\n\t\t}\n\n\t\tprivate hideExtraActionMenu() {\n\t\t\tif (!this.$extraActionMenu) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$extraActionMenu.hide();\n\t\t\t//Stop listening for clicks outside the menu.\n\t\t\t$(document).off('mousedown.ameAcExtraMenuHide');\n\t\t}\n\n\t\tprivate openMetadataDialog(mode: MetadataDialogMode) {\n\t\t\tthis.downloadThemeDialog.mode(mode);\n\t\t\tthis.downloadThemeDialog.isOpen(true);\n\t\t\tthis.isImportReportVisible(false);\n\t\t\tthis.hideExtraActionMenu();\n\t\t}\n\n\t\tactionOpenDownloadDialog() {\n\t\t\tif (!this.downloadThemeActionEnabled()) {\n\t\t\t\talert('Currently disabled because there are no changes to download.');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.openMetadataDialog(MetadataDialogMode.Download);\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in another plugin.\n\t\tactionEditOrDownloadTheme() {\n\t\t\tif (!this.downloadThemeActionEnabled()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//If the user hasn't confirmed the theme metadata yet, show the dialog.\n\t\t\tconst metadata = this.settings.adminThemeMetadata();\n\t\t\tif ((metadata === null) || !metadata.wasEverConfirmed) {\n\t\t\t\tthis.openMetadataDialog(MetadataDialogMode.Download);\n\t\t\t} else {\n\t\t\t\tthis.downloadThemeDialog.triggerDownloadWithErrorReporting(metadata);\n\t\t\t}\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in another plugin.\n\t\tactionOpenMetadataDialog() {\n\t\t\tthis.openMetadataDialog(MetadataDialogMode.Edit);\n\t\t}\n\n\t\tactionOpenImportDialog() {\n\t\t\tif (!this.importActionEnabled()) {\n\t\t\t\t//Can't import if there is no changeset or the changeset can't be edited.\n\t\t\t\t//The menu item should be disabled in this case, but we'll check anyway.\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.hideExtraActionMenu();\n\n\t\t\t//Allow the default action to proceed, which will open the file picker.\n\t\t\treturn true;\n\t\t}\n\n\t\tactionDiscardChanges() {\n\t\t\tif (!this.discardChangesActionEnabled()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.hideExtraActionMenu();\n\n\t\t\tif (this.settings.isExclusiveOperationInProgress()) {\n\t\t\t\talert('Another operation is in progress. Please wait for it to complete before discarding changes.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!confirm('Are you sure you want to discard your unsaved changes?')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isImportReportVisible(false);\n\t\t\tthis.isDiscardingChanges(true);\n\n\t\t\tthis.settings.trashChangeset()\n\t\t\t\t.then(() => {\n\t\t\t\t\t//Reload the customizer with a new changeset.\n\t\t\t\t\tconst url = new URL(window.location.href);\n\t\t\t\t\tif (this.customBasePath) {\n\t\t\t\t\t\turl.pathname = this.customBasePath;\n\t\t\t\t\t\turl.search = '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//To get the customizer's base URL, get the current URL\n\t\t\t\t\t\t//and remove all query parameters except \"page\".\n\t\t\t\t\t\tconst page = url.searchParams.get('page');\n\t\t\t\t\t\turl.search = '';\n\t\t\t\t\t\turl.searchParams.set('page', page || 'ame-admin-customizer');\n\t\t\t\t\t}\n\t\t\t\t\t//Notify the customizer that we definitely want a new changeset;\n\t\t\t\t\t//don't try to load a draft.\n\t\t\t\t\turl.searchParams.set('_ame-ac-new-changeset', '1');\n\n\t\t\t\t\t//Don't need the hash.\n\t\t\t\t\turl.hash = '';\n\n\t\t\t\t\t//Add a random parameter to force a reload.\n\t\t\t\t\turl.searchParams.set('_ame-ac-reload', Math.random().toString(36).substring(7));\n\n\t\t\t\t\t//Navigate to the new URL.\n\t\t\t\t\twindow.location.href = url.toString();\n\n\t\t\t\t\t//Note that the isDiscardingChanges flag is not reset here,\n\t\t\t\t\t//so the progress overlay will stay visible until the page reloads.\n\t\t\t\t})\n\t\t\t\t.fail((requestObject) => {\n\t\t\t\t\tlet message: string = requestObject.statusText || 'Unknown error.';\n\n\t\t\t\t\tif (typeof requestObject.responseJSON === 'object') {\n\t\t\t\t\t\tconst customMessage = _.get(requestObject.responseJSON, ['data', 'message']);\n\t\t\t\t\t\tif (typeof customMessage === 'string') {\n\t\t\t\t\t\t\tmessage = customMessage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\talert('Error: ' + message);\n\t\t\t\t\tthis.isDiscardingChanges(false);\n\t\t\t\t});\n\t\t}\n\n\t\thandleImportFileSelection() {\n\t\t\tif (!this.$importFileInput) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst fileInput = this.$importFileInput.get(0) as HTMLInputElement;\n\t\t\tif (!fileInput || !fileInput.files || (fileInput.files.length < 1)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Get the first file. Normally, there should only be one.\n\t\t\tconst selectedFile = fileInput.files.item(0);\n\t\t\tif (!selectedFile) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Limit the file size.\n\t\t\tif (selectedFile.size > this.maxImportFileSize) {\n\t\t\t\talert(\n\t\t\t\t\t'Error: The selected file is too large. The maximum file size is '\n\t\t\t\t\t+ Math.round(this.maxImportFileSize / 1024) + ' KiB'\n\t\t\t\t);\n\t\t\t\t//Clear the file input.\n\t\t\t\tthis.$importFileInput.val('');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isImporting(true);\n\t\t\tthis.lastImportReport(null);\n\n\t\t\tJSZip.loadAsync(selectedFile).then(\n\t\t\t\t(zip) => {\n\t\t\t\t\tconst metadataFileRegex = /^([\\\\/]?[a-zA-Z0-9_-]+[\\\\/])metadata\\.json$/;\n\t\t\t\t\tconst foundMetadataFiles = zip.file(metadataFileRegex);\n\t\t\t\t\tif (!foundMetadataFiles || (foundMetadataFiles.length < 1)) {\n\t\t\t\t\t\tthrow new Error('The selected file is not an admin theme generated by this tool.');\n\t\t\t\t\t}\n\t\t\t\t\tconst metadataFile = foundMetadataFiles[0];\n\n\t\t\t\t\t//Get the directory name and separator from the metadata file path.\n\t\t\t\t\t//The prefix will usually be something like \"admin-theme-slug/\".\n\t\t\t\t\tconst matches = metadataFileRegex.exec(metadataFile.name);\n\t\t\t\t\tlet directoryPrefix: string;\n\t\t\t\t\tif (!matches || (matches.length < 2)) {\n\t\t\t\t\t\tthrow new Error('The directory structure of this ZIP file is not recognized.');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdirectoryPrefix = matches[1];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst settingsFile = zip.file(directoryPrefix + 'settings.json');\n\t\t\t\t\tif (!settingsFile) {\n\t\t\t\t\t\tthrow new Error('The selected ZIP file is missing a settings.json file.');\n\t\t\t\t\t}\n\n\t\t\t\t\t//Read both files.\n\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\tmetadataFile.async('string'),\n\t\t\t\t\t\tsettingsFile.async('string')\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tconst errorMessage = error.message || error;\n\t\t\t\t\tthrow new Error('Error reading \"' + selectedFile.name + '\": ' + errorMessage);\n\t\t\t\t}\n\t\t\t).then((fileContents) => {\n\t\t\t\tif (!fileContents) {\n\t\t\t\t\tthrow new Error('Failed to read settings and metadata from the ZIP file.');\n\t\t\t\t}\n\n\t\t\t\tconst metadata = this.parseImportedAdminThemeFile(\n\t\t\t\t\tfileContents[0],\n\t\t\t\t\t'metadata.json',\n\t\t\t\t\tAdminThemeMetadata\n\t\t\t\t);\n\t\t\t\tconst settings = this.parseImportedAdminThemeFile(\n\t\t\t\t\tfileContents[1],\n\t\t\t\t\t'settings.json',\n\t\t\t\t\tAdminThemeSettings\n\t\t\t\t);\n\t\t\t\tconst report = new AdminThemeImportReport(selectedFile.name, metadata);\n\n\t\t\t\t//Import metadata.\n\t\t\t\tthis.downloadThemeDialog.meta(new ObservableThemeMetadata(metadata));\n\n\t\t\t\t//Import settings.\n\t\t\t\tfor (const [settingId, value] of Object.entries(settings)) {\n\t\t\t\t\treport.totalSettings++;\n\n\t\t\t\t\tconst foundSetting = this.settings.get(settingId);\n\t\t\t\t\tfoundSetting.forEach((setting) => {\n\t\t\t\t\t\tconst oldValue = setting.value();\n\t\t\t\t\t\tconst errors = setting.tryUpdate(value);\n\t\t\t\t\t\tif (errors && errors.length) {\n\t\t\t\t\t\t\treport.invalidSettings++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treport.importedSettings++;\n\t\t\t\t\t\t\tif (oldValue != value) {\n\t\t\t\t\t\t\t\treport.differentImportedSettings++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (foundSetting.isEmpty()) {\n\t\t\t\t\t\treport.skippedSettings++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.lastImportReport(report);\n\t\t\t\tthis.isImportReportVisible(true);\n\n\t\t\t}).catch((error) => {\n\t\t\t\t//Error handling: Show the error message to the user.\n\t\t\t\tlet errorMessage: string;\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = String(error);\n\t\t\t\t}\n\t\t\t\talert('Error: ' + errorMessage);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.isImporting(false);\n\t\t\t\tthis.$importFileInput?.val('');\n\t\t\t});\n\t\t}\n\n\t\tprivate parseImportedAdminThemeFile(\n\t\t\tcontent: string,\n\t\t\tname: string,\n\t\t\tschema: T\n\t\t): ReturnType {\n\t\t\ttry {\n\t\t\t\tconst parsedJson = JSON.parse(content);\n\t\t\t\treturn schema.parse(parsedJson);\n\t\t\t} catch (error) {\n\t\t\t\tlet errorMessage: string;\n\t\t\t\tif (error instanceof ZodError) {\n\t\t\t\t\t//Convert issues to a newline-separated string.\n\t\t\t\t\terrorMessage = error.issues.map((issue) => {\n\t\t\t\t\t\treturn issue.path.join('.') + ': ' + issue.message;\n\t\t\t\t\t}).join('\\n');\n\t\t\t\t} else if (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = String(error);\n\t\t\t\t}\n\t\t\t\t//Add the file name to the error message.\n\t\t\t\tthrow new Error('Error parsing ' + name + ':\\n' + errorMessage);\n\t\t\t}\n\t\t}\n\n\t\tdismissImportReport(): void {\n\t\t\tthis.isImportReportVisible(false);\n\t\t}\n\n\t\tlog(message: any): void {\n\t\t\tif (this.consoleLoggingEnabled && console && console.log) {\n\t\t\t\tconsole.log(message);\n\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\twsAdminCustomizer: AmeAdminCustomizer.AdminCustomizer;\n\t}\n}\n\njQuery(function () {\n\t//Give other scripts a chance to load before we start.\n\t//Some of them also use jQuery to run when the DOM is ready.\n\tsetTimeout(() => {\n\t\twindow.wsAdminCustomizer = new AmeAdminCustomizer.AdminCustomizer(wsAmeAdminCustomizerData);\n\t\tconst rootElement = document.getElementById('ame-ac-admin-customizer');\n\t\tif (rootElement === null) {\n\t\t\tthrow new Error('The root element for the admin customizer was not found.');\n\t\t}\n\n\t\tko.applyBindings(window.wsAdminCustomizer, rootElement);\n\n\t\t//Notify the customizer that bindings have been applied. It needs to do some\n\t\t//additional setup that can't be done until the DOM structure is ready.\n\t\tsetTimeout(() => {\n\t\t\twindow.wsAdminCustomizer.onBindingsApplied(rootElement);\n\t\t}, 5); //Components are rendered asynchronously.\n\t}, 20);\n});","'use strict';\r\nexport var AmeAdminCustomizerBase;\r\n(function (AmeAdminCustomizerBase) {\r\n class AdminCustomizerBase {\r\n constructor(scriptData) {\r\n this.allowedCommOrigins = scriptData.allowedCommOrigins;\r\n if (this.allowedCommOrigins.length === 0) {\r\n this.allowedCommOrigins = [window.location.origin];\r\n }\r\n this.allowedPreviewUrls = scriptData.allowedPreviewUrls;\r\n this.parsedAllowedUrls = this.allowedPreviewUrls.map(url => new URL(url));\r\n }\r\n isPreviewableUrl(url) {\r\n if (typeof url === 'string') {\r\n url = new URL(url);\r\n }\r\n if (typeof url.protocol === 'undefined') {\r\n return false;\r\n }\r\n //Only HTTP(S) links are previewable.\r\n if ((url.protocol !== 'http:') && (url.protocol !== 'https:')) {\r\n return false;\r\n }\r\n //Check against the list of allowed URLs.\r\n for (const allowedUrl of this.parsedAllowedUrls) {\r\n //Protocol and host must match. The path must start with the path\r\n //of the allowed URL (possibly without a trailing slash).\r\n if ((url.protocol === allowedUrl.protocol) && (url.host === allowedUrl.host)) {\r\n const allowedPath = allowedUrl.pathname.replace(/\\/$/, '');\r\n if (url.pathname.indexOf(allowedPath) === 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n }\r\n AmeAdminCustomizerBase.AdminCustomizerBase = AdminCustomizerBase;\r\n})(AmeAdminCustomizerBase || (AmeAdminCustomizerBase = {}));\r\n//# sourceMappingURL=admin-customizer-base.js.map","import { AmeAcSection } from './ame-ac-section.js';\r\nimport { createComponentConfig } from '../../../pro-customizables/ko-components/control-base.js';\r\nclass AmeAcContentSection extends AmeAcSection {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if ((typeof params.parentSectionLevel === 'function') && ko.isObservable(params.parentSectionLevel)) {\r\n this.parentSectionLevel = params.parentSectionLevel;\r\n }\r\n else {\r\n this.parentSectionLevel = null;\r\n }\r\n this.contentSectionLevel = ko.pureComputed(() => {\r\n let parentLevel = 0;\r\n if (this.parentSectionLevel !== null) {\r\n parentLevel = this.parentSectionLevel();\r\n }\r\n return parentLevel + 1;\r\n });\r\n //Tell child sections about our section level.\r\n this.childComponents().forEach((child) => {\r\n if (child.name === 'ame-ac-content-section') {\r\n child.params.parentSectionLevel = this.contentSectionLevel;\r\n }\r\n });\r\n this.sectionLevelClass = ko.pureComputed(() => {\r\n const level = this.contentSectionLevel();\r\n return 'ame-ac-content-section-' + level;\r\n });\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcContentSection, `\n\t
  • \n\t\t

    \t\n\t
  • \t\n\t\n\t\t\n\t\t\n`);\r\n//# sourceMappingURL=ame-ac-content-section.js.map","import { ComponentBindingOptions, createComponentConfig, KoContainerViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar ControlGroup = AmeCustomizable.ControlGroup;\r\nclass AmeAcControlGroup extends KoContainerViewModel {\r\n constructor(params, $element) {\r\n var _a, _b;\r\n super(params, $element);\r\n this.labelFor = (_b = ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.labelFor)) !== null && _b !== void 0 ? _b : null;\r\n this.titleDisabled = (typeof params.titleDisabled !== 'undefined') ? (!!params.titleDisabled) : false;\r\n }\r\n getExpectedUiElementType() {\r\n return ControlGroup;\r\n }\r\n mapChildToComponentBinding(child) {\r\n if (child.component) {\r\n return ComponentBindingOptions.fromElement(child);\r\n }\r\n return super.mapChildToComponentBinding(child);\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcControlGroup, `\n\t
  • \n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t
      \n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \t\t\n\t\t
    \n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-control-group.js.map","import { createComponentConfig, KoControlViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Control = AmeCustomizable.Control;\r\nclass MissingComponentError extends Error {\r\n constructor(uiElement) {\r\n super(`The UI element \"${uiElement.label}\" [${uiElement.id}] is missing a component name.`);\r\n this.uiElement = uiElement;\r\n }\r\n}\r\nclass AmeAcControl extends KoControlViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n //uiElement is required for this component.\r\n if (!this.uiElement) {\r\n throw new Error('The uiElement parameter is required for AmeAcControl');\r\n }\r\n this.wrapperLabelEnabled = (this.uiElement.label !== '') && (!this.uiElement.includesOwnLabel);\r\n this.labelForId = this.uiElement.labelTargetId;\r\n if (!this.uiElement.component) {\r\n throw new MissingComponentError(this.uiElement);\r\n }\r\n }\r\n getExpectedUiElementType() {\r\n return Control;\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcControl, `\n\t
  • \n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-control.js.map","import { createComponentConfig, KoContainerViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Section = AmeCustomizable.Section;\r\nimport { AmeAcSection } from './ame-ac-section.js';\r\nclass AmeAcSectionLink extends KoContainerViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n //uiElement is required for this component.\r\n if (!this.uiElement) {\r\n throw new Error('The uiElement parameter is required for AmeAcSectionLink');\r\n }\r\n this.targetElementId = AmeAcSection.getSectionElementId(this.uiElement);\r\n this.elementId = AmeAcSection.getSectionLinkElementId(this.uiElement);\r\n }\r\n getExpectedUiElementType() {\r\n return Section;\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcSectionLink, `\n\t
  • \n\t\t

    \n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-section-link.js.map","import { ComponentBindingOptions, createComponentConfig, KoContainerViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Section = AmeCustomizable.Section;\r\nvar Control = AmeCustomizable.Control;\r\nvar ControlGroup = AmeCustomizable.ControlGroup;\r\nexport class AmeAcSection extends KoContainerViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n //Must have an uiElement.\r\n if (this.uiElement === null) {\r\n throw new Error('AmeAcSection must have an uiElement.');\r\n }\r\n this.elementId = AmeAcSection.getSectionElementId(this.uiElement);\r\n if ((typeof params.breadcrumbs !== 'undefined') && ko.isObservable(params.breadcrumbs)) {\r\n this.breadcrumbs = params.breadcrumbs;\r\n }\r\n else {\r\n this.breadcrumbs = null;\r\n }\r\n //To keep the header text alignment consistent when navigating between sections,\r\n //let's show something even if there are no breadcrumbs.\r\n const defaultEmptyBreadcrumbText = 'Admin Menu Editor Pro';\r\n //Let other modules change the default text.\r\n let filteredEmptyBreadcrumbText = null;\r\n if (wp && wp.hooks && wp.hooks.applyFilters) {\r\n filteredEmptyBreadcrumbText = wp.hooks.applyFilters('adminMenuEditor.ac.emptyBreadcrumbText', defaultEmptyBreadcrumbText);\r\n }\r\n const emptyBreadcrumbText = ((typeof filteredEmptyBreadcrumbText === 'string')\r\n ? filteredEmptyBreadcrumbText\r\n : defaultEmptyBreadcrumbText);\r\n this.breadcrumbText = ko.pureComputed(() => {\r\n if (this.breadcrumbs === null) {\r\n return emptyBreadcrumbText;\r\n }\r\n const breadcrumbs = this.breadcrumbs();\r\n if (breadcrumbs.length < 1) {\r\n return emptyBreadcrumbText;\r\n }\r\n let titles = breadcrumbs.map(crumb => crumb.title);\r\n //Show the root section differently, \"Admin Customizer\" is too long.\r\n //Not sure about what text to use here, could matching the Theme Customizer be confusing?\r\n //Alternatives: 🛠️🎨, use \\uFE0E to render the emoji without colors (only works for some).\r\n //Alternatives: ⋯ and …\r\n titles[0] = 'Customizing';\r\n //Due to space constraints, show only the last 2 breadcrumbs.\r\n if (titles.length > 2) {\r\n titles = titles.slice(titles.length - 2);\r\n }\r\n return titles.join(' \\u25B8 ');\r\n });\r\n }\r\n getExpectedUiElementType() {\r\n return Section;\r\n }\r\n mapChildToComponentBinding(child) {\r\n if (child instanceof Section) {\r\n if (child.preferredRole === 'content') {\r\n return ComponentBindingOptions.fromElement(child, 'ame-ac-content-section');\r\n }\r\n else {\r\n return ComponentBindingOptions.fromElement(child, 'ame-ac-section-link');\r\n }\r\n }\r\n else if (child instanceof ControlGroup) {\r\n return ComponentBindingOptions.fromElement(child, 'ame-ac-control-group');\r\n }\r\n else if ((child instanceof Control)\r\n && (['ame-ac-separator', 'ame-horizontal-separator'].indexOf(child.component) < 0)) {\r\n //Wrap each control in a control group if it's not already in one.\r\n //Separators are an exception because they're cosmetic and need different styling.\r\n const controlGroup = child.createControlGroup();\r\n return this.mapChildToComponentBinding(controlGroup);\r\n }\r\n else {\r\n return ComponentBindingOptions.fromElement(child);\r\n }\r\n }\r\n static getSectionElementId(section) {\r\n return AmeAcSection.generateSectionElementId(section, 'ame-ac-section-');\r\n }\r\n static getSectionLinkElementId(section) {\r\n return AmeAcSection.generateSectionElementId(section, 'ame-ac-slink-');\r\n }\r\n static generateSectionElementId(section, prefix) {\r\n if (section.id) {\r\n return prefix + section.id;\r\n }\r\n const slug = section.title.toLowerCase().replace(/[^a-z0-9]/g, '-');\r\n if (slug !== '') {\r\n return prefix + slug;\r\n }\r\n throw new Error('Cannot generate a section element ID because the section does not have an ID or a title.');\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.childComponents.dispose();\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcSection, `\n\t
      \n\t\t\n\t\t\n\t\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-ac-section.js.map","import { createComponentConfig, KoStandaloneControl } from '../../../pro-customizables/ko-components/control-base.js';\r\nclass AmeAcSeparator extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcSeparator, `\n\t
  • \n`);\r\n//# sourceMappingURL=ame-ac-separator.js.map","import { createRendererComponentConfig, KoRendererViewModel } from '../../../pro-customizables/ko-components/control-base.js';\r\nimport { AmeCustomizable } from '../../../pro-customizables/assets/customizable.js';\r\nvar Section = AmeCustomizable.Section;\r\nclass AmeAcStructure extends KoRendererViewModel {\r\n constructor(params, $element) {\r\n var _a;\r\n super(params, $element);\r\n this.allNavigationSections = [];\r\n const rootSection = new Section({\r\n t: 'section',\r\n id: 'structure-root',\r\n title: (_a = this.structure.title) !== null && _a !== void 0 ? _a : 'Root',\r\n }, this.structure.children);\r\n //Recursively collect all navigable sections. Don't include content\r\n //sections: their parents will output them, not this component.\r\n function collectChildSections(section, accumulator = []) {\r\n if (section.preferredRole === 'navigation') {\r\n accumulator.push(section);\r\n }\r\n for (const child of section.children) {\r\n if (child instanceof Section) {\r\n collectChildSections(child, accumulator);\r\n }\r\n }\r\n return accumulator;\r\n }\r\n this.allNavigationSections = collectChildSections(rootSection);\r\n //Give the breadcrumb list to each section, if available.\r\n if (typeof params.breadcrumbs !== 'undefined') {\r\n for (const section of this.allNavigationSections) {\r\n section.componentParams.breadcrumbs = params.breadcrumbs;\r\n }\r\n }\r\n }\r\n}\r\nexport default createRendererComponentConfig(AmeAcStructure, `\n\t\n\t\t\n\t\n`);\r\n//# sourceMappingURL=ame-ac-structure.js.map","import { createComponentConfig, KoStandaloneControl } from '../../../pro-customizables/ko-components/control-base.js';\r\nclass AmeAcValidationErrors extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if (typeof params.errors !== 'undefined') {\r\n if (Array.isArray(params.errors)) {\r\n this.errors = params.errors;\r\n }\r\n else if (ko.isObservable(params.errors)) {\r\n this.errors = params.errors;\r\n }\r\n else {\r\n throw new Error('The \"errors\" parameter must be an array or an observable array.');\r\n }\r\n }\r\n else {\r\n console.log('Params:', params);\r\n throw new Error('The \"errors\" parameter is required for the AmeAcValidationErrors component.');\r\n }\r\n }\r\n}\r\nexport default createComponentConfig(AmeAcValidationErrors, `\n\t
      \n\t\t
    • \n\t\t\t\n\t\t
    • \n\t
    \n`);\r\n//# sourceMappingURL=ame-ac-validation-errors.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nimport { LazyPopupSliderAdapter } from '../lazy-popup-slider-adapter.js';\r\nconst allDimensionKeys = [\r\n 'top', 'bottom', 'left', 'right',\r\n 'topLeft', 'topRight', 'bottomLeft', 'bottomRight'\r\n];\r\nfunction isDimensionKey(key) {\r\n return allDimensionKeys.includes(key);\r\n}\r\nconst DefaultDimensionsInOrder = [\r\n ['top', 'Top'],\r\n ['bottom', 'Bottom'],\r\n ['left', 'Left'],\r\n ['right', 'Right'],\r\n];\r\nconst SideDimensions = ['top', 'bottom', 'left', 'right'];\r\nconst SymmetricDimensionMap = {\r\n 'vertical': ['top', 'bottom'],\r\n 'horizontal': ['left', 'right'],\r\n};\r\nfunction isSymmetricDimensionKey(key) {\r\n return SymmetricDimensionMap.hasOwnProperty(key);\r\n}\r\nlet nextId = 0;\r\nclass AmeBoxDimensions extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.inputIdPrefix = '_ame-box-dimensions-c-input-' + (nextId++);\r\n this.unitElementId = '_ame-box-dimensions-c-unit-' + (nextId++);\r\n this.wrapperAttributes = {};\r\n if ((typeof params.id === 'string') && (params.id !== '')) {\r\n this.wrapperAttributes['id'] = '_ame-box-dimensions-w-' + params.id;\r\n }\r\n if ((typeof params['dimensionNames'] !== 'undefined') && Array.isArray(params['dimensionNames'])) {\r\n this.dimensionsInOrder = params['dimensionNames'];\r\n }\r\n else {\r\n this.dimensionsInOrder = DefaultDimensionsInOrder;\r\n }\r\n //Make observable proxies for the individual dimension settings.\r\n const temp = {};\r\n for (const [dimensionKey, dimensionName] of this.dimensionsInOrder) {\r\n const setting = this.settings['value.' + dimensionKey];\r\n if (!setting || (typeof setting !== 'object')) {\r\n throw new Error(`Missing setting for the \"${dimensionName}\" side.`);\r\n }\r\n temp[dimensionKey] = ko.computed({\r\n read: () => {\r\n return setting.value();\r\n },\r\n write: (newValue) => {\r\n if (newValue === '') {\r\n newValue = null;\r\n }\r\n setting.value(newValue);\r\n },\r\n deferEvaluation: true,\r\n }).extend({ 'ameNumericInput': true });\r\n }\r\n this.dimensions = temp;\r\n //Similarly, make an observable for the unit setting.\r\n const unitSetting = this.settings['value.unit'];\r\n if (!unitSetting || (typeof unitSetting !== 'object')) {\r\n throw new Error('Missing setting for the unit.');\r\n }\r\n this.unitSetting = unitSetting;\r\n const defaultDropdownOptions = {\r\n options: [],\r\n optionsText: 'text',\r\n optionsValue: 'value'\r\n };\r\n if (params.unitDropdownOptions && (typeof params.unitDropdownOptions === 'object')) {\r\n const unitDropdownOptions = params.unitDropdownOptions;\r\n this.unitDropdownOptions = {\r\n options: unitDropdownOptions['options'] || defaultDropdownOptions.options,\r\n optionsText: unitDropdownOptions['optionsText'] || defaultDropdownOptions.optionsText,\r\n optionsValue: unitDropdownOptions['optionsValue'] || defaultDropdownOptions.optionsValue,\r\n };\r\n }\r\n else {\r\n this.unitDropdownOptions = defaultDropdownOptions;\r\n }\r\n this.isLinkActive = ko.observable(false);\r\n //Enable the link button by default if all dimensions are equal. Exception: null values.\r\n //Dimensions can have different defaults, so null doesn't necessarily mean that they\r\n //are actually equal.\r\n const firstKey = Object.keys(this.dimensions)[0];\r\n const firstValue = this.dimensions[firstKey]();\r\n if ((firstValue !== null) && (firstValue !== '')) {\r\n let areAllDimensionsEqual = true;\r\n for (const [dimensionKey] of this.dimensionsInOrder) {\r\n if (this.dimensions[dimensionKey]() !== firstValue) {\r\n areAllDimensionsEqual = false;\r\n break;\r\n }\r\n }\r\n this.isLinkActive(areAllDimensionsEqual);\r\n }\r\n //When \"link\" mode is enabled, keep all dimensions in sync.\r\n let isUpdatingAllDimensions = false; //Prevent infinite loops.\r\n const updateAllDimensions = (newValue) => {\r\n if (!isUpdatingAllDimensions && this.isLinkActive()) {\r\n isUpdatingAllDimensions = true;\r\n newValue = this.normalizeValue(newValue);\r\n for (const observable of Object.values(this.dimensions)) {\r\n observable(newValue);\r\n }\r\n isUpdatingAllDimensions = false;\r\n }\r\n };\r\n for (const dimensionKey of Object.keys(this.dimensions)) {\r\n this.dimensions[dimensionKey].subscribe(updateAllDimensions);\r\n }\r\n //In \"symmetric\" mode, the top/bottom and left/right dimensions are always equal.\r\n //The control will only show \"vertical\" and \"horizontal\" inputs.\r\n this.symmetricModeEnabled = ko.observable(this.decideSymmetricMode(params));\r\n //Create computed observables for the \"vertical\" and \"horizontal\" dimensions.\r\n this.symmetricValues = {};\r\n for (const name in SymmetricDimensionMap) {\r\n if (!isSymmetricDimensionKey(name) || !SymmetricDimensionMap.hasOwnProperty(name)) {\r\n continue;\r\n }\r\n const sides = SymmetricDimensionMap[name];\r\n this.symmetricValues[name] = ko.computed({\r\n read: () => {\r\n if (this.symmetricModeEnabled()) {\r\n return this.dimensions[sides[0]]();\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n write: (newValue) => {\r\n if (this.symmetricModeEnabled()) {\r\n newValue = this.normalizeValue(newValue);\r\n for (const side of sides) {\r\n this.dimensions[side](newValue);\r\n }\r\n }\r\n },\r\n deferEvaluation: true\r\n }).extend({ 'ameNumericInput': true });\r\n }\r\n //The control displays a different set of inputs depending on the current mode.\r\n this.inputsInOrder = ko.pureComputed(() => {\r\n let result;\r\n if (this.symmetricModeEnabled()) {\r\n result = [\r\n ['vertical', 'Vertical'],\r\n ['horizontal', 'Horizontal'],\r\n ];\r\n }\r\n else {\r\n result = this.dimensionsInOrder;\r\n }\r\n return result;\r\n });\r\n let sliderOptions = {\r\n 'positionParentSelector': '.ame-single-box-dimension',\r\n 'verticalOffset': -2,\r\n };\r\n if (typeof params.popupSliderWithin === 'string') {\r\n sliderOptions.positionWithinClosest = params.popupSliderWithin;\r\n }\r\n this.sliderAdapter = new LazyPopupSliderAdapter(params.sliderRanges ? params.sliderRanges : null, '.ame-box-dimensions-control', 'input.ame-box-dimensions-input', sliderOptions);\r\n }\r\n get classes() {\r\n return ['ame-box-dimensions-control', ...super.classes];\r\n }\r\n //noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n /**\r\n * Get an observable for a specific dimension or a pair of dimensions.\r\n *\r\n * Unfortunately, Knockout doesn't seem to support nested indexed accessors\r\n * like \"dimensions[$data[0]]\", so we have to use a method instead.\r\n */\r\n getInputObservable(key) {\r\n if (this.symmetricModeEnabled() && isSymmetricDimensionKey(key)) {\r\n return this.symmetricValues[key];\r\n }\r\n if (isDimensionKey(key)) {\r\n return this.dimensions[key];\r\n }\r\n throw new Error('Invalid input key for the current mode: ' + key);\r\n }\r\n getInputIdFor(key) {\r\n return this.inputIdPrefix + '-' + key;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n getInputAttributes(key) {\r\n return {\r\n id: this.getInputIdFor(key),\r\n 'data-unit-element-id': this.unitElementId,\r\n 'data-ame-box-dimension': key,\r\n };\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n getSettingFor(key) {\r\n const settingName = 'value.' + key;\r\n if (settingName in this.settings) {\r\n return this.settings[settingName];\r\n }\r\n if (this.symmetricModeEnabled() && isSymmetricDimensionKey(key)) {\r\n for (const dimension of SymmetricDimensionMap[key]) {\r\n //Since both symmetric dimensions are always equal, we can use\r\n //either of the two settings.\r\n const settingName = 'value.' + dimension;\r\n if (settingName in this.settings) {\r\n return this.settings[dimension];\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Actually used in the template.\r\n toggleLink() {\r\n this.isLinkActive(!this.isLinkActive());\r\n //When enabling \"link\" mode, fill all inputs with the same value.\r\n //Use the first non-empty value.\r\n if (this.isLinkActive()) {\r\n let firstValue = null;\r\n for (const dimensionObservable of Object.values(this.dimensions)) {\r\n const value = dimensionObservable();\r\n if ((value !== null) && (value !== '')) {\r\n firstValue = value;\r\n break;\r\n }\r\n }\r\n if (firstValue !== null) {\r\n firstValue = this.normalizeValue(firstValue);\r\n for (const dimensionObservable of Object.values(this.dimensions)) {\r\n dimensionObservable(firstValue);\r\n }\r\n }\r\n }\r\n }\r\n normalizeValue(value) {\r\n if (value === null) {\r\n return null;\r\n }\r\n //Convert strings to numbers, and invalid strings to null.\r\n if (typeof value === 'string') {\r\n value = parseFloat(value);\r\n if (isNaN(value)) {\r\n return null;\r\n }\r\n }\r\n return value;\r\n }\r\n /**\r\n * Determine whether the control should be in \"symmetric\" mode.\r\n */\r\n decideSymmetricMode(componentParams) {\r\n //This mode is off by default and can be enabled by setting the \"symmetricMode\" parameter.\r\n let enableMode = (typeof componentParams['symmetricMode'] !== 'undefined')\r\n ? (!!componentParams['symmetricMode'])\r\n : false;\r\n if (!enableMode) {\r\n return false;\r\n }\r\n //Symmetric mode can't be enabled if the control doesn't have all side dimensions.\r\n const hasAllSideDimensions = SideDimensions.every((key) => {\r\n return (key in this.dimensions);\r\n });\r\n if (!hasAllSideDimensions) {\r\n return false;\r\n }\r\n //It also can only be enabled if top/bottom and left/right dimensions are equal.\r\n return ((this.dimensions['top']() === this.dimensions['bottom']())\r\n && (this.dimensions['left']() === this.dimensions['right']()));\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeBoxDimensions, `\n\t
    \n\t\t\n\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-box-dimensions.js.map","import { KoStandaloneControl } from '../control-base.js';\r\nexport class ChoiceControlOption {\r\n constructor(data) {\r\n this.value = data.value;\r\n this.label = data.label;\r\n this.description = data.description || '';\r\n this.enabled = (typeof data.enabled === 'undefined') || data.enabled;\r\n this.icon = data.icon || '';\r\n }\r\n}\r\nexport class AmeChoiceControl extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.options = ko.observableArray([]);\r\n if ((typeof params['options'] !== 'undefined') && Array.isArray(params.options)) {\r\n this.options(params.options.map((optionData) => new ChoiceControlOption(optionData)));\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ame-choice-control.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n/**\r\n * Code editor control with syntax highlighting.\r\n *\r\n * This control uses the custom Knockout binding \"ameCodeMirror\" to do the heavy\r\n * lifting. The binding is defined in ko-extensions.ts.\r\n *\r\n * Note: The user can disable syntax highlighting. In that case, this control\r\n * should behave like a normal textarea.\r\n */\r\nclass AmeCodeEditor extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if ((typeof params.editorSettings === 'object') && (params.editorSettings !== null)) {\r\n this.editorSettings = params.editorSettings;\r\n }\r\n else {\r\n this.editorSettings = false;\r\n }\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeCodeEditor, `\n\t
    \n\t\t\n\t
    \n\t\n\t\t\n\t\n`);\r\n//# sourceMappingURL=ame-code-editor.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n/**\r\n * A wrapper for the WordPress color picker.\r\n *\r\n * Note that the custom 'ameColorPicker' binding must be available when this component\r\n * is used. You must enqueue the 'ame-ko-extensions' script for this to work.\r\n */\r\nclass AmeColorPicker extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n koDescendantsComplete(node) {\r\n //Make the color picker input visible. Its visibility is set to hidden by default.\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n //The component was bound to a comment node. The real element\r\n //should be the next non-comment sibling.\r\n let nextElement;\r\n do {\r\n nextElement = node.nextElementSibling;\r\n } while (nextElement && (nextElement.nodeType === Node.COMMENT_NODE));\r\n if (!nextElement) {\r\n return; //This should never happen.\r\n }\r\n node = nextElement;\r\n }\r\n if (!node || (node.nodeType !== Node.ELEMENT_NODE)) {\r\n return; //This should never happen.\r\n }\r\n const $picker = jQuery(node);\r\n //This should be a .wp-picker-container element that contains an input.\r\n const $input = $picker.find('input.ame-color-picker');\r\n if ($input.length > 0) {\r\n $input.css('visibility', 'visible');\r\n }\r\n }\r\n get classes() {\r\n return ['ame-color-picker', 'ame-color-picker-component', ...super.classes];\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeColorPicker, `\n\t\n`);\r\n//# sourceMappingURL=ame-color-picker.js.map","/*\r\n * This utility module imports all the base Knockout components and exports\r\n * a function that can be used to register the components with Knockout.\r\n */\r\nimport ameBoxDimensions from './ame-box-dimensions/ame-box-dimensions.js';\r\nimport ameColorPicker from './ame-color-picker/ame-color-picker.js';\r\nimport ameFontStylePicker from './ame-font-style-picker/ame-font-style-picker.js';\r\nimport ameImageSelector from './ame-image-selector/ame-image-selector.js';\r\nimport ameNumberInput from './ame-number-input/ame-number-input.js';\r\nimport ameNestedDescription from './ame-nested-description/ame-nested-description.js';\r\nimport ameRadioButtonBar from './ame-radio-button-bar/ame-radio-button-bar.js';\r\nimport ameRadioGroup from './ame-radio-group/ame-radio-group.js';\r\nimport ameSelectBox from './ame-select-box/ame-select-box.js';\r\nimport ameSiblingDescription from './ame-sibling-description/ame-sibling-description.js';\r\nimport ameStaticHtml from './ame-static-html/ame-static-html.js';\r\nimport ameTextInput from './ame-text-input/ame-text-input.js';\r\nimport ameToggleCheckbox from './ame-toggle-checkbox/ame-toggle-checkbox.js';\r\nimport ameUnitDropdown from './ame-unit-dropdown/ame-unit-dropdown.js';\r\nimport ameWpEditor from './ame-wp-editor/ame-wp-editor.js';\r\nimport ameHorizontalSeparator from './ame-horizontal-separator/ame-horizontal-separator.js';\r\nimport ameCodeEditor from './ame-code-editor/ame-code-editor.js';\r\nlet componentsRegistered = false;\r\n/**\r\n * Register the base Knockout components that are part of AME.\r\n *\r\n * It's safe to call this function multiple times. It will only register the components once.\r\n */\r\nexport function registerBaseComponents() {\r\n if (componentsRegistered) {\r\n return;\r\n }\r\n ko.components.register('ame-box-dimensions', ameBoxDimensions);\r\n ko.components.register('ame-color-picker', ameColorPicker);\r\n ko.components.register('ame-font-style-picker', ameFontStylePicker);\r\n ko.components.register('ame-image-selector', ameImageSelector);\r\n ko.components.register('ame-number-input', ameNumberInput);\r\n ko.components.register('ame-nested-description', ameNestedDescription);\r\n ko.components.register('ame-radio-button-bar', ameRadioButtonBar);\r\n ko.components.register('ame-radio-group', ameRadioGroup);\r\n ko.components.register('ame-select-box', ameSelectBox);\r\n ko.components.register('ame-sibling-description', ameSiblingDescription);\r\n ko.components.register('ame-static-html', ameStaticHtml);\r\n ko.components.register('ame-text-input', ameTextInput);\r\n ko.components.register('ame-toggle-checkbox', ameToggleCheckbox);\r\n ko.components.register('ame-unit-dropdown', ameUnitDropdown);\r\n ko.components.register('ame-wp-editor', ameWpEditor);\r\n ko.components.register('ame-horizontal-separator', ameHorizontalSeparator);\r\n ko.components.register('ame-code-editor', ameCodeEditor);\r\n componentsRegistered = true;\r\n}\r\n//# sourceMappingURL=ame-components.js.map","import { KoComponentViewModel } from '../control-base.js';\r\n/**\r\n * Base class for description components.\r\n */\r\nexport class AmeDescriptionComponent extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.description = params.description || '';\r\n }\r\n}\r\n//# sourceMappingURL=ame-description.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n//Note: Font style picker CSS is already included in the main 'controls.scss' file\r\n//and won't be duplicated or included here. Instead, load that stylesheet when\r\n//using any control components.\r\n/**\r\n * Font style options that can be selected in the picker component.\r\n *\r\n * Regrettably, these are duplicated from the PHP version of the control.\r\n * Once browsers support importing JSON files, we can move this to a separate\r\n * file and use that file in both places.\r\n */\r\nconst fontStyleOptions = {\r\n \"font-style\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default font style\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"italic\",\r\n \"text\": \"Italic\",\r\n \"label\": \"\"\r\n }\r\n ],\r\n \"text-transform\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default letter case\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"uppercase\",\r\n \"text\": \"Uppercase\",\r\n \"label\": {\r\n 'text-transform': 'uppercase'\r\n }\r\n },\r\n {\r\n \"value\": \"lowercase\",\r\n \"text\": \"Lowercase\",\r\n \"label\": {\r\n 'text-transform': 'lowercase'\r\n }\r\n },\r\n {\r\n \"value\": \"capitalize\",\r\n \"text\": \"Capitalize each word\",\r\n \"label\": {\r\n 'text-transform': 'capitalize'\r\n }\r\n }\r\n ],\r\n \"font-variant\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default font variant\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"small-caps\",\r\n \"text\": \"Small caps\",\r\n \"label\": {\r\n 'font-variant': 'small-caps'\r\n }\r\n }\r\n ],\r\n \"text-decoration\": [\r\n {\r\n \"value\": null,\r\n \"text\": \"Default text decoration\",\r\n \"label\": \"—\"\r\n },\r\n {\r\n \"value\": \"underline\",\r\n \"text\": \"Underline\",\r\n \"label\": \"\"\r\n },\r\n {\r\n \"value\": \"line-through\",\r\n \"text\": \"Strikethrough\",\r\n \"label\": \"\"\r\n }\r\n ]\r\n};\r\n//Generate label HTML for options that don't have it yet.\r\nfunction makeFontSample(styles) {\r\n let styleString = '';\r\n for (const [property, value] of Object.entries(styles)) {\r\n styleString += `${property}: ${value};`;\r\n }\r\n return `ab`;\r\n}\r\nlet flattenedOptions = [];\r\nfor (const [property, options] of Object.entries(fontStyleOptions)) {\r\n options.forEach((option) => {\r\n //Skip null values. They're used to indicate the default option,\r\n //and we don't need those in the Knockout version of this control.\r\n if (option.value === null) {\r\n return;\r\n }\r\n let labelString;\r\n if (typeof option.label === 'object') {\r\n labelString = makeFontSample(option.label);\r\n }\r\n else {\r\n labelString = option.label;\r\n }\r\n flattenedOptions.push({\r\n 'value': option.value,\r\n 'text': option.text || '',\r\n 'property': property,\r\n 'label': labelString\r\n });\r\n });\r\n}\r\nclass AmeFontStylePicker extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.options = flattenedOptions;\r\n }\r\n get classes() {\r\n return ['ame-font-style-control', ...super.classes];\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template, below.\r\n isOptionSelected(property, value) {\r\n if (this.settings.hasOwnProperty(property)) {\r\n return (this.settings[property].value() === value);\r\n }\r\n return false;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n toggleOption(property, value) {\r\n if (!this.settings.hasOwnProperty(property)) {\r\n return;\r\n }\r\n const targetSetting = this.settings[property];\r\n if (targetSetting.value() === value) {\r\n //When the user clicks on the currently selected option, reset it to the default.\r\n targetSetting.tryUpdate(null);\r\n }\r\n else {\r\n //Otherwise, set the new value.\r\n targetSetting.tryUpdate(value);\r\n }\r\n }\r\n}\r\n//Note: This weird spacing in the template string is intentional. It's used to\r\n//remove whitespace nodes from the DOM, which would otherwise slightly change\r\n//the layout of the control.\r\nexport default createControlComponentConfig(AmeFontStylePicker, `\n\t
    \n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-font-style-picker.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nclass AmeHorizontalSeparator extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeHorizontalSeparator, `\n\t
    \n`);\r\n//# sourceMappingURL=ame-horizontal-separator.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n/**\r\n * Image selector control.\r\n *\r\n * This implementation hands off the work to the existing AmeImageSelectorApi.ImageSelector\r\n * class to avoid duplicating the effort. That class is not a module because it is also\r\n * used for the more progressive-enhancement-y PHP-rendered controls, so we can't import it.\r\n */\r\nclass AmeImageSelector extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.selectorInstance = null;\r\n //Verify that our dependencies are available.\r\n if (typeof AmeImageSelectorApi === 'undefined') {\r\n throw new Error('AmeImageSelectorApi is not available. Remember to enqueue \"ame-image-selector-control-v2\".');\r\n }\r\n if (typeof AmeImageSelectorApi.ImageSelector === 'undefined') {\r\n throw new Error('AmeImageSelectorApi.ImageSelector is not available. This is probably a bug.');\r\n }\r\n this.externalUrlsAllowed = !!params.externalUrlsAllowed;\r\n this.canSelectMedia = !!params.canSelectMedia;\r\n this.imageProxy = this.settings.value.value;\r\n }\r\n get classes() {\r\n return [\r\n 'ame-image-selector-v2',\r\n ...super.classes,\r\n ];\r\n }\r\n koDescendantsComplete() {\r\n const $container = this.findChild('.ame-image-selector-v2');\r\n if ($container.length === 0) {\r\n return;\r\n }\r\n this.selectorInstance = new AmeImageSelectorApi.ImageSelector($container, {\r\n externalUrlsAllowed: this.externalUrlsAllowed,\r\n canSelectMedia: this.canSelectMedia,\r\n }, this.imageProxy());\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeImageSelector, `\n\t
    \n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-image-selector.js.map","import { createComponentConfig } from '../control-base.js';\r\nimport { AmeDescriptionComponent } from '../ame-description/ame-description.js';\r\n/**\r\n * A simple component that displays the description of a UI element.\r\n *\r\n * Like AmeSiblingDescription, but intended to be rendered inside\r\n * the parent control or container, not as a sibling.\r\n */\r\nclass AmeNestedDescription extends AmeDescriptionComponent {\r\n}\r\nexport default createComponentConfig(AmeNestedDescription, `\n\t
    \t\n`);\r\n//# sourceMappingURL=ame-nested-description.js.map","/// \r\nimport { createControlComponentConfig, KoDependentControl } from '../control-base.js';\r\nimport { AmeCustomizable } from '../../assets/customizable.js';\r\nvar Control = AmeCustomizable.Control;\r\nexport class AmeNumberInput extends KoDependentControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.sliderRanges = null;\r\n this.slider = null;\r\n this.numericValue = this.valueProxy.extend({ 'ameNumericInput': true });\r\n this.unitText = params.unitText || '';\r\n this.hasUnitDropdown = params.hasUnitDropdown || false;\r\n this.unitElementId = params.unitElementId || '';\r\n if (this.hasUnitDropdown && params.unitDropdownOptions) {\r\n this.unitDropdownOptions = {\r\n options: params.unitDropdownOptions.options || [],\r\n optionsText: params.unitDropdownOptions.optionsText || 'text',\r\n optionsValue: params.unitDropdownOptions.optionsValue || 'value'\r\n };\r\n }\r\n else {\r\n this.unitDropdownOptions = null;\r\n }\r\n this.min = params.min || null;\r\n this.max = params.max || null;\r\n this.step = params.step || null;\r\n if (params.sliderRanges) {\r\n this.sliderRanges = params.sliderRanges;\r\n }\r\n this.popupSliderWithin = (typeof params.popupSliderWithin === 'string') ? params.popupSliderWithin : null;\r\n this.inputClasses.unshift('ame-input-with-popup-slider', 'ame-number-input');\r\n }\r\n get classes() {\r\n const classes = ['ame-number-input-control'];\r\n if (this.sliderRanges !== null) {\r\n classes.push('ame-container-with-popup-slider');\r\n }\r\n classes.push(...super.classes);\r\n return classes;\r\n }\r\n get inputClasses() {\r\n const classes = ['ame-input-with-popup-slider', 'ame-number-input'];\r\n classes.push(...super.inputClasses);\r\n return classes;\r\n }\r\n getAdditionalInputAttributes() {\r\n let attributes = super.getAdditionalInputAttributes();\r\n if (this.min !== null) {\r\n attributes['min'] = this.min.toString();\r\n }\r\n if (this.max !== null) {\r\n attributes['max'] = this.max.toString();\r\n }\r\n if (this.step !== null) {\r\n attributes['step'] = this.step.toString();\r\n }\r\n if (this.unitElementId) {\r\n attributes['data-unit-element-id'] = this.unitElementId;\r\n }\r\n return attributes;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the Knockout template in this same file.\r\n showPopupSlider($data, event) {\r\n if ((this.sliderRanges === null) || (typeof AmePopupSlider === 'undefined')) {\r\n return;\r\n }\r\n //Some sanity checks.\r\n if (!event.target) {\r\n return;\r\n }\r\n const $input = jQuery(event.target);\r\n if ($input.is(':disabled') || !$input.is('input')) {\r\n return;\r\n }\r\n const $container = $input.closest('.ame-container-with-popup-slider');\r\n if ($container.length < 1) {\r\n return;\r\n }\r\n //Initialize the slider if it's not already initialized.\r\n if (!this.slider) {\r\n let sliderOptions = {};\r\n if (this.popupSliderWithin) {\r\n sliderOptions.positionWithinClosest = this.popupSliderWithin;\r\n }\r\n //In HTML, we would pass the range data as a \"data-slider-ranges\" attribute,\r\n //but here we can just set the data directly.\r\n $input.data('slider-ranges', this.sliderRanges);\r\n this.slider = AmePopupSlider.createSlider($container, sliderOptions);\r\n }\r\n this.slider.showForInput($input);\r\n }\r\n getExpectedUiElementType() {\r\n return Control;\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeNumberInput, `\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t
    \t\n`);\r\n//# sourceMappingURL=ame-number-input.js.map","'use strict';\r\nimport { createControlComponentConfig } from '../control-base.js';\r\nimport { AmeChoiceControl } from '../ame-choice-control/ame-choice-control.js';\r\nclass AmeRadioButtonBar extends AmeChoiceControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n get classes() {\r\n return ['ame-radio-button-bar-control', ...super.classes];\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeRadioButtonBar, `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-radio-button-bar.js.map","'use strict';\r\nimport { createControlComponentConfig } from '../control-base.js';\r\nimport { AmeChoiceControl } from '../ame-choice-control/ame-choice-control.js';\r\n// noinspection JSUnusedGlobalSymbols -- Enum keys like \"Paragraph\" are used when serializing wrapStyle in PHP.\r\nvar WrapStyle;\r\n(function (WrapStyle) {\r\n WrapStyle[\"LineBreak\"] = \"br\";\r\n WrapStyle[\"Paragraph\"] = \"p\";\r\n WrapStyle[\"None\"] = \"\";\r\n})(WrapStyle || (WrapStyle = {}));\r\nfunction isWrapStyle(value) {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n return (typeof WrapStyle[value] === 'string');\r\n}\r\nlet nextRadioGroupId = 1;\r\nclass AmeRadioGroup extends AmeChoiceControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.wrapStyle = WrapStyle.None;\r\n this.childByValue = new Map();\r\n if ((typeof params['valueChildIndexes'] === 'object') && Array.isArray(params.valueChildIndexes)) {\r\n const children = ko.unwrap(this.inputChildren);\r\n for (const [value, index] of params.valueChildIndexes) {\r\n if (!children || !children[index]) {\r\n throw new Error('The \"' + this.label + '\" radio group has no children, but its valueChildIndexes'\r\n + ' requires child #' + index + ' to be associated with value \"' + value + '\".');\r\n }\r\n this.childByValue.set(value, children[index]);\r\n }\r\n }\r\n this.wrapStyle = isWrapStyle(params.wrapStyle) ? WrapStyle[params.wrapStyle] : WrapStyle.None;\r\n if (this.childByValue.size > 0) {\r\n this.wrapStyle = WrapStyle.None;\r\n }\r\n this.radioInputPrefix = (typeof params.radioInputPrefix === 'string')\r\n ? params.radioInputPrefix\r\n : ('ame-rg-input-' + nextRadioGroupId++ + '-');\r\n }\r\n get classes() {\r\n const result = ['ame-radio-group-component', ...super.classes];\r\n if (this.childByValue.size > 0) {\r\n result.push('ame-rg-has-nested-controls');\r\n }\r\n return result;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template below.\r\n getChoiceChild(value) {\r\n return this.childByValue.get(value) || null;\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in the template.\r\n /**\r\n * Get the ID attribute for a radio input.\r\n *\r\n * Note: This must match the algorithm used by the PHP version of this control\r\n * to work correctly with the BorderStyleSelector control that adds style samples\r\n * to each choice and uses the ID to link them to the inputs (so that clicking\r\n * the sample selects the option).\r\n */\r\n getRadioInputId(choice) {\r\n let sanitizedValue = (choice.value !== null) ? choice.value.toString() : '';\r\n //Emulate the sanitize_key() function from WordPress core.\r\n sanitizedValue = sanitizedValue.toLowerCase().replace(/[^a-z0-9_\\-]/gi, '');\r\n return this.radioInputPrefix + sanitizedValue;\r\n }\r\n}\r\nconst choiceTemplate = `\n\t\n`;\r\nexport default createControlComponentConfig(AmeRadioGroup, `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t${choiceTemplate}
    \n\t\t\t\n\t\t\t\n\t\t\t\t

    ${choiceTemplate}

    \n\t\t\t\n\t\t\t\n\t\t\t\t${choiceTemplate}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
    \n`);\r\n//# sourceMappingURL=ame-radio-group.js.map","import { AmeChoiceControl } from '../ame-choice-control/ame-choice-control.js';\r\nimport { createControlComponentConfig } from '../control-base.js';\r\nclass AmeSelectBox extends AmeChoiceControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n }\r\n get classes() {\r\n return ['ame-select-box-control', ...super.classes];\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeSelectBox, `\n\t\n\t\n\t\t\n\t\t\n`);\r\n//# sourceMappingURL=ame-select-box.js.map","import { createComponentConfig } from '../control-base.js';\r\nimport { AmeDescriptionComponent } from '../ame-description/ame-description.js';\r\n/**\r\n * A simple component that displays the description of a UI element.\r\n *\r\n * This should be rendered as a sibling of the UI element's component,\r\n * typically immediately after it.\r\n *\r\n * Caution: HTML is allowed in the description.\r\n */\r\nclass AmeSiblingDescription extends AmeDescriptionComponent {\r\n}\r\nexport default createComponentConfig(AmeSiblingDescription, `\n\t

    \t\n`);\r\n//# sourceMappingURL=ame-sibling-description.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nclass AmeStaticHtml extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.containerType = 'span';\r\n this.htmlContent = (typeof params.html === 'string') ? params.html : '';\r\n if (typeof params.container === 'string') {\r\n this.containerType = params.container;\r\n }\r\n }\r\n}\r\n//Note: The HTML content has to be in a container element because Knockout doesn't allow\r\n//using the \"html\" binding with virtual elements.\r\nexport default createControlComponentConfig(AmeStaticHtml, `\n\t\n\t\t
    \n\t\n\t\n\t\t\n\t\n`);\r\n//# sourceMappingURL=ame-static-html.js.map","import { createControlComponentConfig, KoDependentControl } from '../control-base.js';\r\nexport class AmeTextInput extends KoDependentControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.inputType = 'text';\r\n this.isCode = params.isCode || false;\r\n this.inputType = params.inputType || 'text';\r\n }\r\n get inputClasses() {\r\n const classes = ['regular-text'];\r\n if (this.isCode) {\r\n classes.push('code');\r\n }\r\n classes.push('ame-text-input-control', ...super.inputClasses);\r\n return classes;\r\n }\r\n getAdditionalInputAttributes() {\r\n return Object.assign({ 'type': this.inputType }, super.getAdditionalInputAttributes());\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeTextInput, `\n\t\n\t\n\t\t\n\t\t\n`);\r\n//# sourceMappingURL=ame-text-input.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nclass AmeToggleCheckbox extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.onValue = (typeof params.onValue !== 'undefined') ? params.onValue : true;\r\n this.offValue = (typeof params.offValue !== 'undefined') ? params.offValue : false;\r\n if (typeof this.settings['value'] === 'undefined') {\r\n this.isChecked = ko.pureComputed(() => false);\r\n }\r\n else {\r\n this.isChecked = ko.computed({\r\n read: () => {\r\n return this.settings.value.value() === ko.unwrap(this.onValue);\r\n },\r\n write: (newValue) => {\r\n this.settings.value.value(ko.unwrap(newValue ? this.onValue : this.offValue));\r\n },\r\n deferEvaluation: true\r\n });\r\n }\r\n }\r\n get classes() {\r\n return ['ame-toggle-checkbox-control', ...super.classes];\r\n }\r\n}\r\n//Unlike the HTML version of this control, the Knockout version doesn't have\r\n//a second, hidden checkbox. This is because the component is entirely JS-based\r\n//and doesn't need to be submitted as part of a form.\r\nexport default createControlComponentConfig(AmeToggleCheckbox, `\n\t\t\n`);\r\n//# sourceMappingURL=ame-toggle-checkbox.js.map","import { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\nexport class AmeUnitDropdown extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.dropdownData = params.optionData || {\r\n options: [],\r\n optionsText: 'text',\r\n optionsValue: 'value'\r\n };\r\n this.selectId = params.id || '';\r\n }\r\n}\r\nexport default createControlComponentConfig(AmeUnitDropdown, `\n\t\n`);\r\n//# sourceMappingURL=ame-unit-dropdown.js.map","'use strict';\r\nimport { createControlComponentConfig, KoStandaloneControl } from '../control-base.js';\r\n//Note: Requires Lodash, but does not explicitly import it because this plugin\r\n//already uses Lodash as a global variable (wsAmeLodash) in many places. Code\r\n//that uses this component should make sure that Lodash is loaded.\r\nlet autoAssignedIdCounter = 0;\r\n/**\r\n * List of visual editor buttons that are visible in the \"teeny\" mode.\r\n *\r\n * Found in /wp-includes/class-wp-editor.php, the editor_settings() method.\r\n * The relevant code is around line #601 (as of WP 6.1.1).\r\n */\r\nconst TeenyButtons = [\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'blockquote',\r\n 'strikethrough',\r\n 'bullist',\r\n 'numlist',\r\n 'alignleft',\r\n 'aligncenter',\r\n 'alignright',\r\n 'undo',\r\n 'redo',\r\n 'link',\r\n 'fullscreen'\r\n];\r\n/**\r\n * List of Quicktags editor buttons that are visible by default.\r\n *\r\n * The default list of text editor buttons used by wp.editor.initialize()\r\n * doesn't match the defaults used by wp_editor() in PHP. Let's copy the list\r\n * from /includes/class-wp-editor.php.\r\n */\r\nconst DefaultQuicktagsButtons = [\r\n 'strong', 'em', 'link', 'block', 'del', 'ins', 'img', 'ul', 'ol', 'li', 'code', 'more', 'close'\r\n];\r\nclass AmeWpEditor extends KoStandaloneControl {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n this.editorId = null;\r\n this.isWpEditorInitialized = false;\r\n const textSetting = this.settings.value;\r\n if (typeof textSetting === 'undefined') {\r\n throw new Error('Visual Editor control is missing the required setting');\r\n }\r\n this.rows = params.rows || 6;\r\n this.isTeeny = !!params.teeny;\r\n }\r\n getAdditionalInputAttributes() {\r\n return Object.assign({ rows: this.rows.toString() }, super.getAdditionalInputAttributes());\r\n }\r\n koDescendantsComplete() {\r\n const $textArea = this.findChild('textarea.ame-wp-editor-textarea');\r\n if ($textArea.length === 0) {\r\n return;\r\n }\r\n const currentValue = this.valueProxy();\r\n $textArea.val((currentValue === null) ? '' : currentValue.toString());\r\n //The textarea must have an ID for wp.editor.initialize() to work.\r\n {\r\n let editorId = $textArea.attr('id');\r\n if (!editorId) {\r\n editorId = 'ws-ame-wp-editor-aid-' + (autoAssignedIdCounter++);\r\n $textArea.attr('id', editorId);\r\n }\r\n this.editorId = editorId;\r\n }\r\n //Update the setting when the contents of the underlying textarea change.\r\n //This happens when the user selects the \"Text\" tab in the editor, or when\r\n //TinyMCE is unavailable (e.g. if the \"Disable the visual editor when writing\"\r\n //option is checked in the user's profile).\r\n $textArea.on('change input', this.throttleUpdates(() => $textArea.val()));\r\n let editorSettings = {\r\n tinymce: {\r\n wpautop: true\r\n },\r\n quicktags: {\r\n //The default list of text editor buttons used by wp.editor.initialize()\r\n //doesn't match the defaults used by wp_editor() in PHP. Let's copy the list\r\n //from /includes/class-wp-editor.php.\r\n buttons: DefaultQuicktagsButtons.join(','),\r\n },\r\n //Include the \"Add Media\" button.\r\n mediaButtons: true,\r\n };\r\n if (typeof window['tinymce'] === 'undefined') {\r\n //TinyMCE is disabled or not available.\r\n editorSettings.tinymce = false;\r\n }\r\n if (this.isTeeny && (typeof editorSettings.tinymce === 'object')) {\r\n editorSettings.tinymce.toolbar1 = TeenyButtons.join(',');\r\n editorSettings.tinymce.toolbar2 = '';\r\n }\r\n const $document = jQuery(document);\r\n const self = this;\r\n //After the editor finishes initializing, add an event listener to update\r\n //the setting when the contents of the visual editor change.\r\n $document.on('tinymce-editor-init', function addMceChangeListener(event, editor) {\r\n if (editor.id !== self.editorId) {\r\n return; //Not our editor.\r\n }\r\n //According to the TinyMCE documentation, the \"Change\" event is fired\r\n //when \"changes [...] cause an undo level to be added\". This could be\r\n //too frequent for our purposes, so we'll throttle the callback.\r\n editor.on('Change', self.throttleUpdates(() => editor.getContent()));\r\n $document.off('tinymce-editor-init', addMceChangeListener);\r\n });\r\n //Unfortunately, as of WP 6.2-beta, wp.editor.initialize() doesn't add\r\n //the \"wp-editor-container\" wrapper when only the Quicktags editor is used.\r\n //This means the editor won't be styled correctly. Let's fix that.\r\n $document.on('quicktags-init', function maybeAddEditorWrapper(event, editor) {\r\n if (!editor || (editor.id !== self.editorId)) {\r\n return;\r\n }\r\n if (editor.canvas) {\r\n const $textarea = jQuery(editor.canvas);\r\n const $wrapper = $textarea.closest('.wp-editor-container');\r\n if ($wrapper.length === 0) {\r\n //Also include the toolbar in the wrapper.\r\n const $toolbar = $textarea.prevAll('.quicktags-toolbar').first();\r\n $textarea.add($toolbar).wrapAll('
    ');\r\n }\r\n }\r\n $document.off('quicktags-init', maybeAddEditorWrapper);\r\n });\r\n //Finally, initialize the editor.\r\n wp.editor.initialize($textArea.attr('id'), editorSettings);\r\n this.isWpEditorInitialized = true;\r\n }\r\n /**\r\n * Create a throttled function that updates the setting.\r\n *\r\n * There are multiple ways to get the contents of the editor (e.g. TinyMCE mode\r\n * vs a plain textarea), so using a utility function helps avoid code duplication.\r\n *\r\n * @param valueGetter\r\n * @protected\r\n */\r\n throttleUpdates(valueGetter) {\r\n const textSetting = this.settings.value;\r\n return wsAmeLodash.throttle(function () {\r\n textSetting.value(valueGetter());\r\n return void 0;\r\n }, 1000, { leading: true, trailing: true });\r\n }\r\n dispose() {\r\n //Destroy the editor. It's not clear whether this is necessary, but it's\r\n //probably a good idea to give WP a chance to clean up.\r\n if (this.isWpEditorInitialized && (this.editorId !== null)) {\r\n wp.editor.remove(this.editorId);\r\n this.isWpEditorInitialized = false;\r\n }\r\n super.dispose();\r\n }\r\n}\r\n//Note: The class of the textarea element is set directly instead of using a binding\r\n//because it must always have the \"wp-editor-area\" class for it to render correctly\r\n//(apparently, wp.editor.initialize() does not automatically add that class).\r\n//Knockout should not be able to remove the class.\r\nexport default createControlComponentConfig(AmeWpEditor, `\n\t\t\n`);\r\n//# sourceMappingURL=ame-wp-editor.js.map","import { AmeCustomizable } from '../assets/customizable.js';\r\nvar Setting = AmeCustomizable.Setting;\r\nvar InterfaceStructure = AmeCustomizable.InterfaceStructure;\r\nvar Control = AmeCustomizable.Control;\r\nexport class KoComponentViewModel {\r\n constructor(params, $element) {\r\n var _a;\r\n this.params = params;\r\n this.$element = $element;\r\n this.isBoundToComment = ($element[0]) && ($element[0].nodeType === Node.COMMENT_NODE);\r\n this.uiElement = null;\r\n const expectedType = this.getExpectedUiElementType();\r\n if (expectedType !== null) {\r\n if ((typeof params.uiElement !== 'undefined')\r\n && (params.uiElement instanceof expectedType)) {\r\n this.uiElement = params.uiElement;\r\n }\r\n else {\r\n throw new Error('uiElement is not a ' + expectedType.name + ' instance.');\r\n }\r\n }\r\n else if ((typeof params.uiElement !== 'undefined') && !(this instanceof KoStandaloneControl)) {\r\n console.warn('Unexpected \"uiElement\" parameter for ' + this.constructor.name\r\n + ' that did not expect an UI element. Did you forget to override getExpectedUiElementType() ?', params.uiElement);\r\n }\r\n if (typeof params.children !== 'undefined') {\r\n if (Array.isArray(params.children) || this.isObservableArray(params.children)) {\r\n this.inputChildren = params.children;\r\n }\r\n else {\r\n throw new Error('Invalid \"children\" parameter: expected an array or an observable array.');\r\n }\r\n }\r\n else {\r\n this.inputChildren = [];\r\n }\r\n this.customClasses = ((typeof params.classes === 'object') && Array.isArray(params.classes)) ? params.classes : [];\r\n this.customStyles = ((typeof params.styles === 'object') && (params.styles !== null)) ? params.styles : {};\r\n if (typeof params.enabled !== 'undefined') {\r\n if (ko.isObservable(params.enabled)) {\r\n this.isEnabled = params.enabled;\r\n }\r\n else {\r\n this.isEnabled = ko.pureComputed(() => !!params.enabled);\r\n }\r\n }\r\n else {\r\n this.isEnabled = ko.pureComputed(() => true);\r\n }\r\n //Get the description either from the \"description\" parameter or from the UI element.\r\n this.description = params.description\r\n ? ko.unwrap(params.description.toString())\r\n : (((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.description) || '');\r\n }\r\n dispose() {\r\n //Does nothing by default.\r\n }\r\n getExpectedUiElementType() {\r\n return null;\r\n }\r\n get classes() {\r\n return [].concat(this.customClasses);\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in Knockout templates.\r\n get classString() {\r\n return this.classes.join(' ');\r\n }\r\n get styles() {\r\n return Object.assign({}, this.customStyles);\r\n }\r\n findChild(selector, allowSiblingSearch = null) {\r\n if (allowSiblingSearch === null) {\r\n //Enable only if the component is bound to a comment (i.e. \"\").\r\n allowSiblingSearch = this.isBoundToComment;\r\n }\r\n if (this.isBoundToComment) {\r\n if (allowSiblingSearch) {\r\n return this.$element.nextAll(selector).first();\r\n }\r\n else {\r\n //We would never find anything because a comment node has no children.\r\n return jQuery();\r\n }\r\n }\r\n return this.$element.find(selector);\r\n }\r\n isObservableArray(value) {\r\n return (typeof value === 'object')\r\n && (value !== null)\r\n && (typeof value.slice === 'function')\r\n && (typeof value.indexOf === 'function')\r\n && (ko.isObservable(value));\r\n }\r\n}\r\nfunction makeCreateVmFunctionForComponent(ctor) {\r\n return function (params, componentInfo) {\r\n const $element = jQuery(componentInfo.element);\r\n return new ctor(params, $element);\r\n };\r\n}\r\nexport function createComponentConfig(ctor, templateString) {\r\n return {\r\n viewModel: {\r\n createViewModel: makeCreateVmFunctionForComponent(ctor),\r\n },\r\n template: templateString,\r\n };\r\n}\r\n//endregion\r\n//region Container\r\nexport class ComponentBindingOptions {\r\n // noinspection JSUnusedGlobalSymbols -- the uiElement property is used in the KO template of AC control groups.\r\n constructor(name, params, uiElement) {\r\n this.name = name;\r\n this.params = params;\r\n this.uiElement = uiElement;\r\n if (name === '') {\r\n throw new Error('Component name cannot be empty.');\r\n }\r\n }\r\n static fromElement(element, overrideComponentName = null) {\r\n if (!element.component && (overrideComponentName === null)) {\r\n throw new Error(`Cannot create component binding options for UI element \"${element.id}\" without a component name.`);\r\n }\r\n return new ComponentBindingOptions(overrideComponentName || element.component, element.getComponentParams(), element);\r\n }\r\n}\r\nexport class KoContainerViewModel extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n if (typeof params.children === 'undefined') {\r\n throw new Error('Missing \"children\" parameter.');\r\n }\r\n super(params, $element);\r\n this.title = ko.pureComputed(() => {\r\n if (typeof params.title !== 'undefined') {\r\n let title = ko.unwrap(params.title);\r\n if ((title !== null) && (typeof title !== 'undefined')) {\r\n return title.toString();\r\n }\r\n }\r\n if (this.uiElement) {\r\n return this.uiElement.title;\r\n }\r\n return '';\r\n });\r\n this.childComponents = ko.pureComputed(() => {\r\n const result = ko.unwrap(this.inputChildren)\r\n .map(child => this.mapChildToComponentBinding(child))\r\n .filter(binding => binding !== null);\r\n //TypeScript does not recognize that the filter() call above removes\r\n //all null values, so we need an explicit cast.\r\n return result;\r\n });\r\n }\r\n mapChildToComponentBinding(child) {\r\n //Does not map any children by default.\r\n return null;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.childComponents.dispose();\r\n }\r\n}\r\n//endregion\r\n//region Control\r\nexport class KoControlViewModel extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n var _a;\r\n super(params, $element);\r\n this.settings =\r\n ((typeof params.settings === 'object') && isSettingMap(params.settings))\r\n ? params.settings\r\n : {};\r\n if (typeof this.settings.value !== 'undefined') {\r\n this.valueProxy = this.settings.value.value;\r\n }\r\n else {\r\n this.valueProxy = ko.pureComputed(() => {\r\n console.error('Missing \"value\" setting for a control component.', this.settings, params);\r\n return '';\r\n });\r\n }\r\n //Input ID will be provided by the server if applicable.\r\n this.primaryInputId = (typeof params.primaryInputId === 'string') ? params.primaryInputId : null;\r\n this.inputAttributes = ko.pureComputed(() => {\r\n var _a;\r\n const attributes = ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.inputAttributes) || {};\r\n const inputId = this.getPrimaryInputId();\r\n if ((inputId !== null) && (inputId !== '')) {\r\n attributes.id = inputId;\r\n }\r\n //Note: The \"name\" field is not used because these controls are entirely JS-driven.\r\n const additionalAttributes = this.getAdditionalInputAttributes();\r\n for (const key in additionalAttributes) {\r\n if (!additionalAttributes.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n attributes[key] = additionalAttributes[key];\r\n }\r\n return attributes;\r\n });\r\n if ((typeof params.label !== 'undefined') && (params.label !== null)) {\r\n const unwrappedLabel = ko.unwrap(params.label);\r\n this.label = (typeof unwrappedLabel === 'undefined') ? '' : unwrappedLabel.toString();\r\n }\r\n else {\r\n this.label = ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.label) || '';\r\n }\r\n }\r\n get inputClasses() {\r\n var _a;\r\n return ((_a = this.uiElement) === null || _a === void 0 ? void 0 : _a.inputClasses) || [];\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used in Knockout templates.\r\n get inputClassString() {\r\n return this.inputClasses.join(' ');\r\n }\r\n getAdditionalInputAttributes() {\r\n return {};\r\n }\r\n getPrimaryInputId() {\r\n return this.primaryInputId;\r\n }\r\n}\r\nfunction isSettingMap(value) {\r\n if (value === null) {\r\n return false;\r\n }\r\n if (typeof value !== 'object') {\r\n return false;\r\n }\r\n const valueAsRecord = value;\r\n for (const key in valueAsRecord) {\r\n if (!valueAsRecord.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n if (!(valueAsRecord[key] instanceof Setting)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * A control that doesn't use or need a UI element instance, but can still have\r\n * settings and other parameters typically associated with controls.\r\n */\r\nexport class KoStandaloneControl extends KoControlViewModel {\r\n}\r\n/**\r\n * A control that requires a UI element of the \"Control\" class.\r\n */\r\nexport class KoDependentControl extends KoControlViewModel {\r\n getExpectedUiElementType() {\r\n return Control;\r\n }\r\n}\r\nexport function createControlComponentConfig(ctor, templateString) {\r\n return {\r\n viewModel: {\r\n createViewModel: makeCreateVmFunctionForComponent(ctor),\r\n },\r\n template: templateString,\r\n };\r\n}\r\n//endregion\r\n//region Renderer\r\nexport class KoRendererViewModel extends KoComponentViewModel {\r\n constructor(params, $element) {\r\n super(params, $element);\r\n if ((typeof params.structure !== 'object') || !(params.structure instanceof InterfaceStructure)) {\r\n throw new Error('Invalid interface structure for a renderer component.');\r\n }\r\n this.structure = params.structure;\r\n }\r\n}\r\nexport function createRendererComponentConfig(ctor, templateString) {\r\n return {\r\n viewModel: {\r\n createViewModel: makeCreateVmFunctionForComponent(ctor),\r\n },\r\n template: templateString,\r\n };\r\n}\r\n//endregion\r\n//# sourceMappingURL=control-base.js.map","/// \r\n/**\r\n * This is a wrapper for the popup slider that initializes the slider on first use.\r\n * It's useful for Knockout components.\r\n */\r\nexport class LazyPopupSliderAdapter {\r\n constructor(sliderRanges, containerSelector = '.ame-container-with-popup-slider', inputSelector = 'input', sliderOptions = {}) {\r\n this.sliderRanges = sliderRanges;\r\n this.containerSelector = containerSelector;\r\n this.inputSelector = inputSelector;\r\n this.sliderOptions = sliderOptions;\r\n this.slider = null;\r\n if (!sliderOptions.hasOwnProperty('ranges')) {\r\n sliderOptions.ranges = sliderRanges;\r\n }\r\n this.handleKoClickEvent = ($data, event) => {\r\n //Verify that this is one of the inputs we're interested in.\r\n //Also, disabled inputs should not trigger the slider.\r\n if (event.target === null) {\r\n return;\r\n }\r\n const $input = jQuery(event.target);\r\n if ($input.is(':disabled') || !$input.is(this.inputSelector)) {\r\n return;\r\n }\r\n //Short-circuit if the slider is already initialized.\r\n if (this.slider) {\r\n this.slider.showForInput($input);\r\n return;\r\n }\r\n //Some sanity checks.\r\n if (typeof AmePopupSlider === 'undefined') {\r\n return;\r\n }\r\n const $container = $input.closest(this.containerSelector);\r\n if ($container.length < 1) {\r\n return;\r\n }\r\n this.initSlider($container);\r\n if (this.slider !== null) {\r\n //TS doesn't realize that this.initSlider() will initialize the slider.\r\n this.slider.showForInput($input);\r\n }\r\n };\r\n }\r\n /**\r\n * Initialize the slider if it's not already initialized.\r\n */\r\n initSlider($container) {\r\n if (this.slider) {\r\n return;\r\n }\r\n //In HTML, we would pass the range data as a \"data-slider-ranges\" attribute,\r\n //but here they are passed via the \"ranges\" option (see the constructor).\r\n this.slider = AmePopupSlider.createSlider($container, this.sliderOptions);\r\n }\r\n}\r\n//# sourceMappingURL=lazy-popup-slider-adapter.js.map"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/customizable.bundle.js b/dist/customizable.bundle.js index 4387a33..19fde63 100644 --- a/dist/customizable.bundle.js +++ b/dist/customizable.bundle.js @@ -109,7 +109,7 @@ var AmeCustomizable; return; } //Add the error(s) only if there is no existing error with the same code. - const existingCodes = _.indexBy(this.validationErrors(), 'code'); + const existingCodes = _.keyBy(this.validationErrors(), 'code'); for (const error of errors) { if ((typeof error.code === 'undefined') || !existingCodes.hasOwnProperty(error.code)) { this.validationErrors.push(error); diff --git a/dist/customizable.bundle.js.map b/dist/customizable.bundle.js.map index 82d4992..6c93b75 100644 --- a/dist/customizable.bundle.js.map +++ b/dist/customizable.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"customizable.bundle.js","mappings":";;;;;;;;;;;;;;AAAa;AACN;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA,qBAAqB;AACrB;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,eAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B,kIAAkI;AAC9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC,uBAAuB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iDAAiD,iCAAiC,wGAAwG;AAC1L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D","sources":["webpack:///./extras/pro-customizables/assets/customizable.js"],"sourcesContent":["'use strict';\r\nexport var AmeCustomizable;\r\n(function (AmeCustomizable) {\r\n var some = AmeMiniFunc.some;\r\n var none = AmeMiniFunc.none;\r\n var Either = AmeMiniFunc.Either;\r\n const _ = wsAmeLodash;\r\n class Setting {\r\n constructor(id, value = null, defaultValue = null, supportsPostMessage = false, groupTitle = null, validator = null) {\r\n this.validator = validator;\r\n this.groupTitle = null;\r\n /**\r\n * The last value that was tried to be set. This is used to ignore server-side\r\n * validation errors when the input value has changed since the request was sent.\r\n *\r\n * Displayed validation errors should be relevant to what the user tried\r\n * to enter, not the currently stored setting value.\r\n */\r\n this.lastTriedNewValue = null;\r\n this.id = id;\r\n this.underlyingValue = ko.observable(value);\r\n this.defaultValue = defaultValue;\r\n this.supportsPostMessage = supportsPostMessage;\r\n this.groupTitle = groupTitle;\r\n this.lastTriedNewValue = value;\r\n this.value = ko.computed({\r\n read: () => this.underlyingValue(),\r\n write: (newValue) => {\r\n const errors = this.tryUpdate(newValue);\r\n if (errors && (errors.length > 0)) {\r\n /*\r\n We could revert to the previous value here, but there are some cases where\r\n that would interfere with the user's input. For example, if the user is\r\n manually typing in a URL, the value will be temporarily invalid until they\r\n finish entering the protocol and domain name. If we revert to the previous\r\n value, the user will have to start over.\r\n\r\n Instead, let's leave the invalid value in place and let the user fix it.\r\n */\r\n }\r\n },\r\n owner: this\r\n });\r\n this.validationErrors = ko.observableArray();\r\n this.isValid = ko.computed(() => {\r\n return (this.validationErrors().length === 0);\r\n });\r\n }\r\n tryUpdate(newValue) {\r\n this.lastTriedNewValue = newValue;\r\n const oldValue = this.underlyingValue();\r\n //Clear validation errors.\r\n this.validationErrors.removeAll();\r\n //Validate and sanitize the new value.\r\n const [sanitizedValue, errors] = this.validate(newValue);\r\n this.validationErrors.push(...errors);\r\n if (errors.length > 0) {\r\n return errors;\r\n }\r\n //Remember the last validation subject so that server-side validation results\r\n //can be ignored if the value has changed since the request was sent.\r\n this.lastTriedNewValue = sanitizedValue;\r\n //Only update the underlying value if it has changed.\r\n if (sanitizedValue !== oldValue) {\r\n this.underlyingValue(sanitizedValue);\r\n }\r\n return [];\r\n }\r\n validate(newValue) {\r\n if (this.validator !== null) {\r\n const result = this.validator.check(newValue);\r\n if (result.isLeft()) {\r\n return [newValue, [result.value]];\r\n }\r\n else if (result.isRight()) {\r\n newValue = result.value;\r\n }\r\n }\r\n return [newValue, []];\r\n }\r\n /**\r\n * Add validation errors to the setting if the current value still\r\n * matches the given value.\r\n *\r\n * This is intended as a way to add validation errors that were produced\r\n * asynchronously, such as by sending the value to the server for validation.\r\n * The setting's value can change while the validation is in progress,\r\n * so we need to check that the validated value matches the current one.\r\n *\r\n * @param subjectValue\r\n * @param errors\r\n */\r\n addValidationErrorsForValue(subjectValue, errors) {\r\n if (this.lastTriedNewValue !== subjectValue) {\r\n return;\r\n }\r\n //Add the error(s) only if there is no existing error with the same code.\r\n const existingCodes = _.indexBy(this.validationErrors(), 'code');\r\n for (const error of errors) {\r\n if ((typeof error.code === 'undefined') || !existingCodes.hasOwnProperty(error.code)) {\r\n this.validationErrors.push(error);\r\n }\r\n }\r\n }\r\n clearValidationErrorsForValue(subjectValue) {\r\n if (this.lastTriedNewValue !== subjectValue) {\r\n return;\r\n }\r\n this.validationErrors.removeAll();\r\n }\r\n }\r\n AmeCustomizable.Setting = Setting;\r\n function unserializeSettingMap(settings) {\r\n const collection = new SettingCollection();\r\n for (const settingId in settings) {\r\n if (!settings.hasOwnProperty(settingId)) {\r\n continue;\r\n }\r\n const definition = settings[settingId];\r\n collection.add(unserializeSetting(settingId, definition));\r\n }\r\n return collection;\r\n }\r\n AmeCustomizable.unserializeSettingMap = unserializeSettingMap;\r\n function unserializeSetting(settingId, definition) {\r\n return new Setting(settingId, (typeof definition.value !== 'undefined') ? definition.value : null, (typeof definition.defaultValue !== 'undefined') ? definition.defaultValue : null, (typeof definition.supportsPostMessage !== 'undefined') ? definition.supportsPostMessage : false, (typeof definition.groupTitle !== 'undefined') ? definition.groupTitle : null, (typeof definition.validation !== 'undefined') ? (new Validator(definition.validation)) : null);\r\n }\r\n AmeCustomizable.unserializeSetting = unserializeSetting;\r\n const BuiltinParsers = {\r\n 'numeric': (value, config) => {\r\n //In some UI controls the observable value is updated as the user types,\r\n //so this parser/validator should be tolerant and accept partial values.\r\n let parsed;\r\n let sanitized;\r\n if (typeof value === 'number') {\r\n parsed = sanitized = value;\r\n }\r\n else {\r\n sanitized = (typeof value === 'string') ? value : String(value);\r\n sanitized = AmeMiniFunc.sanitizeNumericString(sanitized);\r\n parsed = parseFloat(sanitized);\r\n if (isNaN(parsed)) {\r\n return Either.left({\r\n message: 'Value must be a number.',\r\n code: 'invalid_number'\r\n });\r\n }\r\n }\r\n if (config) {\r\n if ((typeof config.min !== 'undefined') && parsed < config.min) {\r\n return Either.left({\r\n message: `Value must be ${config.min} or greater`,\r\n code: 'min_value'\r\n });\r\n }\r\n if (typeof config.max !== 'undefined' && parsed > config.max) {\r\n return Either.left({\r\n message: `Value must be ${config.max} or lower`,\r\n code: 'max_value'\r\n });\r\n }\r\n }\r\n return Either.right(sanitized);\r\n },\r\n 'int': (value) => {\r\n let parsed = (typeof value === 'number') ? value : parseInt(String(value), 10);\r\n if (isNaN(parsed)) {\r\n return Either.left({\r\n message: 'Value must be a number.',\r\n code: 'invalid_type'\r\n });\r\n }\r\n parsed = Math.floor(parsed);\r\n return Either.right(parsed);\r\n }\r\n };\r\n class Validator {\r\n constructor(config) {\r\n this.config = config;\r\n this.parsers = [];\r\n //Converting to null is only allowed if the setting is nullable.\r\n if (config.convertEsToNull && !config.isNullable) {\r\n throw new Error('convertEsToNull is only allowed if the setting is nullable.');\r\n }\r\n if (config.parsers) {\r\n for (const [parserId, parserConfig] of config.parsers) {\r\n if (!BuiltinParsers.hasOwnProperty(parserId)) {\r\n throw new Error(`Unknown parser: ${parserId}`);\r\n }\r\n this.parsers.push([BuiltinParsers[parserId], parserConfig]);\r\n }\r\n }\r\n }\r\n check(value) {\r\n if (value === null) {\r\n if (this.config.isNullable) {\r\n return Either.right(value);\r\n }\r\n else {\r\n return Either.left({\r\n message: 'This setting cannot be null.'\r\n });\r\n }\r\n }\r\n if (typeof value === 'string') {\r\n if (this.config.convertEsToNull && (value === '')) {\r\n return Either.right(null);\r\n }\r\n }\r\n for (const [parser, parserConfig] of this.parsers) {\r\n const result = parser(value, (parserConfig === null) ? undefined : parserConfig);\r\n if (result.isLeft()) {\r\n return result;\r\n }\r\n else if (result.isRight()) {\r\n value = result.value;\r\n }\r\n }\r\n return Either.right(value);\r\n }\r\n }\r\n class SettingCollection {\r\n constructor() {\r\n this.settings = {};\r\n /**\r\n * Adding settings to an observable array makes it easier to automatically\r\n * update computed values like \"are any settings invalid?\".\r\n */\r\n this.observableSettings = ko.observableArray();\r\n const self = this;\r\n this.hasValidationErrors = ko.pureComputed(() => {\r\n return _.some(self.observableSettings(), (setting) => {\r\n return !setting.isValid();\r\n });\r\n });\r\n this.changeListeners = new Map();\r\n }\r\n get(id) {\r\n if (this.settings.hasOwnProperty(id)) {\r\n return some(this.settings[id]);\r\n }\r\n return none;\r\n }\r\n add(setting) {\r\n this.settings[setting.id] = setting;\r\n this.observableSettings.push(setting);\r\n setting.value.subscribe((newValue) => this.onSettingChanged(setting, newValue));\r\n }\r\n onSettingChanged(setting, newValue) {\r\n this.notifyChangeListeners(setting, newValue);\r\n }\r\n /**\r\n * Add a callback that will be called whenever the value of a setting changes.\r\n *\r\n * @param callback\r\n */\r\n addChangeListener(callback) {\r\n const id = Symbol();\r\n this.changeListeners.set(id, callback);\r\n return id;\r\n }\r\n removeChangeListener(id) {\r\n this.changeListeners.delete(id);\r\n }\r\n notifyChangeListeners(setting, newValue) {\r\n for (const listener of this.changeListeners.values()) {\r\n listener(setting, newValue);\r\n }\r\n }\r\n getAllSettingIds() {\r\n return Object.keys(this.settings);\r\n }\r\n getAllSettingValues() {\r\n const values = {};\r\n for (const id in this.settings) {\r\n if (this.settings.hasOwnProperty(id)) {\r\n values[id] = this.settings[id].value();\r\n }\r\n }\r\n return values;\r\n }\r\n }\r\n AmeCustomizable.SettingCollection = SettingCollection;\r\n function isSettingConditionData(data) {\r\n if ((typeof data !== 'object') || (data === null)) {\r\n return false;\r\n }\r\n const dataAsRecord = data;\r\n return (typeof dataAsRecord.settingId === 'string'\r\n && typeof dataAsRecord.op === 'string'\r\n && typeof dataAsRecord.value !== 'undefined');\r\n }\r\n class SettingCondition {\r\n constructor(setting, op, value) {\r\n this.setting = setting;\r\n this.op = op;\r\n this.value = value;\r\n }\r\n evaluate() {\r\n const settingValue = this.setting.value();\r\n switch (this.op) {\r\n case '==':\r\n //Note the intentional use of == instead of ===.\r\n return settingValue == this.value;\r\n case '!=':\r\n return settingValue != this.value;\r\n case '>':\r\n return settingValue > this.value;\r\n case '<':\r\n return settingValue < this.value;\r\n case '>=':\r\n return settingValue >= this.value;\r\n case '<=':\r\n return settingValue <= this.value;\r\n case 'falsy':\r\n return !settingValue;\r\n case 'truthy':\r\n return !!settingValue;\r\n }\r\n }\r\n static fromData(data, findSetting) {\r\n const setting = findSetting(data.settingId);\r\n if (!setting || setting.isEmpty()) {\r\n throw new Error(`Setting with ID \"${data.settingId}\" not found for SettingCondition`);\r\n }\r\n return new SettingCondition(setting.get(), data.op, data.value);\r\n }\r\n }\r\n AmeCustomizable.SettingCondition = SettingCondition;\r\n class UiElement {\r\n constructor(data, children = []) {\r\n this.component = data.component || '';\r\n this.id = data.id || '';\r\n this.description = data.description || '';\r\n this.classes = data.classes || [];\r\n this.styles = data.styles || {};\r\n this.componentParams = data.params || {};\r\n this.children = children;\r\n }\r\n getComponentParams() {\r\n return Object.assign(Object.assign({}, this.componentParams), { uiElement: this, id: this.id, description: this.description, classes: this.classes, styles: this.styles, children: this.children });\r\n }\r\n }\r\n AmeCustomizable.UiElement = UiElement;\r\n class Container extends UiElement {\r\n constructor(data, children = []) {\r\n super(data, children);\r\n this.title = data.title;\r\n }\r\n replaceChild(oldChild, newChild) {\r\n const index = this.children.indexOf(oldChild);\r\n if (index === -1) {\r\n throw new Error('Child not found');\r\n }\r\n this.children[index] = newChild;\r\n }\r\n replaceChildByIndex(index, newChild) {\r\n this.children[index] = newChild;\r\n }\r\n }\r\n AmeCustomizable.Container = Container;\r\n class Section extends Container {\r\n constructor(data, children = []) {\r\n super(data, children);\r\n this.preferredRole = data.preferredRole || 'navigation';\r\n }\r\n }\r\n AmeCustomizable.Section = Section;\r\n class ControlGroup extends Container {\r\n constructor(data, children = [], enabled = null) {\r\n super(data, children);\r\n this.enabled = enabled || ko.observable(true);\r\n this.labelFor = data.labelFor || null;\r\n }\r\n getComponentParams() {\r\n return Object.assign(Object.assign({}, super.getComponentParams()), { enabled: this.enabled });\r\n }\r\n }\r\n AmeCustomizable.ControlGroup = ControlGroup;\r\n class InterfaceStructure extends Container {\r\n constructor(data, children = []) {\r\n super(data, children);\r\n }\r\n getAsSections() {\r\n let currentAnonymousSection = null;\r\n let sections = [];\r\n for (const child of this.children) {\r\n if (child instanceof Section) {\r\n sections.push(child);\r\n currentAnonymousSection = null;\r\n }\r\n else {\r\n if (!currentAnonymousSection) {\r\n currentAnonymousSection = new Section({\r\n t: 'section',\r\n title: '',\r\n children: []\r\n });\r\n sections.push(currentAnonymousSection);\r\n }\r\n currentAnonymousSection.children.push(child);\r\n }\r\n }\r\n return sections;\r\n }\r\n }\r\n AmeCustomizable.InterfaceStructure = InterfaceStructure;\r\n class Control extends UiElement {\r\n constructor(data, settings = {}, enabled = null, children = []) {\r\n super(data, children);\r\n this.label = data.label;\r\n this.settings = settings;\r\n this.inputClasses = data.inputClasses || [];\r\n this.inputAttributes = data.inputAttributes || {};\r\n this.enabled = enabled || ko.observable(true);\r\n // noinspection PointlessBooleanExpressionJS -- Might not actually be a boolean if sent from the server.\r\n this.includesOwnLabel = (typeof data.includesOwnLabel !== 'undefined') ? (!!data.includesOwnLabel) : false;\r\n this.labelTargetId = data.labelTargetId || '';\r\n this.primaryInputId = data.primaryInputId || '';\r\n this.settingValidationErrors = ko.pureComputed(() => {\r\n const errors = [];\r\n for (const [settingId, setting] of Object.entries(this.settings)) {\r\n const settingErrors = setting.validationErrors();\r\n if (settingErrors.length > 0) {\r\n for (const error of settingErrors) {\r\n errors.push([settingId, error]);\r\n }\r\n }\r\n }\r\n return errors;\r\n });\r\n }\r\n getComponentParams() {\r\n return Object.assign(Object.assign({}, super.getComponentParams()), { settings: this.settings, enabled: this.enabled, label: this.label, primaryInputId: this.primaryInputId });\r\n }\r\n getAutoGroupTitle() {\r\n if (this.settings['value']) {\r\n const customGroupTitle = this.settings['value'].groupTitle;\r\n if (customGroupTitle) {\r\n return customGroupTitle;\r\n }\r\n }\r\n return this.label;\r\n }\r\n /**\r\n * Create a control group wrapper with this control as its only child.\r\n */\r\n createControlGroup() {\r\n let title = this.getAutoGroupTitle();\r\n //Some controls like the checkbox already show their own label.\r\n //Don't add a group title in that case.\r\n if (this.includesOwnLabel) {\r\n title = '';\r\n }\r\n const data = {\r\n t: 'control-group',\r\n title: title\r\n };\r\n if (this.labelTargetId) {\r\n data.labelFor = this.labelTargetId;\r\n }\r\n return new ControlGroup(data, [this], this.enabled);\r\n }\r\n }\r\n AmeCustomizable.Control = Control;\r\n function unserializeUiElement(data, findSetting, dataCustomizer) {\r\n if (typeof dataCustomizer === 'function') {\r\n dataCustomizer(data);\r\n }\r\n const dataAsRecord = data;\r\n //Unserialize children recursively.\r\n let children = [];\r\n if ((typeof dataAsRecord['children'] !== 'undefined') && Array.isArray(dataAsRecord['children'])) {\r\n for (const childData of dataAsRecord['children']) {\r\n children.push(unserializeUiElement(childData, findSetting, dataCustomizer));\r\n }\r\n }\r\n //Unserialize the \"enabled\" condition.\r\n let enabled = null;\r\n if ((data.t === 'control') || (data.t === 'control-group')) {\r\n if (typeof data.enabled !== 'undefined') {\r\n if (isSettingConditionData(data.enabled)) {\r\n const condition = SettingCondition.fromData(data.enabled, findSetting);\r\n enabled = ko.pureComputed(() => condition.evaluate());\r\n }\r\n else {\r\n enabled = ko.pureComputed(() => !!data.enabled);\r\n }\r\n }\r\n else {\r\n enabled = ko.observable(true);\r\n }\r\n }\r\n switch (data.t) {\r\n case 'section':\r\n return new Section(data, children);\r\n case 'control-group':\r\n return new ControlGroup(data, children, enabled);\r\n case 'structure':\r\n return new InterfaceStructure(data, children);\r\n case 'control':\r\n let settings = {};\r\n if (data.settings) {\r\n for (const childName in data.settings) {\r\n if (data.settings.hasOwnProperty(childName)) {\r\n const settingId = data.settings[childName];\r\n const setting = findSetting(settingId);\r\n if (setting.isDefined()) {\r\n settings[childName] = setting.get();\r\n }\r\n else {\r\n throw new Error('Unknown setting \"' + settingId + '\" referenced by control \"' + data.label + '\".');\r\n }\r\n }\r\n }\r\n }\r\n return new Control(data, settings, enabled, children);\r\n }\r\n }\r\n AmeCustomizable.unserializeUiElement = unserializeUiElement;\r\n class SettingReaderRegistry {\r\n constructor() {\r\n this.notFound = {};\r\n this.valueReaders = [];\r\n }\r\n registerValueReader(getter, idPrefix = null) {\r\n this.valueReaders.push({ getter, idPrefix });\r\n }\r\n /**\r\n * Try to find a setting in a registered setting reader.\r\n */\r\n getValue(settingId) {\r\n for (const { getter, idPrefix } of this.valueReaders) {\r\n if ((idPrefix !== null) && !(settingId.startsWith(idPrefix))) {\r\n continue;\r\n }\r\n const result = getter(settingId, this.notFound);\r\n if (result !== this.notFound) {\r\n return some(result);\r\n }\r\n }\r\n return none;\r\n }\r\n }\r\n AmeCustomizable.SettingReaderRegistry = SettingReaderRegistry;\r\n class PreviewRegistry {\r\n constructor(previewValueGetter) {\r\n this.previewValueGetter = previewValueGetter;\r\n this.settingPreviewUpdaters = {};\r\n this.notFound = {};\r\n this.allPreviewUpdaters = ko.observableArray([]);\r\n }\r\n preview(settingId, value) {\r\n if (!this.settingPreviewUpdaters.hasOwnProperty(settingId)) {\r\n return;\r\n }\r\n const updaters = this.settingPreviewUpdaters[settingId];\r\n for (const updater of updaters) {\r\n updater.preview(settingId, value, this.previewValueGetter);\r\n }\r\n }\r\n clearPreview() {\r\n for (const updater of this.allPreviewUpdaters()) {\r\n updater.clearPreview();\r\n }\r\n }\r\n registerPreviewUpdater(settingIds, updater) {\r\n for (const settingId of settingIds) {\r\n if (!this.settingPreviewUpdaters.hasOwnProperty(settingId)) {\r\n this.settingPreviewUpdaters[settingId] = [];\r\n }\r\n this.settingPreviewUpdaters[settingId].push(updater);\r\n }\r\n if (this.allPreviewUpdaters.indexOf(updater) < 0) {\r\n this.allPreviewUpdaters.push(updater);\r\n }\r\n }\r\n registerPreviewCallback(settingId, callback) {\r\n this.registerPreviewUpdater([settingId], new PreviewCallbackWrapper(callback));\r\n }\r\n canPreview(settingId) {\r\n return (this.settingPreviewUpdaters.hasOwnProperty(settingId)\r\n && (this.settingPreviewUpdaters[settingId].length > 0));\r\n }\r\n }\r\n AmeCustomizable.PreviewRegistry = PreviewRegistry;\r\n class PreviewCallbackWrapper {\r\n constructor(callback) {\r\n this.callback = callback;\r\n }\r\n preview(settingId, value, getSettingValue) {\r\n this.callback(value);\r\n }\r\n clearPreview() {\r\n //Nothing to do in this case.\r\n }\r\n }\r\n class ThrottledPreviewRegistry extends PreviewRegistry {\r\n constructor(previewValueGetter, minPreviewRefreshInterval = 40) {\r\n super(previewValueGetter);\r\n this.minPreviewRefreshInterval = minPreviewRefreshInterval;\r\n this.pendingSettings = {};\r\n this.throttledUpdate = throttleAnimationFrame(this.applyPendingUpdates.bind(this), this.minPreviewRefreshInterval);\r\n }\r\n queuePreview(settingId) {\r\n this.pendingSettings[settingId] = true;\r\n this.throttledUpdate();\r\n }\r\n applyPendingUpdates() {\r\n //Cancel any pending updates in case this method was called directly.\r\n this.throttledUpdate.cancel();\r\n const pendingSettingIds = Object.keys(this.pendingSettings);\r\n if (pendingSettingIds.length === 0) {\r\n return;\r\n }\r\n this.updatePreview(pendingSettingIds);\r\n this.pendingSettings = {};\r\n }\r\n /**\r\n * Update the preview for the specified settings.\r\n *\r\n * This method is called by the throttled update function, but it can also be called\r\n * directly if necessary, e.g. to update the preview for all settings when the user\r\n * opens a settings screen for the first time. Note that calling it will *not* cancel\r\n * pending updates.\r\n *\r\n * @param settingIds\r\n */\r\n updatePreview(settingIds) {\r\n if (settingIds.length < 1) {\r\n return;\r\n }\r\n for (const settingId of settingIds) {\r\n const value = this.previewValueGetter(settingId, this.notFound);\r\n if (value !== this.notFound) {\r\n this.preview(settingId, value);\r\n }\r\n }\r\n }\r\n clearPreview() {\r\n this.throttledUpdate.cancel();\r\n this.pendingSettings = {};\r\n super.clearPreview();\r\n }\r\n }\r\n AmeCustomizable.ThrottledPreviewRegistry = ThrottledPreviewRegistry;\r\n /**\r\n * Creates a throttled function that runs the specified callback at most once\r\n * every `minInterval` milliseconds.\r\n *\r\n * The callback is always invoked using `requestAnimationFrame()`, so it will be delayed\r\n * until the next frame even if the required interval has already passed.\r\n */\r\n function throttleAnimationFrame(callback, minInterval = 0) {\r\n /**\r\n * Expected time between animation frames. Intervals shorter than this will be ineffective.\r\n */\r\n const expectedFrameTime = 1000 / 60;\r\n /**\r\n * The threshold at which we will use `setTimeout()` instead of `requestAnimationFrame()`.\r\n */\r\n const timeoutThreshold = Math.max(1000 / 20, expectedFrameTime * 2 + 1);\r\n const epsilon = 0.001;\r\n let requestAnimationFrameId = null;\r\n let timerId = null;\r\n let lastCallTimestamp = 0;\r\n let nextCallTimestamp = 0;\r\n function animationCallback() {\r\n requestAnimationFrameId = null;\r\n const now = Date.now();\r\n if (nextCallTimestamp <= now) {\r\n lastCallTimestamp = now;\r\n callback();\r\n return;\r\n }\r\n else {\r\n requestAnimationFrameId = window.requestAnimationFrame(animationCallback);\r\n }\r\n }\r\n const invoke = () => {\r\n if ((requestAnimationFrameId !== null) || (timerId !== null)) {\r\n return; //Already scheduled.\r\n }\r\n nextCallTimestamp = lastCallTimestamp + minInterval;\r\n const now = Date.now();\r\n if (nextCallTimestamp <= now) {\r\n nextCallTimestamp = now + expectedFrameTime - epsilon;\r\n }\r\n //Two-stage throttling: If the remaining time is large, use setTimeout().\r\n //If it's small, use requestAnimationFrame() and go frame by frame.\r\n const remainingTime = nextCallTimestamp - now;\r\n if (remainingTime > timeoutThreshold) {\r\n timerId = window.setTimeout(() => {\r\n timerId = null;\r\n requestAnimationFrameId = window.requestAnimationFrame(animationCallback);\r\n }, remainingTime - (expectedFrameTime / 2));\r\n }\r\n else {\r\n //Use requestAnimationFrame.\r\n requestAnimationFrameId = window.requestAnimationFrame(animationCallback);\r\n }\r\n };\r\n invoke.cancel = () => {\r\n if (requestAnimationFrameId !== null) {\r\n window.cancelAnimationFrame(requestAnimationFrameId);\r\n requestAnimationFrameId = null;\r\n }\r\n if (timerId !== null) {\r\n window.clearTimeout(timerId);\r\n timerId = null;\r\n }\r\n };\r\n return invoke;\r\n }\r\n //endregion\r\n})(AmeCustomizable || (AmeCustomizable = {}));\r\nexport var AmeCustomizableViewModel;\r\n(function (AmeCustomizableViewModel) {\r\n var SettingCollection = AmeCustomizable.SettingCollection;\r\n var Setting = AmeCustomizable.Setting;\r\n var ThrottledPreviewRegistry = AmeCustomizable.ThrottledPreviewRegistry;\r\n var SettingReaderRegistry = AmeCustomizable.SettingReaderRegistry;\r\n var lift = AmeMiniFunc.lift;\r\n class SimpleVm extends ThrottledPreviewRegistry {\r\n constructor(extraPreviewCondition = null) {\r\n const getSettingValue = (settingId, defaultResult) => {\r\n const setting = this.getOrCreateKnownSetting(settingId);\r\n if (setting !== null) {\r\n return setting.value();\r\n }\r\n return defaultResult;\r\n };\r\n super(getSettingValue, 40);\r\n this.previewDesired = ko.observable(false);\r\n this.settings = new SettingCollection();\r\n this.settingReaders = new SettingReaderRegistry();\r\n this.isPreviewPossible = ko.pureComputed(() => {\r\n return this.allPreviewUpdaters().length > 0;\r\n });\r\n this.isPreviewEnabled = ko.computed({\r\n read: () => {\r\n if (extraPreviewCondition !== null) {\r\n if (!extraPreviewCondition()) {\r\n return false;\r\n }\r\n }\r\n return this.getPreviewActiveState();\r\n },\r\n write: (newValue) => {\r\n this.previewDesired(newValue);\r\n if (newValue && !this.getPreviewActiveState()) {\r\n //Can't actually enable preview. Reset the checkbox/other input.\r\n this.isPreviewEnabled.notifySubscribers();\r\n }\r\n }\r\n });\r\n this.isPreviewEnabled.subscribe((newValue) => {\r\n if (newValue) {\r\n this.updatePreview(this.settings.getAllSettingIds());\r\n }\r\n else {\r\n this.clearPreview();\r\n }\r\n });\r\n this.settings.addChangeListener((setting) => {\r\n if (!this.isPreviewEnabled()) {\r\n return;\r\n }\r\n this.queuePreview(setting.id);\r\n });\r\n }\r\n getSettingObservable(settingId, unusedDefaultValue = null) {\r\n const result = this.getOrCreateKnownSetting(settingId);\r\n if (result !== null) {\r\n return result.value;\r\n }\r\n throw new Error('Unknown setting ID: ' + settingId);\r\n }\r\n getOrCreateKnownSetting(settingId) {\r\n const result = this.settings.get(settingId);\r\n if (result.isDefined()) {\r\n return result.get();\r\n }\r\n const foundValue = this.settingReaders.getValue(settingId);\r\n if (foundValue.isDefined()) {\r\n const setting = new Setting(settingId, foundValue.get());\r\n this.settings.add(setting);\r\n return setting;\r\n }\r\n return null;\r\n }\r\n registerSettingReader(reader, idPrefix = null) {\r\n this.settingReaders.registerValueReader(reader, idPrefix);\r\n }\r\n getPreviewActiveState() {\r\n return this.previewDesired() && this.isPreviewPossible();\r\n }\r\n getAllSettingValues() {\r\n return this.settings.getAllSettingValues();\r\n }\r\n /**\r\n * Reread all settings from the value readers. This will be used to reload settings\r\n * in case the underlying configuration is reset or a new configuration is loaded.\r\n */\r\n reloadAllSettings() {\r\n for (const settingId of this.settings.getAllSettingIds()) {\r\n lift([this.settings.get(settingId), this.settingReaders.getValue(settingId)], (setting, newValue) => setting.value(newValue));\r\n }\r\n }\r\n }\r\n AmeCustomizableViewModel.SimpleVm = SimpleVm;\r\n // noinspection JSUnusedGlobalSymbols -- Not used right now, but kept for testing and prototyping purposes.\r\n class NullVm {\r\n constructor() {\r\n this.settings = new SettingCollection();\r\n }\r\n getSettingObservable(settingId, defaultValue = null) {\r\n const existingSetting = this.settings.get(settingId);\r\n if (existingSetting.isDefined()) {\r\n return existingSetting.get().value;\r\n }\r\n const setting = new Setting(settingId, defaultValue);\r\n this.settings.add(setting);\r\n return setting.value;\r\n }\r\n getAllSettingValues() {\r\n return this.settings.getAllSettingValues();\r\n }\r\n }\r\n AmeCustomizableViewModel.NullVm = NullVm;\r\n})(AmeCustomizableViewModel || (AmeCustomizableViewModel = {}));\r\n//# sourceMappingURL=customizable.js.map"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"customizable.bundle.js","mappings":";;;;;;;;;;;;;;AAAa;AACN;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA,qBAAqB;AACrB;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,eAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B,kIAAkI;AAC9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC,uBAAuB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iDAAiD,iCAAiC,wGAAwG;AAC1L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D","sources":["webpack:///./extras/pro-customizables/assets/customizable.js"],"sourcesContent":["'use strict';\r\nexport var AmeCustomizable;\r\n(function (AmeCustomizable) {\r\n var some = AmeMiniFunc.some;\r\n var none = AmeMiniFunc.none;\r\n var Either = AmeMiniFunc.Either;\r\n const _ = wsAmeLodash;\r\n class Setting {\r\n constructor(id, value = null, defaultValue = null, supportsPostMessage = false, groupTitle = null, validator = null) {\r\n this.validator = validator;\r\n this.groupTitle = null;\r\n /**\r\n * The last value that was tried to be set. This is used to ignore server-side\r\n * validation errors when the input value has changed since the request was sent.\r\n *\r\n * Displayed validation errors should be relevant to what the user tried\r\n * to enter, not the currently stored setting value.\r\n */\r\n this.lastTriedNewValue = null;\r\n this.id = id;\r\n this.underlyingValue = ko.observable(value);\r\n this.defaultValue = defaultValue;\r\n this.supportsPostMessage = supportsPostMessage;\r\n this.groupTitle = groupTitle;\r\n this.lastTriedNewValue = value;\r\n this.value = ko.computed({\r\n read: () => this.underlyingValue(),\r\n write: (newValue) => {\r\n const errors = this.tryUpdate(newValue);\r\n if (errors && (errors.length > 0)) {\r\n /*\r\n We could revert to the previous value here, but there are some cases where\r\n that would interfere with the user's input. For example, if the user is\r\n manually typing in a URL, the value will be temporarily invalid until they\r\n finish entering the protocol and domain name. If we revert to the previous\r\n value, the user will have to start over.\r\n\r\n Instead, let's leave the invalid value in place and let the user fix it.\r\n */\r\n }\r\n },\r\n owner: this\r\n });\r\n this.validationErrors = ko.observableArray();\r\n this.isValid = ko.computed(() => {\r\n return (this.validationErrors().length === 0);\r\n });\r\n }\r\n tryUpdate(newValue) {\r\n this.lastTriedNewValue = newValue;\r\n const oldValue = this.underlyingValue();\r\n //Clear validation errors.\r\n this.validationErrors.removeAll();\r\n //Validate and sanitize the new value.\r\n const [sanitizedValue, errors] = this.validate(newValue);\r\n this.validationErrors.push(...errors);\r\n if (errors.length > 0) {\r\n return errors;\r\n }\r\n //Remember the last validation subject so that server-side validation results\r\n //can be ignored if the value has changed since the request was sent.\r\n this.lastTriedNewValue = sanitizedValue;\r\n //Only update the underlying value if it has changed.\r\n if (sanitizedValue !== oldValue) {\r\n this.underlyingValue(sanitizedValue);\r\n }\r\n return [];\r\n }\r\n validate(newValue) {\r\n if (this.validator !== null) {\r\n const result = this.validator.check(newValue);\r\n if (result.isLeft()) {\r\n return [newValue, [result.value]];\r\n }\r\n else if (result.isRight()) {\r\n newValue = result.value;\r\n }\r\n }\r\n return [newValue, []];\r\n }\r\n /**\r\n * Add validation errors to the setting if the current value still\r\n * matches the given value.\r\n *\r\n * This is intended as a way to add validation errors that were produced\r\n * asynchronously, such as by sending the value to the server for validation.\r\n * The setting's value can change while the validation is in progress,\r\n * so we need to check that the validated value matches the current one.\r\n *\r\n * @param subjectValue\r\n * @param errors\r\n */\r\n addValidationErrorsForValue(subjectValue, errors) {\r\n if (this.lastTriedNewValue !== subjectValue) {\r\n return;\r\n }\r\n //Add the error(s) only if there is no existing error with the same code.\r\n const existingCodes = _.keyBy(this.validationErrors(), 'code');\r\n for (const error of errors) {\r\n if ((typeof error.code === 'undefined') || !existingCodes.hasOwnProperty(error.code)) {\r\n this.validationErrors.push(error);\r\n }\r\n }\r\n }\r\n clearValidationErrorsForValue(subjectValue) {\r\n if (this.lastTriedNewValue !== subjectValue) {\r\n return;\r\n }\r\n this.validationErrors.removeAll();\r\n }\r\n }\r\n AmeCustomizable.Setting = Setting;\r\n function unserializeSettingMap(settings) {\r\n const collection = new SettingCollection();\r\n for (const settingId in settings) {\r\n if (!settings.hasOwnProperty(settingId)) {\r\n continue;\r\n }\r\n const definition = settings[settingId];\r\n collection.add(unserializeSetting(settingId, definition));\r\n }\r\n return collection;\r\n }\r\n AmeCustomizable.unserializeSettingMap = unserializeSettingMap;\r\n function unserializeSetting(settingId, definition) {\r\n return new Setting(settingId, (typeof definition.value !== 'undefined') ? definition.value : null, (typeof definition.defaultValue !== 'undefined') ? definition.defaultValue : null, (typeof definition.supportsPostMessage !== 'undefined') ? definition.supportsPostMessage : false, (typeof definition.groupTitle !== 'undefined') ? definition.groupTitle : null, (typeof definition.validation !== 'undefined') ? (new Validator(definition.validation)) : null);\r\n }\r\n AmeCustomizable.unserializeSetting = unserializeSetting;\r\n const BuiltinParsers = {\r\n 'numeric': (value, config) => {\r\n //In some UI controls the observable value is updated as the user types,\r\n //so this parser/validator should be tolerant and accept partial values.\r\n let parsed;\r\n let sanitized;\r\n if (typeof value === 'number') {\r\n parsed = sanitized = value;\r\n }\r\n else {\r\n sanitized = (typeof value === 'string') ? value : String(value);\r\n sanitized = AmeMiniFunc.sanitizeNumericString(sanitized);\r\n parsed = parseFloat(sanitized);\r\n if (isNaN(parsed)) {\r\n return Either.left({\r\n message: 'Value must be a number.',\r\n code: 'invalid_number'\r\n });\r\n }\r\n }\r\n if (config) {\r\n if ((typeof config.min !== 'undefined') && parsed < config.min) {\r\n return Either.left({\r\n message: `Value must be ${config.min} or greater`,\r\n code: 'min_value'\r\n });\r\n }\r\n if (typeof config.max !== 'undefined' && parsed > config.max) {\r\n return Either.left({\r\n message: `Value must be ${config.max} or lower`,\r\n code: 'max_value'\r\n });\r\n }\r\n }\r\n return Either.right(sanitized);\r\n },\r\n 'int': (value) => {\r\n let parsed = (typeof value === 'number') ? value : parseInt(String(value), 10);\r\n if (isNaN(parsed)) {\r\n return Either.left({\r\n message: 'Value must be a number.',\r\n code: 'invalid_type'\r\n });\r\n }\r\n parsed = Math.floor(parsed);\r\n return Either.right(parsed);\r\n }\r\n };\r\n class Validator {\r\n constructor(config) {\r\n this.config = config;\r\n this.parsers = [];\r\n //Converting to null is only allowed if the setting is nullable.\r\n if (config.convertEsToNull && !config.isNullable) {\r\n throw new Error('convertEsToNull is only allowed if the setting is nullable.');\r\n }\r\n if (config.parsers) {\r\n for (const [parserId, parserConfig] of config.parsers) {\r\n if (!BuiltinParsers.hasOwnProperty(parserId)) {\r\n throw new Error(`Unknown parser: ${parserId}`);\r\n }\r\n this.parsers.push([BuiltinParsers[parserId], parserConfig]);\r\n }\r\n }\r\n }\r\n check(value) {\r\n if (value === null) {\r\n if (this.config.isNullable) {\r\n return Either.right(value);\r\n }\r\n else {\r\n return Either.left({\r\n message: 'This setting cannot be null.'\r\n });\r\n }\r\n }\r\n if (typeof value === 'string') {\r\n if (this.config.convertEsToNull && (value === '')) {\r\n return Either.right(null);\r\n }\r\n }\r\n for (const [parser, parserConfig] of this.parsers) {\r\n const result = parser(value, (parserConfig === null) ? undefined : parserConfig);\r\n if (result.isLeft()) {\r\n return result;\r\n }\r\n else if (result.isRight()) {\r\n value = result.value;\r\n }\r\n }\r\n return Either.right(value);\r\n }\r\n }\r\n class SettingCollection {\r\n constructor() {\r\n this.settings = {};\r\n /**\r\n * Adding settings to an observable array makes it easier to automatically\r\n * update computed values like \"are any settings invalid?\".\r\n */\r\n this.observableSettings = ko.observableArray();\r\n const self = this;\r\n this.hasValidationErrors = ko.pureComputed(() => {\r\n return _.some(self.observableSettings(), (setting) => {\r\n return !setting.isValid();\r\n });\r\n });\r\n this.changeListeners = new Map();\r\n }\r\n get(id) {\r\n if (this.settings.hasOwnProperty(id)) {\r\n return some(this.settings[id]);\r\n }\r\n return none;\r\n }\r\n add(setting) {\r\n this.settings[setting.id] = setting;\r\n this.observableSettings.push(setting);\r\n setting.value.subscribe((newValue) => this.onSettingChanged(setting, newValue));\r\n }\r\n onSettingChanged(setting, newValue) {\r\n this.notifyChangeListeners(setting, newValue);\r\n }\r\n /**\r\n * Add a callback that will be called whenever the value of a setting changes.\r\n *\r\n * @param callback\r\n */\r\n addChangeListener(callback) {\r\n const id = Symbol();\r\n this.changeListeners.set(id, callback);\r\n return id;\r\n }\r\n removeChangeListener(id) {\r\n this.changeListeners.delete(id);\r\n }\r\n notifyChangeListeners(setting, newValue) {\r\n for (const listener of this.changeListeners.values()) {\r\n listener(setting, newValue);\r\n }\r\n }\r\n getAllSettingIds() {\r\n return Object.keys(this.settings);\r\n }\r\n getAllSettingValues() {\r\n const values = {};\r\n for (const id in this.settings) {\r\n if (this.settings.hasOwnProperty(id)) {\r\n values[id] = this.settings[id].value();\r\n }\r\n }\r\n return values;\r\n }\r\n }\r\n AmeCustomizable.SettingCollection = SettingCollection;\r\n function isSettingConditionData(data) {\r\n if ((typeof data !== 'object') || (data === null)) {\r\n return false;\r\n }\r\n const dataAsRecord = data;\r\n return (typeof dataAsRecord.settingId === 'string'\r\n && typeof dataAsRecord.op === 'string'\r\n && typeof dataAsRecord.value !== 'undefined');\r\n }\r\n class SettingCondition {\r\n constructor(setting, op, value) {\r\n this.setting = setting;\r\n this.op = op;\r\n this.value = value;\r\n }\r\n evaluate() {\r\n const settingValue = this.setting.value();\r\n switch (this.op) {\r\n case '==':\r\n //Note the intentional use of == instead of ===.\r\n return settingValue == this.value;\r\n case '!=':\r\n return settingValue != this.value;\r\n case '>':\r\n return settingValue > this.value;\r\n case '<':\r\n return settingValue < this.value;\r\n case '>=':\r\n return settingValue >= this.value;\r\n case '<=':\r\n return settingValue <= this.value;\r\n case 'falsy':\r\n return !settingValue;\r\n case 'truthy':\r\n return !!settingValue;\r\n }\r\n }\r\n static fromData(data, findSetting) {\r\n const setting = findSetting(data.settingId);\r\n if (!setting || setting.isEmpty()) {\r\n throw new Error(`Setting with ID \"${data.settingId}\" not found for SettingCondition`);\r\n }\r\n return new SettingCondition(setting.get(), data.op, data.value);\r\n }\r\n }\r\n AmeCustomizable.SettingCondition = SettingCondition;\r\n class UiElement {\r\n constructor(data, children = []) {\r\n this.component = data.component || '';\r\n this.id = data.id || '';\r\n this.description = data.description || '';\r\n this.classes = data.classes || [];\r\n this.styles = data.styles || {};\r\n this.componentParams = data.params || {};\r\n this.children = children;\r\n }\r\n getComponentParams() {\r\n return Object.assign(Object.assign({}, this.componentParams), { uiElement: this, id: this.id, description: this.description, classes: this.classes, styles: this.styles, children: this.children });\r\n }\r\n }\r\n AmeCustomizable.UiElement = UiElement;\r\n class Container extends UiElement {\r\n constructor(data, children = []) {\r\n super(data, children);\r\n this.title = data.title;\r\n }\r\n replaceChild(oldChild, newChild) {\r\n const index = this.children.indexOf(oldChild);\r\n if (index === -1) {\r\n throw new Error('Child not found');\r\n }\r\n this.children[index] = newChild;\r\n }\r\n replaceChildByIndex(index, newChild) {\r\n this.children[index] = newChild;\r\n }\r\n }\r\n AmeCustomizable.Container = Container;\r\n class Section extends Container {\r\n constructor(data, children = []) {\r\n super(data, children);\r\n this.preferredRole = data.preferredRole || 'navigation';\r\n }\r\n }\r\n AmeCustomizable.Section = Section;\r\n class ControlGroup extends Container {\r\n constructor(data, children = [], enabled = null) {\r\n super(data, children);\r\n this.enabled = enabled || ko.observable(true);\r\n this.labelFor = data.labelFor || null;\r\n }\r\n getComponentParams() {\r\n return Object.assign(Object.assign({}, super.getComponentParams()), { enabled: this.enabled });\r\n }\r\n }\r\n AmeCustomizable.ControlGroup = ControlGroup;\r\n class InterfaceStructure extends Container {\r\n constructor(data, children = []) {\r\n super(data, children);\r\n }\r\n getAsSections() {\r\n let currentAnonymousSection = null;\r\n let sections = [];\r\n for (const child of this.children) {\r\n if (child instanceof Section) {\r\n sections.push(child);\r\n currentAnonymousSection = null;\r\n }\r\n else {\r\n if (!currentAnonymousSection) {\r\n currentAnonymousSection = new Section({\r\n t: 'section',\r\n title: '',\r\n children: []\r\n });\r\n sections.push(currentAnonymousSection);\r\n }\r\n currentAnonymousSection.children.push(child);\r\n }\r\n }\r\n return sections;\r\n }\r\n }\r\n AmeCustomizable.InterfaceStructure = InterfaceStructure;\r\n class Control extends UiElement {\r\n constructor(data, settings = {}, enabled = null, children = []) {\r\n super(data, children);\r\n this.label = data.label;\r\n this.settings = settings;\r\n this.inputClasses = data.inputClasses || [];\r\n this.inputAttributes = data.inputAttributes || {};\r\n this.enabled = enabled || ko.observable(true);\r\n // noinspection PointlessBooleanExpressionJS -- Might not actually be a boolean if sent from the server.\r\n this.includesOwnLabel = (typeof data.includesOwnLabel !== 'undefined') ? (!!data.includesOwnLabel) : false;\r\n this.labelTargetId = data.labelTargetId || '';\r\n this.primaryInputId = data.primaryInputId || '';\r\n this.settingValidationErrors = ko.pureComputed(() => {\r\n const errors = [];\r\n for (const [settingId, setting] of Object.entries(this.settings)) {\r\n const settingErrors = setting.validationErrors();\r\n if (settingErrors.length > 0) {\r\n for (const error of settingErrors) {\r\n errors.push([settingId, error]);\r\n }\r\n }\r\n }\r\n return errors;\r\n });\r\n }\r\n getComponentParams() {\r\n return Object.assign(Object.assign({}, super.getComponentParams()), { settings: this.settings, enabled: this.enabled, label: this.label, primaryInputId: this.primaryInputId });\r\n }\r\n getAutoGroupTitle() {\r\n if (this.settings['value']) {\r\n const customGroupTitle = this.settings['value'].groupTitle;\r\n if (customGroupTitle) {\r\n return customGroupTitle;\r\n }\r\n }\r\n return this.label;\r\n }\r\n /**\r\n * Create a control group wrapper with this control as its only child.\r\n */\r\n createControlGroup() {\r\n let title = this.getAutoGroupTitle();\r\n //Some controls like the checkbox already show their own label.\r\n //Don't add a group title in that case.\r\n if (this.includesOwnLabel) {\r\n title = '';\r\n }\r\n const data = {\r\n t: 'control-group',\r\n title: title\r\n };\r\n if (this.labelTargetId) {\r\n data.labelFor = this.labelTargetId;\r\n }\r\n return new ControlGroup(data, [this], this.enabled);\r\n }\r\n }\r\n AmeCustomizable.Control = Control;\r\n function unserializeUiElement(data, findSetting, dataCustomizer) {\r\n if (typeof dataCustomizer === 'function') {\r\n dataCustomizer(data);\r\n }\r\n const dataAsRecord = data;\r\n //Unserialize children recursively.\r\n let children = [];\r\n if ((typeof dataAsRecord['children'] !== 'undefined') && Array.isArray(dataAsRecord['children'])) {\r\n for (const childData of dataAsRecord['children']) {\r\n children.push(unserializeUiElement(childData, findSetting, dataCustomizer));\r\n }\r\n }\r\n //Unserialize the \"enabled\" condition.\r\n let enabled = null;\r\n if ((data.t === 'control') || (data.t === 'control-group')) {\r\n if (typeof data.enabled !== 'undefined') {\r\n if (isSettingConditionData(data.enabled)) {\r\n const condition = SettingCondition.fromData(data.enabled, findSetting);\r\n enabled = ko.pureComputed(() => condition.evaluate());\r\n }\r\n else {\r\n enabled = ko.pureComputed(() => !!data.enabled);\r\n }\r\n }\r\n else {\r\n enabled = ko.observable(true);\r\n }\r\n }\r\n switch (data.t) {\r\n case 'section':\r\n return new Section(data, children);\r\n case 'control-group':\r\n return new ControlGroup(data, children, enabled);\r\n case 'structure':\r\n return new InterfaceStructure(data, children);\r\n case 'control':\r\n let settings = {};\r\n if (data.settings) {\r\n for (const childName in data.settings) {\r\n if (data.settings.hasOwnProperty(childName)) {\r\n const settingId = data.settings[childName];\r\n const setting = findSetting(settingId);\r\n if (setting.isDefined()) {\r\n settings[childName] = setting.get();\r\n }\r\n else {\r\n throw new Error('Unknown setting \"' + settingId + '\" referenced by control \"' + data.label + '\".');\r\n }\r\n }\r\n }\r\n }\r\n return new Control(data, settings, enabled, children);\r\n }\r\n }\r\n AmeCustomizable.unserializeUiElement = unserializeUiElement;\r\n class SettingReaderRegistry {\r\n constructor() {\r\n this.notFound = {};\r\n this.valueReaders = [];\r\n }\r\n registerValueReader(getter, idPrefix = null) {\r\n this.valueReaders.push({ getter, idPrefix });\r\n }\r\n /**\r\n * Try to find a setting in a registered setting reader.\r\n */\r\n getValue(settingId) {\r\n for (const { getter, idPrefix } of this.valueReaders) {\r\n if ((idPrefix !== null) && !(settingId.startsWith(idPrefix))) {\r\n continue;\r\n }\r\n const result = getter(settingId, this.notFound);\r\n if (result !== this.notFound) {\r\n return some(result);\r\n }\r\n }\r\n return none;\r\n }\r\n }\r\n AmeCustomizable.SettingReaderRegistry = SettingReaderRegistry;\r\n class PreviewRegistry {\r\n constructor(previewValueGetter) {\r\n this.previewValueGetter = previewValueGetter;\r\n this.settingPreviewUpdaters = {};\r\n this.notFound = {};\r\n this.allPreviewUpdaters = ko.observableArray([]);\r\n }\r\n preview(settingId, value) {\r\n if (!this.settingPreviewUpdaters.hasOwnProperty(settingId)) {\r\n return;\r\n }\r\n const updaters = this.settingPreviewUpdaters[settingId];\r\n for (const updater of updaters) {\r\n updater.preview(settingId, value, this.previewValueGetter);\r\n }\r\n }\r\n clearPreview() {\r\n for (const updater of this.allPreviewUpdaters()) {\r\n updater.clearPreview();\r\n }\r\n }\r\n registerPreviewUpdater(settingIds, updater) {\r\n for (const settingId of settingIds) {\r\n if (!this.settingPreviewUpdaters.hasOwnProperty(settingId)) {\r\n this.settingPreviewUpdaters[settingId] = [];\r\n }\r\n this.settingPreviewUpdaters[settingId].push(updater);\r\n }\r\n if (this.allPreviewUpdaters.indexOf(updater) < 0) {\r\n this.allPreviewUpdaters.push(updater);\r\n }\r\n }\r\n registerPreviewCallback(settingId, callback) {\r\n this.registerPreviewUpdater([settingId], new PreviewCallbackWrapper(callback));\r\n }\r\n canPreview(settingId) {\r\n return (this.settingPreviewUpdaters.hasOwnProperty(settingId)\r\n && (this.settingPreviewUpdaters[settingId].length > 0));\r\n }\r\n }\r\n AmeCustomizable.PreviewRegistry = PreviewRegistry;\r\n class PreviewCallbackWrapper {\r\n constructor(callback) {\r\n this.callback = callback;\r\n }\r\n preview(settingId, value, getSettingValue) {\r\n this.callback(value);\r\n }\r\n clearPreview() {\r\n //Nothing to do in this case.\r\n }\r\n }\r\n class ThrottledPreviewRegistry extends PreviewRegistry {\r\n constructor(previewValueGetter, minPreviewRefreshInterval = 40) {\r\n super(previewValueGetter);\r\n this.minPreviewRefreshInterval = minPreviewRefreshInterval;\r\n this.pendingSettings = {};\r\n this.throttledUpdate = throttleAnimationFrame(this.applyPendingUpdates.bind(this), this.minPreviewRefreshInterval);\r\n }\r\n queuePreview(settingId) {\r\n this.pendingSettings[settingId] = true;\r\n this.throttledUpdate();\r\n }\r\n applyPendingUpdates() {\r\n //Cancel any pending updates in case this method was called directly.\r\n this.throttledUpdate.cancel();\r\n const pendingSettingIds = Object.keys(this.pendingSettings);\r\n if (pendingSettingIds.length === 0) {\r\n return;\r\n }\r\n this.updatePreview(pendingSettingIds);\r\n this.pendingSettings = {};\r\n }\r\n /**\r\n * Update the preview for the specified settings.\r\n *\r\n * This method is called by the throttled update function, but it can also be called\r\n * directly if necessary, e.g. to update the preview for all settings when the user\r\n * opens a settings screen for the first time. Note that calling it will *not* cancel\r\n * pending updates.\r\n *\r\n * @param settingIds\r\n */\r\n updatePreview(settingIds) {\r\n if (settingIds.length < 1) {\r\n return;\r\n }\r\n for (const settingId of settingIds) {\r\n const value = this.previewValueGetter(settingId, this.notFound);\r\n if (value !== this.notFound) {\r\n this.preview(settingId, value);\r\n }\r\n }\r\n }\r\n clearPreview() {\r\n this.throttledUpdate.cancel();\r\n this.pendingSettings = {};\r\n super.clearPreview();\r\n }\r\n }\r\n AmeCustomizable.ThrottledPreviewRegistry = ThrottledPreviewRegistry;\r\n /**\r\n * Creates a throttled function that runs the specified callback at most once\r\n * every `minInterval` milliseconds.\r\n *\r\n * The callback is always invoked using `requestAnimationFrame()`, so it will be delayed\r\n * until the next frame even if the required interval has already passed.\r\n */\r\n function throttleAnimationFrame(callback, minInterval = 0) {\r\n /**\r\n * Expected time between animation frames. Intervals shorter than this will be ineffective.\r\n */\r\n const expectedFrameTime = 1000 / 60;\r\n /**\r\n * The threshold at which we will use `setTimeout()` instead of `requestAnimationFrame()`.\r\n */\r\n const timeoutThreshold = Math.max(1000 / 20, expectedFrameTime * 2 + 1);\r\n const epsilon = 0.001;\r\n let requestAnimationFrameId = null;\r\n let timerId = null;\r\n let lastCallTimestamp = 0;\r\n let nextCallTimestamp = 0;\r\n function animationCallback() {\r\n requestAnimationFrameId = null;\r\n const now = Date.now();\r\n if (nextCallTimestamp <= now) {\r\n lastCallTimestamp = now;\r\n callback();\r\n return;\r\n }\r\n else {\r\n requestAnimationFrameId = window.requestAnimationFrame(animationCallback);\r\n }\r\n }\r\n const invoke = () => {\r\n if ((requestAnimationFrameId !== null) || (timerId !== null)) {\r\n return; //Already scheduled.\r\n }\r\n nextCallTimestamp = lastCallTimestamp + minInterval;\r\n const now = Date.now();\r\n if (nextCallTimestamp <= now) {\r\n nextCallTimestamp = now + expectedFrameTime - epsilon;\r\n }\r\n //Two-stage throttling: If the remaining time is large, use setTimeout().\r\n //If it's small, use requestAnimationFrame() and go frame by frame.\r\n const remainingTime = nextCallTimestamp - now;\r\n if (remainingTime > timeoutThreshold) {\r\n timerId = window.setTimeout(() => {\r\n timerId = null;\r\n requestAnimationFrameId = window.requestAnimationFrame(animationCallback);\r\n }, remainingTime - (expectedFrameTime / 2));\r\n }\r\n else {\r\n //Use requestAnimationFrame.\r\n requestAnimationFrameId = window.requestAnimationFrame(animationCallback);\r\n }\r\n };\r\n invoke.cancel = () => {\r\n if (requestAnimationFrameId !== null) {\r\n window.cancelAnimationFrame(requestAnimationFrameId);\r\n requestAnimationFrameId = null;\r\n }\r\n if (timerId !== null) {\r\n window.clearTimeout(timerId);\r\n timerId = null;\r\n }\r\n };\r\n return invoke;\r\n }\r\n //endregion\r\n})(AmeCustomizable || (AmeCustomizable = {}));\r\nexport var AmeCustomizableViewModel;\r\n(function (AmeCustomizableViewModel) {\r\n var SettingCollection = AmeCustomizable.SettingCollection;\r\n var Setting = AmeCustomizable.Setting;\r\n var ThrottledPreviewRegistry = AmeCustomizable.ThrottledPreviewRegistry;\r\n var SettingReaderRegistry = AmeCustomizable.SettingReaderRegistry;\r\n var lift = AmeMiniFunc.lift;\r\n class SimpleVm extends ThrottledPreviewRegistry {\r\n constructor(extraPreviewCondition = null) {\r\n const getSettingValue = (settingId, defaultResult) => {\r\n const setting = this.getOrCreateKnownSetting(settingId);\r\n if (setting !== null) {\r\n return setting.value();\r\n }\r\n return defaultResult;\r\n };\r\n super(getSettingValue, 40);\r\n this.previewDesired = ko.observable(false);\r\n this.settings = new SettingCollection();\r\n this.settingReaders = new SettingReaderRegistry();\r\n this.isPreviewPossible = ko.pureComputed(() => {\r\n return this.allPreviewUpdaters().length > 0;\r\n });\r\n this.isPreviewEnabled = ko.computed({\r\n read: () => {\r\n if (extraPreviewCondition !== null) {\r\n if (!extraPreviewCondition()) {\r\n return false;\r\n }\r\n }\r\n return this.getPreviewActiveState();\r\n },\r\n write: (newValue) => {\r\n this.previewDesired(newValue);\r\n if (newValue && !this.getPreviewActiveState()) {\r\n //Can't actually enable preview. Reset the checkbox/other input.\r\n this.isPreviewEnabled.notifySubscribers();\r\n }\r\n }\r\n });\r\n this.isPreviewEnabled.subscribe((newValue) => {\r\n if (newValue) {\r\n this.updatePreview(this.settings.getAllSettingIds());\r\n }\r\n else {\r\n this.clearPreview();\r\n }\r\n });\r\n this.settings.addChangeListener((setting) => {\r\n if (!this.isPreviewEnabled()) {\r\n return;\r\n }\r\n this.queuePreview(setting.id);\r\n });\r\n }\r\n getSettingObservable(settingId, unusedDefaultValue = null) {\r\n const result = this.getOrCreateKnownSetting(settingId);\r\n if (result !== null) {\r\n return result.value;\r\n }\r\n throw new Error('Unknown setting ID: ' + settingId);\r\n }\r\n getOrCreateKnownSetting(settingId) {\r\n const result = this.settings.get(settingId);\r\n if (result.isDefined()) {\r\n return result.get();\r\n }\r\n const foundValue = this.settingReaders.getValue(settingId);\r\n if (foundValue.isDefined()) {\r\n const setting = new Setting(settingId, foundValue.get());\r\n this.settings.add(setting);\r\n return setting;\r\n }\r\n return null;\r\n }\r\n registerSettingReader(reader, idPrefix = null) {\r\n this.settingReaders.registerValueReader(reader, idPrefix);\r\n }\r\n getPreviewActiveState() {\r\n return this.previewDesired() && this.isPreviewPossible();\r\n }\r\n getAllSettingValues() {\r\n return this.settings.getAllSettingValues();\r\n }\r\n /**\r\n * Reread all settings from the value readers. This will be used to reload settings\r\n * in case the underlying configuration is reset or a new configuration is loaded.\r\n */\r\n reloadAllSettings() {\r\n for (const settingId of this.settings.getAllSettingIds()) {\r\n lift([this.settings.get(settingId), this.settingReaders.getValue(settingId)], (setting, newValue) => setting.value(newValue));\r\n }\r\n }\r\n }\r\n AmeCustomizableViewModel.SimpleVm = SimpleVm;\r\n // noinspection JSUnusedGlobalSymbols -- Not used right now, but kept for testing and prototyping purposes.\r\n class NullVm {\r\n constructor() {\r\n this.settings = new SettingCollection();\r\n }\r\n getSettingObservable(settingId, defaultValue = null) {\r\n const existingSetting = this.settings.get(settingId);\r\n if (existingSetting.isDefined()) {\r\n return existingSetting.get().value;\r\n }\r\n const setting = new Setting(settingId, defaultValue);\r\n this.settings.add(setting);\r\n return setting.value;\r\n }\r\n getAllSettingValues() {\r\n return this.settings.getAllSettingValues();\r\n }\r\n }\r\n AmeCustomizableViewModel.NullVm = NullVm;\r\n})(AmeCustomizableViewModel || (AmeCustomizableViewModel = {}));\r\n//# sourceMappingURL=customizable.js.map"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/menu-styler-ui.bundle.js b/dist/menu-styler-ui.bundle.js index 68f522c..69b51a8 100644 --- a/dist/menu-styler-ui.bundle.js +++ b/dist/menu-styler-ui.bundle.js @@ -133,7 +133,7 @@ jQuery(function ($) { for (const presetName of Object.keys(colorPresets)) { //Remove empty string values (i.e. no color selected). This also //covers nulls and empty arrays/objects, but that shouldn't happen. - colorPresets[presetName] = _.omit(colorPresets[presetName], _.isEmpty); + colorPresets[presetName] = _.omitBy(colorPresets[presetName], _.isEmpty); //Remove the preset if it's empty. if (_.isEmpty(colorPresets[presetName])) { delete colorPresets[presetName]; diff --git a/dist/menu-styler-ui.bundle.js.map b/dist/menu-styler-ui.bundle.js.map index b41aa7f..be8d0f6 100644 --- a/dist/menu-styler-ui.bundle.js.map +++ b/dist/menu-styler-ui.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"menu-styler-ui.bundle.js","mappings":"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AAI,MAAM,IAAI,KAAK,IAAI,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW,KAAK,SAAS,KAAK,KAAK,KAAK,OAAO;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS,IAAI,MAAM,EAAE,MAAM;AAChE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF,SAAS;AACT;AACA;AACA;AACA,sDAAsD,iCAAiC;AACvF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,SAAS;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,gBAAgB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW,gBAAgB;AAC5C;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB,EAAE,SAAS;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kCAAkC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB,WAAW,gBAAgB;AAC5C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wEAAwE;AAC7E,CAAC,8CAA8C;AAC/C","sources":["webpack:///./extras/modules/menu-styler/menu-styler-ui.ts","webpack:///./extras/style-generator/style-generator.js"],"sourcesContent":["///\n///\n\nimport {AmeStyleGenerator} from '../../style-generator/style-generator.js';\nimport {AmeCustomizableViewModel} from '../../pro-customizables/assets/customizable.js';\n\ndeclare var wsAmeLodash: _.LoDashStatic;\n\ndeclare const ameMenuStylerConfig: {\n\tdefaults: Record,\n\tstylePreviewConfigs: AmeStyleGenerator.Preview.StyleGeneratorPreviewConfig[]\n};\n\njQuery(function ($: JQueryStatic) {\n\tconst _ = wsAmeLodash;\n\n\tconst styleConfigKey = 'menu_styles';\n\n\t/**\n\t * Utility class that tells WordPress to pin or unpin the admin menu as needed\n\t * when the menu dimensions or the top margin change.\n\t *\n\t * Uses throttling to avoid excessive updates.\n\t */\n\tclass StickyMenuUpdater {\n\t\tprivate readonly $document = $(document);\n\t\tprivate readonly $adminmenu = $('#adminmenu');\n\n\t\tprivate previousHeight: number | null = null;\n\t\tprivate previousWidth: number | null = null;\n\t\tprivate previousTopMargin: number | null = null;\n\n\t\tprivate readonly updateMenuPinState = _.throttle(() => {\n\t\t\tconst menuHeight = this.$adminmenu.outerHeight();\n\t\t\tconst menuWidth = this.$adminmenu.outerWidth();\n\t\t\tconst topMargin = parseInt(this.$adminmenu.css('margin-top'), 10);\n\n\t\t\tif (\n\t\t\t\t(menuHeight !== this.previousHeight)\n\t\t\t\t|| (menuWidth !== this.previousWidth)\n\t\t\t\t|| (topMargin !== this.previousTopMargin)\n\t\t\t) {\n\t\t\t\tthis.previousHeight = menuHeight;\n\t\t\t\tthis.previousWidth = menuWidth;\n\t\t\t\tthis.previousTopMargin = topMargin;\n\n\t\t\t\t//In practice, this update doesn't always work if done immediately.\n\t\t\t\t//Not sure why, maybe menu dimensions don't change instantly when, for example,\n\t\t\t\t//the user adds a logo image. Adding a small delay seems to help.\n\t\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t\t//The custom \"wp-pin-menu\" event was added to WP core in 2015. It can be used to update\n\t\t\t\t\t//the menu \"sticky\" state. I'm using triggerHandler() instead of trigger() because this\n\t\t\t\t\t//is what /wp-admin/js/widgets.js does. Hopefully, that will improve compatibility.\n\t\t\t\t\tthis.$document.triggerHandler('wp-pin-menu');\n\t\t\t\t});\n\t\t\t}\n\t\t}, 1000, {leading: true, trailing: true});\n\n\t\tpublic queueUpdate(): void {\n\t\t\tthis.updateMenuPinState();\n\t\t}\n\t}\n\n\tclass MenuStylerViewModel extends AmeCustomizableViewModel.SimpleVm {\n\t\tprivate readonly dialogOpenObservable: KnockoutObservable;\n\t\tprivate isFirstOpen = true;\n\t\tprivate $dialog: JQuery | null = null;\n\n\t\tprivate previewPreference: WsAmePreferenceCookie;\n\n\t\tprivate stickyMenuUpdater: StickyMenuUpdater = new StickyMenuUpdater();\n\n\t\tconstructor() {\n\t\t\t/**\n\t\t\t * This observable is initially stored in a local variable because TypeScript doesn't\n\t\t\t * allow accessing `this` in the constructor before calling super(), but we still\n\t\t\t * want to establish a dependency on the dialog open state so that preview gets enabled\n\t\t\t * when the dialog is open. The observable will get updated later.\n\t\t\t */\n\t\t\tconst extraPreviewCondition = ko.observable(false);\n\n\t\t\tsuper(extraPreviewCondition);\n\n\t\t\tthis.dialogOpenObservable = extraPreviewCondition;\n\t\t\tthis.previewPreference = new WsAmePreferenceCookie('MsPreviewEnabled', 90, true);\n\n\t\t\t//Read settings from the currently loaded admin menu configuration\n\t\t\t//using the aux-data API. Setting ID prefixes should already be registered.\n\t\t\tconst auxDataSettingReader = (settingId: string, defaultValue: any): any => {\n\t\t\t\tconst path = AmeEditorApi.configDataAdapter.mapSettingIdToPath(settingId);\n\t\t\t\tif (path === null) {\n\t\t\t\t\treturn defaultValue;\n\t\t\t\t}\n\n\t\t\t\tconst value = AmeEditorApi.configDataAdapter.getPath(path, this.notFound);\n\t\t\t\tif (value !== this.notFound) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (ameMenuStylerConfig.defaults.hasOwnProperty(settingId)) {\n\t\t\t\t\treturn ameMenuStylerConfig.defaults[settingId];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('Unknown aux config setting ID: ' + settingId);\n\t\t\t\t}\n\t\t\t};\n\t\t\tfor (const auxPrefix of AmeEditorApi.configDataAdapter.getKnownPrefixes()) {\n\t\t\t\tthis.registerSettingReader(auxDataSettingReader, auxPrefix);\n\t\t\t}\n\n\t\t\tfor (const previewConfig of ameMenuStylerConfig.stylePreviewConfigs) {\n\t\t\t\tconst previewInstance = new AmeStyleGenerator.Preview.StyleGeneratorPreview(previewConfig);\n\t\t\t\tthis.registerPreviewUpdater(previewInstance.getPreviewableSettingIDs(), previewInstance);\n\t\t\t}\n\n\t\t\t$(document).trigger('adminMenuEditor:menuStylerUiRegister', [this]);\n\t\t}\n\n\t\tsaveChanges() {\n\t\t\tconst settingsById = this.getAllSettingValues();\n\n\t\t\t//Sort by length of the setting ID and then by the ID itself to ensure parent settings\n\t\t\t//are updated before their children. For example, this matters for color presets where\n\t\t\t//the \"activePreset\" setting maps to the \"[global]\" property of the \"colorPresets\" setting.\n\t\t\tconst sortedIds = Object.keys(settingsById);\n\t\t\tsortedIds.sort((a, b) => {\n\t\t\t\tif (a.length !== b.length) {\n\t\t\t\t\treturn a.length - b.length;\n\t\t\t\t}\n\t\t\t\treturn a.localeCompare(b);\n\t\t\t});\n\n\t\t\t//Write all settings into a new object, then save the top-level properties\n\t\t\t//of that. This way stale and empty settings will automatically be removed.\n\t\t\tconst updatedConfig: Record = {};\n\t\t\tfor (const settingId of sortedIds) {\n\t\t\t\tconst path = AmeEditorApi.configDataAdapter.mapSettingIdToPath(settingId);\n\t\t\t\tif (path === null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst value = settingsById[settingId];\n\t\t\t\t//To save space, don't store null values. This could be extended by using\n\t\t\t\t//the \"deleteWhenBlank\" property of the setting definition.\n\t\t\t\tif (value === null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t_.set(updatedConfig, path, value);\n\t\t\t}\n\n\t\t\t//Special: Update the last modified timestamp for menu styles.\n\t\t\t_.set(updatedConfig, [styleConfigKey, '_lastModified'], (new Date()).toISOString());\n\n\t\t\t//Special: Remove empty color presets.\n\t\t\tconst colorPresets: Record = _.get(updatedConfig, ['color_presets'], {});\n\t\t\tfor (const presetName of Object.keys(colorPresets)) {\n\t\t\t\t//Remove empty string values (i.e. no color selected). This also\n\t\t\t\t//covers nulls and empty arrays/objects, but that shouldn't happen.\n\t\t\t\tcolorPresets[presetName] = _.omit(colorPresets[presetName], _.isEmpty);\n\t\t\t\t//Remove the preset if it's empty.\n\t\t\t\tif (_.isEmpty(colorPresets[presetName])) {\n\t\t\t\t\tdelete colorPresets[presetName];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Finally, write the top-level properties to the menu configuration.\n\t\t\tfor (const key in updatedConfig) {\n\t\t\t\tif (!updatedConfig.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = updatedConfig[key];\n\t\t\t\tAmeEditorApi.configDataAdapter.setPath(key, value);\n\t\t\t}\n\n\t\t\t$(document).trigger('adminMenuEditor:menuConfigChanged');\n\t\t}\n\n\t\tprotected isDialogOpen(newValue: boolean | null = null): boolean {\n\t\t\tif (!this.dialogOpenObservable) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (newValue !== null) {\n\t\t\t\tthis.dialogOpenObservable(newValue);\n\t\t\t\treturn newValue;\n\t\t\t}\n\t\t\treturn this.dialogOpenObservable();\n\t\t}\n\n\t\tprotected getPreviewActiveState(): boolean {\n\t\t\t//Disable preview when the dialog is not open.\n\t\t\tif (!this.isDialogOpen()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn super.getPreviewActiveState();\n\t\t}\n\n\t\tupdatePreview(settingIds: string[]) {\n\t\t\tsuper.updatePreview(settingIds);\n\t\t\tthis.stickyMenuUpdater.queueUpdate();\n\t\t}\n\n\t\tsetDialog($dialog: JQuery) {\n\t\t\tthis.$dialog = $dialog;\n\n\t\t\tlet $overlay: JQuery | null = null;\n\n\t\t\t$dialog.on('dialogopen', () => {\n\t\t\t\tthis.isDialogOpen(true);\n\t\t\t\tthis.onOpenDialog();\n\n\t\t\t\t//Add a custom class to the overlay so that we can style it.\n\t\t\t\t$overlay = $dialog.closest('.ui-dialog').nextAll('.ui-widget-overlay').first();\n\t\t\t\t$overlay.addClass('ame-ms-dialog-overlay');\n\t\t\t});\n\t\t\t$dialog.on('dialogclose', () => {\n\t\t\t\tthis.isDialogOpen(false);\n\n\t\t\t\tif ($overlay) {\n\t\t\t\t\t$overlay.removeClass('ame-ms-dialog-overlay');\n\t\t\t\t\t$overlay = null;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprotected onOpenDialog() {\n\t\t\tif (!this.isFirstOpen) {\n\t\t\t\tthis.reloadAllSettings();\n\t\t\t}\n\n\t\t\tif (this.isFirstOpen) {\n\t\t\t\tthis.isFirstOpen = false;\n\t\t\t\t//Load the preview state from a cookie.\n\t\t\t\tthis.isPreviewEnabled(this.previewPreference.readAndRefresh(true));\n\t\t\t}\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in the KO template.\n\t\tonConfirmDialog() {\n\t\t\t//Save the preview state in a cookie.\n\t\t\tthis.previewPreference.write(this.isPreviewEnabled());\n\n\t\t\tthis.saveChanges();\n\t\t\tthis.closeDialog();\n\t\t}\n\n\t\tonCancelDialog() {\n\t\t\tthis.closeDialog();\n\t\t}\n\n\t\tprotected closeDialog() {\n\t\t\tif (this.$dialog !== null) {\n\t\t\t\tthis.$dialog.dialog('close');\n\t\t\t}\n\t\t}\n\t}\n\n\tconst $styleDialog = $('#ws-ame-menu-style-settings');\n\tlet isDialogInitialized = false;\n\n\tfunction initializeDialog() {\n\t\t$styleDialog.dialog({\n\t\t\tautoOpen: false,\n\t\t\tcloseText: ' ',\n\t\t\tdraggable: false,\n\t\t\tmodal: true,\n\t\t\t//Dialog dimensions and position are set in CSS.\n\t\t\tminWidth: 300,\n\t\t\theight: 400,\n\t\t\tclasses: {\n\t\t\t\t'ui-dialog': 'ui-corner-all ws-ame-menu-style-dialog',\n\t\t\t}\n\t\t});\n\n\t\tisDialogInitialized = true;\n\n\t\tconst vm = new MenuStylerViewModel();\n\t\t(window as any)['ameMenuStylerVm'] = vm;\n\n\t\tko.applyBindings(vm, $styleDialog[0]);\n\t\tvm.setDialog($styleDialog);\n\t}\n\n\t//Open the dialog when the user clicks the style button.\n\t$('#ws_edit_menu_styles').on('click', () => {\n\t\t//Optimization: Initialize the dialog on the first click.\n\t\tif (!isDialogInitialized) {\n\t\t\tinitializeDialog();\n\t\t}\n\n\t\t//Reset the scroll position of the tab content area.\n\t\t$styleDialog.find('.ame-tp-content').scrollTop(0);\n\n\t\t$styleDialog.dialog('open');\n\t});\n});","export var AmeStyleGenerator;\r\n(function (AmeStyleGenerator) {\r\n const $ = jQuery;\r\n class ValueDescriptor {\r\n }\r\n class ConstantValue extends ValueDescriptor {\r\n constructor(value) {\r\n super();\r\n this.value = value;\r\n }\r\n getValue() {\r\n return this.value;\r\n }\r\n }\r\n class ArrayValue extends ValueDescriptor {\r\n constructor(items) {\r\n super();\r\n this.items = items;\r\n }\r\n getValue() {\r\n return this.items.map(item => item.getValue());\r\n }\r\n getItemDescriptors() {\r\n return this.items;\r\n }\r\n }\r\n class SettingReference extends ValueDescriptor {\r\n constructor(settingId, valueGetter) {\r\n super();\r\n this.settingId = settingId;\r\n this.valueGetter = valueGetter;\r\n }\r\n getValue() {\r\n return this.valueGetter(this.settingId);\r\n }\r\n }\r\n class VariableReference extends ValueDescriptor {\r\n constructor(name, valueGetter) {\r\n super();\r\n this.name = name;\r\n this.valueGetter = valueGetter;\r\n }\r\n getValue() {\r\n return this.valueGetter(this.name);\r\n }\r\n }\r\n class FunctionCall extends ValueDescriptor {\r\n constructor(args, callback) {\r\n super();\r\n this.args = args;\r\n this.callback = callback;\r\n }\r\n getValue() {\r\n return this.callback(this.resolveArgs(this.args));\r\n }\r\n resolveArgs(args) {\r\n if (Array.isArray(args)) {\r\n return args.map(arg => arg.getValue());\r\n }\r\n return Object.keys(args).reduce((result, key) => {\r\n result[key] = args[key].getValue();\r\n return result;\r\n }, {});\r\n }\r\n }\r\n //endregion\r\n function isEmptyCssValue(value) {\r\n return (typeof value === 'undefined') || (value === '') || (value === null);\r\n }\r\n function convertToRgba(color, opacity = 1.0) {\r\n color = color.trim();\r\n if (color === '') {\r\n return 'transparent';\r\n }\r\n //Strip the leading hash, if any.\r\n if (color[0] === '#') {\r\n color = color.substring(1);\r\n }\r\n //If the color is in the shorthand format, expand it.\r\n if (color.length === 3) {\r\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\r\n }\r\n //The color should now be in the full 6-digit format. Convert it to RGBA.\r\n if (color.length === 6) {\r\n const red = parseInt(color.substring(0, 2), 16);\r\n const green = parseInt(color.substring(2, 4), 16);\r\n const blue = parseInt(color.substring(4, 6), 16);\r\n return `rgba(${red}, ${green}, ${blue}, ${opacity})`;\r\n }\r\n //The color may be invalid, or it's not in a hex format we recognize.\r\n return color;\r\n }\r\n function uniqueArrayValues(array) {\r\n return array.filter((value, index) => array.indexOf(value) === index);\r\n }\r\n function constrain(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n }\r\n function modifyHexColorAsHsl(args, operation) {\r\n const color = args.color || '';\r\n if (isEmptyCssValue(color)) {\r\n return '';\r\n }\r\n const hue = args.hue || null;\r\n const saturation = args.saturation || null;\r\n const lightness = args.lightness || null;\r\n if ((hue === null) && (saturation === null) && (lightness === null)) {\r\n return color;\r\n }\r\n let output = $.Color(color);\r\n output = operation(output, hue, saturation, lightness);\r\n return output.toHexString();\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used dynamically by declaration generators received from the server.\r\n const builtinFunctions = {\r\n simpleProperty: function (args) {\r\n if (isEmptyCssValue(args.value)) {\r\n return [];\r\n }\r\n return [args.name + ': ' + args.value + ';'];\r\n },\r\n formatLength: function (args) {\r\n if (isEmptyCssValue(args.value)) {\r\n return '';\r\n }\r\n //Normalize numeric values. For example, while JS accepts \"1.\" as a number,\r\n //\"1.px\" is not a valid CSS length value, so it should be converted to \"1px\".\r\n const numericValue = parseFloat(String(args.value));\r\n if (isNaN(numericValue)) {\r\n return '';\r\n }\r\n return '' + numericValue + (args.unit || '');\r\n },\r\n shadow: function (args) {\r\n const mode = args.mode || 'default';\r\n const color = args.color || '';\r\n if (mode === 'default') {\r\n return [];\r\n }\r\n if ((mode === 'none') || (color === '') || (color === null) || (color === 'transparent')) {\r\n return ['box-shadow: none;'];\r\n }\r\n if (mode !== 'custom') {\r\n return [];\r\n }\r\n const components = [];\r\n if (args.inset) {\r\n components.push('inset');\r\n }\r\n const horizontal = args['offset-x'] || 0;\r\n const vertical = args['offset-y'] || 0;\r\n const blur = args.blur || 0;\r\n const spread = args.spread || 0;\r\n components.push(`${horizontal}px ${vertical}px ${blur}px ${spread}px`);\r\n const colorOpacity = args.colorOpacity || 1.0;\r\n if (colorOpacity < 1.0) {\r\n components.push(convertToRgba(color, colorOpacity));\r\n }\r\n else {\r\n components.push(color);\r\n }\r\n return [`box-shadow: ${components.join(' ')};`];\r\n },\r\n boxSides: function (args) {\r\n if (typeof args.cssPropertyPrefix !== 'string') {\r\n throw new Error('Invalid config for the boxSides generator: missing cssPropertyPrefix');\r\n }\r\n const compositeValue = args.value || {};\r\n const unit = compositeValue.unit || '';\r\n const declarations = [];\r\n for (const side of ['top', 'right', 'bottom', 'left']) {\r\n const value = compositeValue[side];\r\n if (isEmptyCssValue(value)) {\r\n continue;\r\n }\r\n const property = args.cssPropertyPrefix + side;\r\n declarations.push(`${property}: ${value}${unit};`);\r\n }\r\n return declarations;\r\n },\r\n firstNonEmpty(args) {\r\n for (const arg of args) {\r\n if (!isEmptyCssValue(arg)) {\r\n return arg;\r\n }\r\n }\r\n return null;\r\n },\r\n /**\r\n * Take a HEX color, convert it to HSL to edit its components,\r\n * then convert back to HEX.\r\n *\r\n * @param args\r\n */\r\n editHexAsHsl: function (args) {\r\n return modifyHexColorAsHsl(args, (color, hue, saturation, lightness) => {\r\n if (hue !== null) {\r\n color = color.hue(hue);\r\n }\r\n if (saturation !== null) {\r\n color = color.saturation(saturation);\r\n }\r\n if (lightness !== null) {\r\n color = color.lightness(lightness);\r\n }\r\n return color;\r\n });\r\n },\r\n adjustHexAsHsl: function (args) {\r\n return modifyHexColorAsHsl(args, (color, hue, saturation, lightness) => {\r\n if (hue !== null) {\r\n color = color.hue(constrain(color.hue() + hue, 0, 360));\r\n }\r\n if (saturation !== null) {\r\n color = color.saturation(constrain(color.saturation() + saturation, 0, 1.0));\r\n }\r\n if (lightness !== null) {\r\n color = color.lightness(constrain(color.lightness() + lightness, 0, 1.0));\r\n }\r\n return color;\r\n });\r\n },\r\n mixColors: function (args) {\r\n const color1 = args.color1 || '';\r\n const color2 = args.color2 || '';\r\n if (isEmptyCssValue(color1) || isEmptyCssValue(color2)) {\r\n return '';\r\n }\r\n const weight = args.weight || 50;\r\n if (weight <= 0) {\r\n return color2;\r\n }\r\n else if (weight >= 100) {\r\n return color1;\r\n }\r\n return $.Color(color2).transition($.Color(color1), weight / 100).toHexString();\r\n },\r\n changeLightness: function (args) {\r\n const color = args.color || '';\r\n if (isEmptyCssValue(color)) {\r\n return '';\r\n }\r\n const amount = args.amount || 0;\r\n if (amount === 0) {\r\n return color;\r\n }\r\n let output = $.Color(color);\r\n //Amount is a number between 0 and 100, while lightness is between 0.0 and 1.0.\r\n let newLightness = output.lightness() + (amount / 100);\r\n //Clamp to 0.0 - 1.0.\r\n newLightness = constrain(newLightness, 0.0, 1.0);\r\n return output.lightness(newLightness).toHexString();\r\n },\r\n darken: function (args) {\r\n const color = args.color || '';\r\n const amount = args.amount || 0;\r\n return builtinFunctions.changeLightness({ color, amount: -Math.abs(amount) });\r\n },\r\n lighten: function (args) {\r\n const color = args.color || '';\r\n const amount = args.amount || 0;\r\n return builtinFunctions.changeLightness({ color, amount: Math.abs(amount) });\r\n },\r\n compare: function (args) {\r\n const value1 = args.value1;\r\n const value2 = args.value2;\r\n const operator = args.op;\r\n const thenResult = (typeof args.thenResult !== 'undefined') ? args.thenResult : true;\r\n const elseResult = (typeof args.elseResult !== 'undefined') ? args.elseResult : null;\r\n let result;\r\n switch (operator) {\r\n case '==':\r\n result = value1 == value2;\r\n break;\r\n case '!=':\r\n result = value1 != value2;\r\n break;\r\n case '>':\r\n result = value1 > value2;\r\n break;\r\n case '>=':\r\n result = value1 >= value2;\r\n break;\r\n case '<':\r\n result = value1 < value2;\r\n break;\r\n case '<=':\r\n result = value1 <= value2;\r\n break;\r\n default:\r\n throw new Error(`Unknown operator: ${operator}`);\r\n }\r\n return result ? thenResult : elseResult;\r\n },\r\n ifTruthy: function (args) {\r\n const value = args.value;\r\n const thenResult = (typeof args.thenResult !== 'undefined') ? args.thenResult : true;\r\n const elseResult = (typeof args.elseResult !== 'undefined') ? args.elseResult : null;\r\n return value ? thenResult : elseResult;\r\n },\r\n ifSome: function (args) {\r\n const values = args.values;\r\n const thenResult = args.thenResult;\r\n const elseResult = (typeof args.elseResult !== 'undefined') ? args.elseResult : null;\r\n for (const value of values) {\r\n if (!!value) {\r\n return thenResult;\r\n }\r\n }\r\n return elseResult;\r\n },\r\n ifAll: function (args) {\r\n const values = args.values;\r\n const thenResult = args.thenResult;\r\n const elseResult = args.elseResult !== undefined ? args.elseResult : null;\r\n if (!values || (values.length === 0)) {\r\n return elseResult;\r\n }\r\n for (const value of values) {\r\n if (!value) {\r\n return elseResult;\r\n }\r\n }\r\n return thenResult;\r\n },\r\n ifImageSettingContainsImage: function (args) {\r\n const thenResult = args.thenResult !== undefined ? args.thenResult : true;\r\n const elseResult = args.elseResult !== undefined ? args.elseResult : null;\r\n if ((typeof args.value !== 'object') || !args.value) {\r\n return elseResult;\r\n }\r\n const image = args.value;\r\n const hasAttachment = !!image.attachmentId;\r\n const hasExternalUrl = !!image.externalUrl;\r\n const hasImage = hasAttachment || hasExternalUrl;\r\n return hasImage ? thenResult : elseResult;\r\n }\r\n };\r\n let Preview;\r\n (function (Preview) {\r\n const $ = jQuery;\r\n function isConditionalAtRuleConfig(config) {\r\n if ((typeof config !== 'object') || (config === null)) {\r\n return false;\r\n }\r\n const configAsRecord = config;\r\n return ((typeof configAsRecord['t'] === 'string')\r\n && (configAsRecord['t'] === 'conditionalAtRule')\r\n && (typeof configAsRecord['identifier'] === 'string'));\r\n }\r\n function isRuleSetConfig(config) {\r\n return ((config !== null)\r\n && (Array.isArray(config['selectors']))\r\n && (Array.isArray(config['generators'])));\r\n }\r\n const inactiveSettingMarker = { '_ame_inactive_setting': true };\r\n class PreviewSession {\r\n constructor(config) {\r\n this.settings = {};\r\n this.valueReaders = new Set();\r\n this.notFound = {};\r\n this.variables = {};\r\n this.styleBlocks = [];\r\n this.stylesheetsToDisable = [];\r\n this.stylesheetWasEnabled = {};\r\n /**\r\n * Whether this is the first time the preview is being updated.\r\n * This is set to false after preview() is called for the first time.\r\n */\r\n this._isBeforeFirstUpdate = true;\r\n //Optimization: Create bound getters once instead of every time we need\r\n //to create a setting or variable reference.\r\n this.settingValueGetter = this.getSettingPreviewValue.bind(this);\r\n this.variableValueGetter = (variableName) => {\r\n if (variableName in this.variables) {\r\n return this.variables[variableName].getValue();\r\n }\r\n return null;\r\n };\r\n //Optionally, disable already generated custom stylesheets while the preview\r\n //is active to prevent old settings from interfering with the preview of new settings.\r\n if (Array.isArray(config.stylesheetsToDisable)) {\r\n this.stylesheetsToDisable = config.stylesheetsToDisable;\r\n }\r\n //Variables\r\n for (const variableName in config.variables) {\r\n if (!config.variables.hasOwnProperty(variableName)) {\r\n continue;\r\n }\r\n this.variables[variableName] = this.createValueDescriptor(config.variables[variableName], true);\r\n }\r\n //CSS statement groups\r\n for (const conditionConfig of config.statementGroups) {\r\n const statements = this.createCssStatements(conditionConfig.statements);\r\n if (statements.length < 1) {\r\n continue;\r\n }\r\n const condition = this.createValueDescriptor(conditionConfig.expression, true);\r\n const usedSettingIds = this.getSettingIdsUsedBy(condition);\r\n const conditionCallback = () => {\r\n //For performance, conditions that reference settings should\r\n //only be checked when at least one setting is active.\r\n if (usedSettingIds.length > 0) {\r\n if (!usedSettingIds.some((id) => this.isSettingActive(id))) {\r\n return false;\r\n }\r\n }\r\n const isTruthy = condition.getValue();\r\n return !!isTruthy; //Convert to boolean.\r\n };\r\n this.styleBlocks.push(new PreviewStyleBlock(statements, conditionCallback));\r\n }\r\n }\r\n createValueDescriptor(data, allowUnknownVariables = false) {\r\n switch (data.t) {\r\n case 'constant':\r\n return new ConstantValue(data.value);\r\n case 'array':\r\n return new ArrayValue(data.items.map((valueData) => this.createValueDescriptor(valueData, allowUnknownVariables)));\r\n case 'setting':\r\n this.registerPreviewableSettingId(data.id);\r\n return new SettingReference(data.id, this.settingValueGetter);\r\n case 'var':\r\n if (!this.variables.hasOwnProperty(data.name) && !allowUnknownVariables) {\r\n throw new Error('Unknown variable: ' + data.name);\r\n }\r\n return new VariableReference(data.name, this.variableValueGetter);\r\n case 'funcCall':\r\n let functionName;\r\n if (data.name in builtinFunctions) {\r\n functionName = data.name;\r\n }\r\n else {\r\n throw new Error('Unknown function: ' + data.name);\r\n }\r\n const func = builtinFunctions[functionName];\r\n //Initialize the function arguments.\r\n let args;\r\n if (Array.isArray(data.args)) {\r\n args = data.args.map(arg => this.createValueDescriptor(arg, allowUnknownVariables));\r\n }\r\n else {\r\n args = {};\r\n for (const argName in data.args) {\r\n if (!data.args.hasOwnProperty(argName)) {\r\n continue;\r\n }\r\n args[argName] = this.createValueDescriptor(data.args[argName], allowUnknownVariables);\r\n }\r\n }\r\n // @ts-ignore - Can't really statically check this since the values come from the server.\r\n return new FunctionCall(args, func);\r\n }\r\n }\r\n /**\r\n * Get the IDs of all settings that are referenced by the given descriptor.\r\n *\r\n * @param descriptor\r\n * @private\r\n */\r\n getSettingIdsUsedBy(descriptor) {\r\n if (descriptor instanceof SettingReference) {\r\n return [descriptor.settingId];\r\n }\r\n if (descriptor instanceof ArrayValue) {\r\n let result = [];\r\n for (const item of descriptor.getItemDescriptors()) {\r\n result = result.concat(this.getSettingIdsUsedBy(item));\r\n }\r\n return uniqueArrayValues(result);\r\n }\r\n if (descriptor instanceof FunctionCall) {\r\n let result = [];\r\n const args = descriptor.args;\r\n if (Array.isArray(args)) {\r\n for (const arg of args) {\r\n result = result.concat(this.getSettingIdsUsedBy(arg));\r\n }\r\n }\r\n else {\r\n for (const argName in args) {\r\n if (args.hasOwnProperty(argName)) {\r\n result = result.concat(this.getSettingIdsUsedBy(args[argName]));\r\n }\r\n }\r\n }\r\n return uniqueArrayValues(result);\r\n }\r\n if (descriptor instanceof VariableReference) {\r\n const varDef = this.getVariableDefinition(descriptor.name);\r\n if (varDef === null) {\r\n return [];\r\n }\r\n return this.getSettingIdsUsedBy(varDef);\r\n }\r\n return [];\r\n }\r\n getVariableDefinition(variableName) {\r\n if (!this.variables.hasOwnProperty(variableName)) {\r\n return null;\r\n }\r\n return this.variables[variableName];\r\n }\r\n createCssStatements(configs) {\r\n let results = [];\r\n for (const config of configs) {\r\n if (isRuleSetConfig(config)) {\r\n results.push(this.createRuleSetFromConfig(config));\r\n }\r\n else if (isConditionalAtRuleConfig(config)) {\r\n results.push(new ConditionalAtRule(config.identifier, config.condition, (typeof config.nestedStatements === 'undefined')\r\n ? []\r\n : this.createCssStatements(config.nestedStatements)));\r\n }\r\n else {\r\n console.error('Unknown CSS statement type: ', config);\r\n }\r\n }\r\n return results;\r\n }\r\n createRuleSetFromConfig(config, parent = null) {\r\n const generatorWrappers = this.makeGeneratorWrappers(config.generators);\r\n const ruleSet = new CssRuleSet(config.selectors, generatorWrappers, parent);\r\n const nestedRuleSets = this.createNestedRuleSets(config.nestedStatements, ruleSet);\r\n ruleSet.setNestedRuleSets(nestedRuleSets);\r\n return ruleSet;\r\n }\r\n createNestedRuleSets(configs, parent = null) {\r\n let results = [];\r\n if (!configs) {\r\n return results;\r\n }\r\n for (const config of configs) {\r\n if (!isRuleSetConfig(config)) {\r\n throw new Error('A CSS rule set can only contain other rule sets, not other types of statements.');\r\n }\r\n results.push(this.createRuleSetFromConfig(config, parent));\r\n }\r\n return results;\r\n }\r\n getPreviewableSettingIDs() {\r\n return Object.keys(this.settings);\r\n }\r\n preview(settingId, value, otherSettingReader) {\r\n if (this._isBeforeFirstUpdate) {\r\n this._isBeforeFirstUpdate = false;\r\n this.disableAssociatedStylesheets();\r\n }\r\n this.valueReaders.add(otherSettingReader);\r\n if (!this.settings.hasOwnProperty(settingId)) {\r\n this.settings[settingId] = ko.observable(value);\r\n }\r\n else {\r\n this.settings[settingId](value);\r\n }\r\n }\r\n dispose() {\r\n //Dispose of all style blocks.\r\n for (const block of this.styleBlocks) {\r\n block.dispose();\r\n }\r\n this.reEnableAssociatedStylesheets();\r\n }\r\n disableAssociatedStylesheets() {\r\n for (const stylesheetSelector of this.stylesheetsToDisable) {\r\n const $link = $(stylesheetSelector);\r\n if ($link.length > 0) {\r\n this.stylesheetWasEnabled[stylesheetSelector] = $link.prop('disabled');\r\n $link.prop('disabled', true);\r\n }\r\n }\r\n }\r\n reEnableAssociatedStylesheets() {\r\n for (const stylesheetSelector of this.stylesheetsToDisable) {\r\n const $link = $(stylesheetSelector);\r\n if (($link.length > 0) && this.stylesheetWasEnabled.hasOwnProperty(stylesheetSelector)) {\r\n $link.prop('disabled', this.stylesheetWasEnabled[stylesheetSelector]);\r\n }\r\n }\r\n }\r\n isSettingActive(settingId) {\r\n if (this.settings.hasOwnProperty(settingId)) {\r\n return this.settings[settingId]() !== inactiveSettingMarker;\r\n }\r\n return false;\r\n }\r\n getSettingPreviewValue(settingId) {\r\n if (!this.settings.hasOwnProperty(settingId)) {\r\n const value = this.getSettingFromReaders(settingId);\r\n this.settings[settingId] = ko.observable(value).extend({ deferred: true });\r\n }\r\n const observable = this.settings[settingId];\r\n let value = observable();\r\n if (value === inactiveSettingMarker) {\r\n value = this.getSettingFromReaders(settingId);\r\n observable(value);\r\n }\r\n return value;\r\n }\r\n getSettingFromReaders(settingId) {\r\n for (const reader of this.valueReaders) {\r\n const value = reader(settingId, this.notFound);\r\n if (value !== this.notFound) {\r\n return value;\r\n }\r\n }\r\n throw new Error('Setting not found for preview: ' + settingId);\r\n }\r\n makeGeneratorWrappers(generatorConfigs) {\r\n let generatorWrappers = [];\r\n for (const generatorConfig of generatorConfigs) {\r\n const wrapper = this.makeDeclarationGeneratorWrapper(generatorConfig);\r\n if (wrapper !== null) {\r\n generatorWrappers.push(wrapper);\r\n }\r\n }\r\n return generatorWrappers;\r\n }\r\n makeDeclarationGeneratorWrapper(config) {\r\n const generator = this.createValueDescriptor(config);\r\n return new DeclarationGeneratorWrapper(generator, this);\r\n }\r\n registerPreviewableSettingId(settingId) {\r\n if (!this.settings.hasOwnProperty(settingId)) {\r\n this.settings[settingId] = ko.observable(inactiveSettingMarker);\r\n }\r\n }\r\n get isBeforeFirstUpdate() {\r\n return this._isBeforeFirstUpdate;\r\n }\r\n }\r\n /**\r\n * Preview manager for the style generator.\r\n *\r\n * This is a thin wrapper around the PreviewSession class. It initializes the session\r\n * as needed and destroys it when the preview is cleared. This makes it simpler to manage\r\n * active settings, style blocks, and CSS rule-sets: instead of having to carefully\r\n * track dependencies and deactivate/reactivate them in the right order whenever the preview\r\n * is disabled/enabled, we can just destroy the session and start over.\r\n */\r\n class StyleGeneratorPreview {\r\n constructor(config) {\r\n this.config = config;\r\n this.currentSession = null;\r\n }\r\n getOrCreateSession() {\r\n if (this.currentSession === null) {\r\n this.currentSession = new PreviewSession(this.config);\r\n }\r\n return this.currentSession;\r\n }\r\n getPreviewableSettingIDs() {\r\n return this.getOrCreateSession().getPreviewableSettingIDs();\r\n }\r\n preview(settingId, value, otherSettingReader) {\r\n const session = this.getOrCreateSession();\r\n const shouldPreviewAll = (this.config.previewAllOnFirstUpdate && session.isBeforeFirstUpdate);\r\n session.preview(settingId, value, otherSettingReader);\r\n if (shouldPreviewAll) {\r\n //Preview all registered settings the first time the preview is updated.\r\n const notFound = {};\r\n for (const otherId of session.getPreviewableSettingIDs()) {\r\n const otherValue = otherSettingReader(otherId, notFound);\r\n if ((otherId !== settingId) && (otherValue !== notFound)) {\r\n session.preview(otherId, otherValue, otherSettingReader);\r\n }\r\n }\r\n }\r\n }\r\n clearPreview() {\r\n if (this.currentSession !== null) {\r\n this.currentSession.dispose();\r\n this.currentSession = null;\r\n }\r\n }\r\n }\r\n Preview.StyleGeneratorPreview = StyleGeneratorPreview;\r\n class DeclarationGeneratorWrapper {\r\n constructor(generator, settingSource) {\r\n this.generator = generator;\r\n this.settingSource = settingSource;\r\n //Introspect the generator and see which settings it uses.\r\n //This will be useful to determine if the generator is active.\r\n this.usedSettingIds = DeclarationGeneratorWrapper.findReferencedSettingIds(generator, settingSource);\r\n this.cssDeclarations = ko.computed({\r\n read: () => this.getDeclarations(),\r\n deferEvaluation: true,\r\n }).extend({ deferred: true });\r\n }\r\n /**\r\n * Recursively find all settings used by a value descriptor (such as a function call).\r\n *\r\n * @param {ValueDescriptor} thing\r\n * @param variableSource Needed to get variable definitions and not just the final values.\r\n */\r\n static findReferencedSettingIds(thing, variableSource) {\r\n let settingIds = [];\r\n if (thing instanceof SettingReference) {\r\n settingIds.push(thing.settingId);\r\n }\r\n else if (thing instanceof FunctionCall) {\r\n if (Array.isArray(thing.args)) {\r\n for (const arg of thing.args) {\r\n settingIds = settingIds.concat(DeclarationGeneratorWrapper.findReferencedSettingIds(arg, variableSource));\r\n }\r\n }\r\n else {\r\n for (const key in thing.args) {\r\n settingIds = settingIds.concat(DeclarationGeneratorWrapper.findReferencedSettingIds(thing.args[key], variableSource));\r\n }\r\n }\r\n }\r\n else if (thing instanceof VariableReference) {\r\n const value = variableSource.getVariableDefinition(thing.name);\r\n if (value !== null) {\r\n settingIds = settingIds.concat(DeclarationGeneratorWrapper.findReferencedSettingIds(value, variableSource));\r\n }\r\n }\r\n return settingIds;\r\n }\r\n isActive() {\r\n //Check if any of the input settings are active.\r\n let hasSettingLookups = false;\r\n for (const settingId of this.usedSettingIds) {\r\n hasSettingLookups = true;\r\n if (this.settingSource.isSettingActive(settingId)) {\r\n return true;\r\n }\r\n }\r\n //If there are no input settings, the generator is always active: it just\r\n //generates a fixed declaration.\r\n return !hasSettingLookups;\r\n }\r\n getDeclarations() {\r\n return this.generator.getValue();\r\n }\r\n dispose() {\r\n this.cssDeclarations.dispose();\r\n }\r\n }\r\n class CssStatement {\r\n constructor() {\r\n this.cssText = ko.computed({\r\n read: () => this.generateCss(),\r\n deferEvaluation: true,\r\n }).extend({ deferred: true });\r\n }\r\n dispose() {\r\n //Dispose the CSS text observable.\r\n this.cssText.dispose();\r\n }\r\n }\r\n class CssRuleSet extends CssStatement {\r\n constructor(selectors, declarationSources, parent = null) {\r\n super();\r\n this.declarationSources = declarationSources;\r\n this.nestedRuleSets = ko.observableArray([]);\r\n if (parent === null) {\r\n this.effectiveSelectors = selectors;\r\n }\r\n else {\r\n this.effectiveSelectors = CssRuleSet.combineSelectors(selectors, parent.effectiveSelectors);\r\n }\r\n this.selectorText = this.effectiveSelectors.join(', ');\r\n }\r\n static combineSelectors(selectors, parentSelectors) {\r\n const combinedSelectors = [];\r\n for (const selector of selectors) {\r\n if (selector === '') {\r\n continue;\r\n }\r\n if (selector.includes('&')) {\r\n //Insert the parent selectors into the current selector at the position of the \"&\".\r\n for (const parentSelector of parentSelectors) {\r\n combinedSelectors.push(selector.replace('&', parentSelector.trim()));\r\n }\r\n }\r\n else {\r\n //Just append the current selector to the parent selectors.\r\n for (const parentSelector of parentSelectors) {\r\n combinedSelectors.push(`${parentSelector} ${selector}`);\r\n }\r\n }\r\n }\r\n return combinedSelectors;\r\n }\r\n setNestedRuleSets(ruleSets) {\r\n //Dispose the old rule sets that are not part of the new list.\r\n for (const oldRuleSet of this.nestedRuleSets()) {\r\n if (ruleSets.indexOf(oldRuleSet) === -1) {\r\n oldRuleSet.dispose();\r\n }\r\n }\r\n this.nestedRuleSets(ruleSets);\r\n }\r\n generateCss() {\r\n const declarations = this.getDeclarations();\r\n const nestedRuleSetParts = [];\r\n for (const ruleSet of this.nestedRuleSets()) {\r\n if (ruleSet.isActive()) {\r\n nestedRuleSetParts.push(ruleSet.cssText());\r\n }\r\n }\r\n let css = '';\r\n if (declarations.length > 0) {\r\n css += this.selectorText + ' {\\n\\t' + declarations.join('\\n\\t') + '\\n}\\n';\r\n }\r\n if (nestedRuleSetParts.length > 0) {\r\n css += nestedRuleSetParts.join('\\n');\r\n }\r\n return css;\r\n }\r\n isActive() {\r\n for (const source of this.declarationSources) {\r\n if (source.isActive()) {\r\n return true;\r\n }\r\n }\r\n for (const ruleSet of this.nestedRuleSets()) {\r\n if (ruleSet.isActive()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n getDeclarations() {\r\n const declarations = [];\r\n for (const source of this.declarationSources) {\r\n if (source.isActive()) {\r\n declarations.push(...source.cssDeclarations());\r\n }\r\n }\r\n return declarations;\r\n }\r\n dispose() {\r\n //Dispose declaration sources.\r\n for (const source of this.declarationSources) {\r\n source.dispose();\r\n }\r\n //Dispose nested rule sets.\r\n for (const ruleSet of this.nestedRuleSets()) {\r\n ruleSet.dispose();\r\n }\r\n super.dispose();\r\n }\r\n }\r\n class ConditionalAtRule extends CssStatement {\r\n constructor(identifier, condition, nestedStatements) {\r\n super();\r\n this.identifier = identifier;\r\n this.condition = condition;\r\n this.nestedStatements = nestedStatements;\r\n }\r\n generateCss() {\r\n const pieces = [];\r\n for (const statement of this.nestedStatements) {\r\n const css = statement.cssText();\r\n if (css !== '') {\r\n pieces.push(css);\r\n }\r\n }\r\n if (pieces.length === 0) {\r\n return '';\r\n }\r\n return this.getAtRuleText() + ' {\\n\\t' + pieces.join('\\n\\t') + '\\n}';\r\n }\r\n getAtRuleText() {\r\n return '@' + this.identifier + ' ' + this.condition;\r\n }\r\n isActive() {\r\n for (const statement of this.nestedStatements) {\r\n if (statement.isActive()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n dispose() {\r\n //Dispose nested statements.\r\n for (const statement of this.nestedStatements) {\r\n statement.dispose();\r\n }\r\n super.dispose();\r\n }\r\n }\r\n class PreviewStyleBlock {\r\n constructor(statements, condition = null) {\r\n this.statements = statements;\r\n this.condition = condition;\r\n this.$styleElement = null;\r\n this.cssText = ko.computed({\r\n read: () => {\r\n if ((condition !== null) && !condition()) {\r\n return '';\r\n }\r\n let pieces = [];\r\n for (const statement of this.statements) {\r\n if (statement.isActive()) {\r\n const css = statement.cssText();\r\n if (css !== '') {\r\n pieces.push(css);\r\n }\r\n }\r\n }\r\n if (pieces.length === 0) {\r\n return '';\r\n }\r\n return pieces.join('\\n');\r\n },\r\n deferEvaluation: true,\r\n }).extend({ deferred: true });\r\n this.updateStyleElement(this.cssText());\r\n this.cssChangeSubscription = this.cssText.subscribe((cssText) => {\r\n this.updateStyleElement(cssText);\r\n });\r\n }\r\n updateStyleElement(cssText) {\r\n if (cssText === '') {\r\n if (this.$styleElement) {\r\n this.$styleElement.remove();\r\n this.$styleElement = null;\r\n }\r\n return;\r\n }\r\n if (!this.$styleElement) {\r\n this.$styleElement = $('').appendTo('head');\r\n }\r\n this.$styleElement.text(cssText);\r\n }\r\n clear() {\r\n if (this.$styleElement) {\r\n this.$styleElement.remove();\r\n this.$styleElement = null;\r\n }\r\n }\r\n dispose() {\r\n //Stop listening for CSS changes.\r\n this.cssChangeSubscription.dispose();\r\n this.cssText.dispose();\r\n //Dispose rule sets.\r\n for (const ruleset of this.statements) {\r\n ruleset.dispose();\r\n }\r\n //Remove the style element.\r\n this.clear();\r\n }\r\n }\r\n })(Preview = AmeStyleGenerator.Preview || (AmeStyleGenerator.Preview = {}));\r\n})(AmeStyleGenerator || (AmeStyleGenerator = {}));\r\n//# sourceMappingURL=style-generator.js.map"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"menu-styler-ui.bundle.js","mappings":"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AAI,MAAM,IAAI,KAAK,IAAI,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW,KAAK,SAAS,KAAK,KAAK,KAAK,OAAO;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS,IAAI,MAAM,EAAE,MAAM;AAChE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF,SAAS;AACT;AACA;AACA;AACA,sDAAsD,iCAAiC;AACvF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,SAAS;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,gBAAgB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW,gBAAgB;AAC5C;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB,EAAE,SAAS;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kCAAkC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB,WAAW,gBAAgB;AAC5C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wEAAwE;AAC7E,CAAC,8CAA8C;AAC/C","sources":["webpack:///./extras/modules/menu-styler/menu-styler-ui.ts","webpack:///./extras/style-generator/style-generator.js"],"sourcesContent":["///\n///\n\nimport {AmeStyleGenerator} from '../../style-generator/style-generator.js';\nimport {AmeCustomizableViewModel} from '../../pro-customizables/assets/customizable.js';\n\ndeclare var wsAmeLodash: _.LoDashStatic;\n\ndeclare const ameMenuStylerConfig: {\n\tdefaults: Record,\n\tstylePreviewConfigs: AmeStyleGenerator.Preview.StyleGeneratorPreviewConfig[]\n};\n\njQuery(function ($: JQueryStatic) {\n\tconst _ = wsAmeLodash;\n\n\tconst styleConfigKey = 'menu_styles';\n\n\t/**\n\t * Utility class that tells WordPress to pin or unpin the admin menu as needed\n\t * when the menu dimensions or the top margin change.\n\t *\n\t * Uses throttling to avoid excessive updates.\n\t */\n\tclass StickyMenuUpdater {\n\t\tprivate readonly $document = $(document);\n\t\tprivate readonly $adminmenu = $('#adminmenu');\n\n\t\tprivate previousHeight: number | null = null;\n\t\tprivate previousWidth: number | null = null;\n\t\tprivate previousTopMargin: number | null = null;\n\n\t\tprivate readonly updateMenuPinState = _.throttle(() => {\n\t\t\tconst menuHeight = this.$adminmenu.outerHeight();\n\t\t\tconst menuWidth = this.$adminmenu.outerWidth();\n\t\t\tconst topMargin = parseInt(this.$adminmenu.css('margin-top'), 10);\n\n\t\t\tif (\n\t\t\t\t(menuHeight !== this.previousHeight)\n\t\t\t\t|| (menuWidth !== this.previousWidth)\n\t\t\t\t|| (topMargin !== this.previousTopMargin)\n\t\t\t) {\n\t\t\t\tthis.previousHeight = menuHeight;\n\t\t\t\tthis.previousWidth = menuWidth;\n\t\t\t\tthis.previousTopMargin = topMargin;\n\n\t\t\t\t//In practice, this update doesn't always work if done immediately.\n\t\t\t\t//Not sure why, maybe menu dimensions don't change instantly when, for example,\n\t\t\t\t//the user adds a logo image. Adding a small delay seems to help.\n\t\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t\t//The custom \"wp-pin-menu\" event was added to WP core in 2015. It can be used to update\n\t\t\t\t\t//the menu \"sticky\" state. I'm using triggerHandler() instead of trigger() because this\n\t\t\t\t\t//is what /wp-admin/js/widgets.js does. Hopefully, that will improve compatibility.\n\t\t\t\t\tthis.$document.triggerHandler('wp-pin-menu');\n\t\t\t\t});\n\t\t\t}\n\t\t}, 1000, {leading: true, trailing: true});\n\n\t\tpublic queueUpdate(): void {\n\t\t\tthis.updateMenuPinState();\n\t\t}\n\t}\n\n\tclass MenuStylerViewModel extends AmeCustomizableViewModel.SimpleVm {\n\t\tprivate readonly dialogOpenObservable: KnockoutObservable;\n\t\tprivate isFirstOpen = true;\n\t\tprivate $dialog: JQuery | null = null;\n\n\t\tprivate previewPreference: WsAmePreferenceCookie;\n\n\t\tprivate stickyMenuUpdater: StickyMenuUpdater = new StickyMenuUpdater();\n\n\t\tconstructor() {\n\t\t\t/**\n\t\t\t * This observable is initially stored in a local variable because TypeScript doesn't\n\t\t\t * allow accessing `this` in the constructor before calling super(), but we still\n\t\t\t * want to establish a dependency on the dialog open state so that preview gets enabled\n\t\t\t * when the dialog is open. The observable will get updated later.\n\t\t\t */\n\t\t\tconst extraPreviewCondition = ko.observable(false);\n\n\t\t\tsuper(extraPreviewCondition);\n\n\t\t\tthis.dialogOpenObservable = extraPreviewCondition;\n\t\t\tthis.previewPreference = new WsAmePreferenceCookie('MsPreviewEnabled', 90, true);\n\n\t\t\t//Read settings from the currently loaded admin menu configuration\n\t\t\t//using the aux-data API. Setting ID prefixes should already be registered.\n\t\t\tconst auxDataSettingReader = (settingId: string, defaultValue: any): any => {\n\t\t\t\tconst path = AmeEditorApi.configDataAdapter.mapSettingIdToPath(settingId);\n\t\t\t\tif (path === null) {\n\t\t\t\t\treturn defaultValue;\n\t\t\t\t}\n\n\t\t\t\tconst value = AmeEditorApi.configDataAdapter.getPath(path, this.notFound);\n\t\t\t\tif (value !== this.notFound) {\n\t\t\t\t\treturn value;\n\t\t\t\t} else if (ameMenuStylerConfig.defaults.hasOwnProperty(settingId)) {\n\t\t\t\t\treturn ameMenuStylerConfig.defaults[settingId];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('Unknown aux config setting ID: ' + settingId);\n\t\t\t\t}\n\t\t\t};\n\t\t\tfor (const auxPrefix of AmeEditorApi.configDataAdapter.getKnownPrefixes()) {\n\t\t\t\tthis.registerSettingReader(auxDataSettingReader, auxPrefix);\n\t\t\t}\n\n\t\t\tfor (const previewConfig of ameMenuStylerConfig.stylePreviewConfigs) {\n\t\t\t\tconst previewInstance = new AmeStyleGenerator.Preview.StyleGeneratorPreview(previewConfig);\n\t\t\t\tthis.registerPreviewUpdater(previewInstance.getPreviewableSettingIDs(), previewInstance);\n\t\t\t}\n\n\t\t\t$(document).trigger('adminMenuEditor:menuStylerUiRegister', [this]);\n\t\t}\n\n\t\tsaveChanges() {\n\t\t\tconst settingsById = this.getAllSettingValues();\n\n\t\t\t//Sort by length of the setting ID and then by the ID itself to ensure parent settings\n\t\t\t//are updated before their children. For example, this matters for color presets where\n\t\t\t//the \"activePreset\" setting maps to the \"[global]\" property of the \"colorPresets\" setting.\n\t\t\tconst sortedIds = Object.keys(settingsById);\n\t\t\tsortedIds.sort((a, b) => {\n\t\t\t\tif (a.length !== b.length) {\n\t\t\t\t\treturn a.length - b.length;\n\t\t\t\t}\n\t\t\t\treturn a.localeCompare(b);\n\t\t\t});\n\n\t\t\t//Write all settings into a new object, then save the top-level properties\n\t\t\t//of that. This way stale and empty settings will automatically be removed.\n\t\t\tconst updatedConfig: Record = {};\n\t\t\tfor (const settingId of sortedIds) {\n\t\t\t\tconst path = AmeEditorApi.configDataAdapter.mapSettingIdToPath(settingId);\n\t\t\t\tif (path === null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst value = settingsById[settingId];\n\t\t\t\t//To save space, don't store null values. This could be extended by using\n\t\t\t\t//the \"deleteWhenBlank\" property of the setting definition.\n\t\t\t\tif (value === null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t_.set(updatedConfig, path, value);\n\t\t\t}\n\n\t\t\t//Special: Update the last modified timestamp for menu styles.\n\t\t\t_.set(updatedConfig, [styleConfigKey, '_lastModified'], (new Date()).toISOString());\n\n\t\t\t//Special: Remove empty color presets.\n\t\t\tconst colorPresets: Record = _.get(updatedConfig, ['color_presets'], {});\n\t\t\tfor (const presetName of Object.keys(colorPresets)) {\n\t\t\t\t//Remove empty string values (i.e. no color selected). This also\n\t\t\t\t//covers nulls and empty arrays/objects, but that shouldn't happen.\n\t\t\t\tcolorPresets[presetName] = _.omitBy(colorPresets[presetName], _.isEmpty);\n\t\t\t\t//Remove the preset if it's empty.\n\t\t\t\tif (_.isEmpty(colorPresets[presetName])) {\n\t\t\t\t\tdelete colorPresets[presetName];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Finally, write the top-level properties to the menu configuration.\n\t\t\tfor (const key in updatedConfig) {\n\t\t\t\tif (!updatedConfig.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = updatedConfig[key];\n\t\t\t\tAmeEditorApi.configDataAdapter.setPath(key, value);\n\t\t\t}\n\n\t\t\t$(document).trigger('adminMenuEditor:menuConfigChanged');\n\t\t}\n\n\t\tprotected isDialogOpen(newValue: boolean | null = null): boolean {\n\t\t\tif (!this.dialogOpenObservable) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (newValue !== null) {\n\t\t\t\tthis.dialogOpenObservable(newValue);\n\t\t\t\treturn newValue;\n\t\t\t}\n\t\t\treturn this.dialogOpenObservable();\n\t\t}\n\n\t\tprotected getPreviewActiveState(): boolean {\n\t\t\t//Disable preview when the dialog is not open.\n\t\t\tif (!this.isDialogOpen()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn super.getPreviewActiveState();\n\t\t}\n\n\t\tupdatePreview(settingIds: string[]) {\n\t\t\tsuper.updatePreview(settingIds);\n\t\t\tthis.stickyMenuUpdater.queueUpdate();\n\t\t}\n\n\t\tsetDialog($dialog: JQuery) {\n\t\t\tthis.$dialog = $dialog;\n\n\t\t\tlet $overlay: JQuery | null = null;\n\n\t\t\t$dialog.on('dialogopen', () => {\n\t\t\t\tthis.isDialogOpen(true);\n\t\t\t\tthis.onOpenDialog();\n\n\t\t\t\t//Add a custom class to the overlay so that we can style it.\n\t\t\t\t$overlay = $dialog.closest('.ui-dialog').nextAll('.ui-widget-overlay').first();\n\t\t\t\t$overlay.addClass('ame-ms-dialog-overlay');\n\t\t\t});\n\t\t\t$dialog.on('dialogclose', () => {\n\t\t\t\tthis.isDialogOpen(false);\n\n\t\t\t\tif ($overlay) {\n\t\t\t\t\t$overlay.removeClass('ame-ms-dialog-overlay');\n\t\t\t\t\t$overlay = null;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprotected onOpenDialog() {\n\t\t\tif (!this.isFirstOpen) {\n\t\t\t\tthis.reloadAllSettings();\n\t\t\t}\n\n\t\t\tif (this.isFirstOpen) {\n\t\t\t\tthis.isFirstOpen = false;\n\t\t\t\t//Load the preview state from a cookie.\n\t\t\t\tthis.isPreviewEnabled(this.previewPreference.readAndRefresh(true));\n\t\t\t}\n\t\t}\n\n\t\t// noinspection JSUnusedGlobalSymbols -- Used in the KO template.\n\t\tonConfirmDialog() {\n\t\t\t//Save the preview state in a cookie.\n\t\t\tthis.previewPreference.write(this.isPreviewEnabled());\n\n\t\t\tthis.saveChanges();\n\t\t\tthis.closeDialog();\n\t\t}\n\n\t\tonCancelDialog() {\n\t\t\tthis.closeDialog();\n\t\t}\n\n\t\tprotected closeDialog() {\n\t\t\tif (this.$dialog !== null) {\n\t\t\t\tthis.$dialog.dialog('close');\n\t\t\t}\n\t\t}\n\t}\n\n\tconst $styleDialog = $('#ws-ame-menu-style-settings');\n\tlet isDialogInitialized = false;\n\n\tfunction initializeDialog() {\n\t\t$styleDialog.dialog({\n\t\t\tautoOpen: false,\n\t\t\tcloseText: ' ',\n\t\t\tdraggable: false,\n\t\t\tmodal: true,\n\t\t\t//Dialog dimensions and position are set in CSS.\n\t\t\tminWidth: 300,\n\t\t\theight: 400,\n\t\t\tclasses: {\n\t\t\t\t'ui-dialog': 'ui-corner-all ws-ame-menu-style-dialog',\n\t\t\t}\n\t\t});\n\n\t\tisDialogInitialized = true;\n\n\t\tconst vm = new MenuStylerViewModel();\n\t\t(window as any)['ameMenuStylerVm'] = vm;\n\n\t\tko.applyBindings(vm, $styleDialog[0]);\n\t\tvm.setDialog($styleDialog);\n\t}\n\n\t//Open the dialog when the user clicks the style button.\n\t$('#ws_edit_menu_styles').on('click', () => {\n\t\t//Optimization: Initialize the dialog on the first click.\n\t\tif (!isDialogInitialized) {\n\t\t\tinitializeDialog();\n\t\t}\n\n\t\t//Reset the scroll position of the tab content area.\n\t\t$styleDialog.find('.ame-tp-content').scrollTop(0);\n\n\t\t$styleDialog.dialog('open');\n\t});\n});","export var AmeStyleGenerator;\r\n(function (AmeStyleGenerator) {\r\n const $ = jQuery;\r\n class ValueDescriptor {\r\n }\r\n class ConstantValue extends ValueDescriptor {\r\n constructor(value) {\r\n super();\r\n this.value = value;\r\n }\r\n getValue() {\r\n return this.value;\r\n }\r\n }\r\n class ArrayValue extends ValueDescriptor {\r\n constructor(items) {\r\n super();\r\n this.items = items;\r\n }\r\n getValue() {\r\n return this.items.map(item => item.getValue());\r\n }\r\n getItemDescriptors() {\r\n return this.items;\r\n }\r\n }\r\n class SettingReference extends ValueDescriptor {\r\n constructor(settingId, valueGetter) {\r\n super();\r\n this.settingId = settingId;\r\n this.valueGetter = valueGetter;\r\n }\r\n getValue() {\r\n return this.valueGetter(this.settingId);\r\n }\r\n }\r\n class VariableReference extends ValueDescriptor {\r\n constructor(name, valueGetter) {\r\n super();\r\n this.name = name;\r\n this.valueGetter = valueGetter;\r\n }\r\n getValue() {\r\n return this.valueGetter(this.name);\r\n }\r\n }\r\n class FunctionCall extends ValueDescriptor {\r\n constructor(args, callback) {\r\n super();\r\n this.args = args;\r\n this.callback = callback;\r\n }\r\n getValue() {\r\n return this.callback(this.resolveArgs(this.args));\r\n }\r\n resolveArgs(args) {\r\n if (Array.isArray(args)) {\r\n return args.map(arg => arg.getValue());\r\n }\r\n return Object.keys(args).reduce((result, key) => {\r\n result[key] = args[key].getValue();\r\n return result;\r\n }, {});\r\n }\r\n }\r\n //endregion\r\n function isEmptyCssValue(value) {\r\n return (typeof value === 'undefined') || (value === '') || (value === null);\r\n }\r\n function convertToRgba(color, opacity = 1.0) {\r\n color = color.trim();\r\n if (color === '') {\r\n return 'transparent';\r\n }\r\n //Strip the leading hash, if any.\r\n if (color[0] === '#') {\r\n color = color.substring(1);\r\n }\r\n //If the color is in the shorthand format, expand it.\r\n if (color.length === 3) {\r\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\r\n }\r\n //The color should now be in the full 6-digit format. Convert it to RGBA.\r\n if (color.length === 6) {\r\n const red = parseInt(color.substring(0, 2), 16);\r\n const green = parseInt(color.substring(2, 4), 16);\r\n const blue = parseInt(color.substring(4, 6), 16);\r\n return `rgba(${red}, ${green}, ${blue}, ${opacity})`;\r\n }\r\n //The color may be invalid, or it's not in a hex format we recognize.\r\n return color;\r\n }\r\n function uniqueArrayValues(array) {\r\n return array.filter((value, index) => array.indexOf(value) === index);\r\n }\r\n function constrain(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n }\r\n function modifyHexColorAsHsl(args, operation) {\r\n const color = args.color || '';\r\n if (isEmptyCssValue(color)) {\r\n return '';\r\n }\r\n const hue = args.hue || null;\r\n const saturation = args.saturation || null;\r\n const lightness = args.lightness || null;\r\n if ((hue === null) && (saturation === null) && (lightness === null)) {\r\n return color;\r\n }\r\n let output = $.Color(color);\r\n output = operation(output, hue, saturation, lightness);\r\n return output.toHexString();\r\n }\r\n // noinspection JSUnusedGlobalSymbols -- Used dynamically by declaration generators received from the server.\r\n const builtinFunctions = {\r\n simpleProperty: function (args) {\r\n if (isEmptyCssValue(args.value)) {\r\n return [];\r\n }\r\n return [args.name + ': ' + args.value + ';'];\r\n },\r\n formatLength: function (args) {\r\n if (isEmptyCssValue(args.value)) {\r\n return '';\r\n }\r\n //Normalize numeric values. For example, while JS accepts \"1.\" as a number,\r\n //\"1.px\" is not a valid CSS length value, so it should be converted to \"1px\".\r\n const numericValue = parseFloat(String(args.value));\r\n if (isNaN(numericValue)) {\r\n return '';\r\n }\r\n return '' + numericValue + (args.unit || '');\r\n },\r\n shadow: function (args) {\r\n const mode = args.mode || 'default';\r\n const color = args.color || '';\r\n if (mode === 'default') {\r\n return [];\r\n }\r\n if ((mode === 'none') || (color === '') || (color === null) || (color === 'transparent')) {\r\n return ['box-shadow: none;'];\r\n }\r\n if (mode !== 'custom') {\r\n return [];\r\n }\r\n const components = [];\r\n if (args.inset) {\r\n components.push('inset');\r\n }\r\n const horizontal = args['offset-x'] || 0;\r\n const vertical = args['offset-y'] || 0;\r\n const blur = args.blur || 0;\r\n const spread = args.spread || 0;\r\n components.push(`${horizontal}px ${vertical}px ${blur}px ${spread}px`);\r\n const colorOpacity = args.colorOpacity || 1.0;\r\n if (colorOpacity < 1.0) {\r\n components.push(convertToRgba(color, colorOpacity));\r\n }\r\n else {\r\n components.push(color);\r\n }\r\n return [`box-shadow: ${components.join(' ')};`];\r\n },\r\n boxSides: function (args) {\r\n if (typeof args.cssPropertyPrefix !== 'string') {\r\n throw new Error('Invalid config for the boxSides generator: missing cssPropertyPrefix');\r\n }\r\n const compositeValue = args.value || {};\r\n const unit = compositeValue.unit || '';\r\n const declarations = [];\r\n for (const side of ['top', 'right', 'bottom', 'left']) {\r\n const value = compositeValue[side];\r\n if (isEmptyCssValue(value)) {\r\n continue;\r\n }\r\n const property = args.cssPropertyPrefix + side;\r\n declarations.push(`${property}: ${value}${unit};`);\r\n }\r\n return declarations;\r\n },\r\n firstNonEmpty(args) {\r\n for (const arg of args) {\r\n if (!isEmptyCssValue(arg)) {\r\n return arg;\r\n }\r\n }\r\n return null;\r\n },\r\n /**\r\n * Take a HEX color, convert it to HSL to edit its components,\r\n * then convert back to HEX.\r\n *\r\n * @param args\r\n */\r\n editHexAsHsl: function (args) {\r\n return modifyHexColorAsHsl(args, (color, hue, saturation, lightness) => {\r\n if (hue !== null) {\r\n color = color.hue(hue);\r\n }\r\n if (saturation !== null) {\r\n color = color.saturation(saturation);\r\n }\r\n if (lightness !== null) {\r\n color = color.lightness(lightness);\r\n }\r\n return color;\r\n });\r\n },\r\n adjustHexAsHsl: function (args) {\r\n return modifyHexColorAsHsl(args, (color, hue, saturation, lightness) => {\r\n if (hue !== null) {\r\n color = color.hue(constrain(color.hue() + hue, 0, 360));\r\n }\r\n if (saturation !== null) {\r\n color = color.saturation(constrain(color.saturation() + saturation, 0, 1.0));\r\n }\r\n if (lightness !== null) {\r\n color = color.lightness(constrain(color.lightness() + lightness, 0, 1.0));\r\n }\r\n return color;\r\n });\r\n },\r\n mixColors: function (args) {\r\n const color1 = args.color1 || '';\r\n const color2 = args.color2 || '';\r\n if (isEmptyCssValue(color1) || isEmptyCssValue(color2)) {\r\n return '';\r\n }\r\n const weight = args.weight || 50;\r\n if (weight <= 0) {\r\n return color2;\r\n }\r\n else if (weight >= 100) {\r\n return color1;\r\n }\r\n return $.Color(color2).transition($.Color(color1), weight / 100).toHexString();\r\n },\r\n changeLightness: function (args) {\r\n const color = args.color || '';\r\n if (isEmptyCssValue(color)) {\r\n return '';\r\n }\r\n const amount = args.amount || 0;\r\n if (amount === 0) {\r\n return color;\r\n }\r\n let output = $.Color(color);\r\n //Amount is a number between 0 and 100, while lightness is between 0.0 and 1.0.\r\n let newLightness = output.lightness() + (amount / 100);\r\n //Clamp to 0.0 - 1.0.\r\n newLightness = constrain(newLightness, 0.0, 1.0);\r\n return output.lightness(newLightness).toHexString();\r\n },\r\n darken: function (args) {\r\n const color = args.color || '';\r\n const amount = args.amount || 0;\r\n return builtinFunctions.changeLightness({ color, amount: -Math.abs(amount) });\r\n },\r\n lighten: function (args) {\r\n const color = args.color || '';\r\n const amount = args.amount || 0;\r\n return builtinFunctions.changeLightness({ color, amount: Math.abs(amount) });\r\n },\r\n compare: function (args) {\r\n const value1 = args.value1;\r\n const value2 = args.value2;\r\n const operator = args.op;\r\n const thenResult = (typeof args.thenResult !== 'undefined') ? args.thenResult : true;\r\n const elseResult = (typeof args.elseResult !== 'undefined') ? args.elseResult : null;\r\n let result;\r\n switch (operator) {\r\n case '==':\r\n result = value1 == value2;\r\n break;\r\n case '!=':\r\n result = value1 != value2;\r\n break;\r\n case '>':\r\n result = value1 > value2;\r\n break;\r\n case '>=':\r\n result = value1 >= value2;\r\n break;\r\n case '<':\r\n result = value1 < value2;\r\n break;\r\n case '<=':\r\n result = value1 <= value2;\r\n break;\r\n default:\r\n throw new Error(`Unknown operator: ${operator}`);\r\n }\r\n return result ? thenResult : elseResult;\r\n },\r\n ifTruthy: function (args) {\r\n const value = args.value;\r\n const thenResult = (typeof args.thenResult !== 'undefined') ? args.thenResult : true;\r\n const elseResult = (typeof args.elseResult !== 'undefined') ? args.elseResult : null;\r\n return value ? thenResult : elseResult;\r\n },\r\n ifSome: function (args) {\r\n const values = args.values;\r\n const thenResult = args.thenResult;\r\n const elseResult = (typeof args.elseResult !== 'undefined') ? args.elseResult : null;\r\n for (const value of values) {\r\n if (!!value) {\r\n return thenResult;\r\n }\r\n }\r\n return elseResult;\r\n },\r\n ifAll: function (args) {\r\n const values = args.values;\r\n const thenResult = args.thenResult;\r\n const elseResult = args.elseResult !== undefined ? args.elseResult : null;\r\n if (!values || (values.length === 0)) {\r\n return elseResult;\r\n }\r\n for (const value of values) {\r\n if (!value) {\r\n return elseResult;\r\n }\r\n }\r\n return thenResult;\r\n },\r\n ifImageSettingContainsImage: function (args) {\r\n const thenResult = args.thenResult !== undefined ? args.thenResult : true;\r\n const elseResult = args.elseResult !== undefined ? args.elseResult : null;\r\n if ((typeof args.value !== 'object') || !args.value) {\r\n return elseResult;\r\n }\r\n const image = args.value;\r\n const hasAttachment = !!image.attachmentId;\r\n const hasExternalUrl = !!image.externalUrl;\r\n const hasImage = hasAttachment || hasExternalUrl;\r\n return hasImage ? thenResult : elseResult;\r\n }\r\n };\r\n let Preview;\r\n (function (Preview) {\r\n const $ = jQuery;\r\n function isConditionalAtRuleConfig(config) {\r\n if ((typeof config !== 'object') || (config === null)) {\r\n return false;\r\n }\r\n const configAsRecord = config;\r\n return ((typeof configAsRecord['t'] === 'string')\r\n && (configAsRecord['t'] === 'conditionalAtRule')\r\n && (typeof configAsRecord['identifier'] === 'string'));\r\n }\r\n function isRuleSetConfig(config) {\r\n return ((config !== null)\r\n && (Array.isArray(config['selectors']))\r\n && (Array.isArray(config['generators'])));\r\n }\r\n const inactiveSettingMarker = { '_ame_inactive_setting': true };\r\n class PreviewSession {\r\n constructor(config) {\r\n this.settings = {};\r\n this.valueReaders = new Set();\r\n this.notFound = {};\r\n this.variables = {};\r\n this.styleBlocks = [];\r\n this.stylesheetsToDisable = [];\r\n this.stylesheetWasEnabled = {};\r\n /**\r\n * Whether this is the first time the preview is being updated.\r\n * This is set to false after preview() is called for the first time.\r\n */\r\n this._isBeforeFirstUpdate = true;\r\n //Optimization: Create bound getters once instead of every time we need\r\n //to create a setting or variable reference.\r\n this.settingValueGetter = this.getSettingPreviewValue.bind(this);\r\n this.variableValueGetter = (variableName) => {\r\n if (variableName in this.variables) {\r\n return this.variables[variableName].getValue();\r\n }\r\n return null;\r\n };\r\n //Optionally, disable already generated custom stylesheets while the preview\r\n //is active to prevent old settings from interfering with the preview of new settings.\r\n if (Array.isArray(config.stylesheetsToDisable)) {\r\n this.stylesheetsToDisable = config.stylesheetsToDisable;\r\n }\r\n //Variables\r\n for (const variableName in config.variables) {\r\n if (!config.variables.hasOwnProperty(variableName)) {\r\n continue;\r\n }\r\n this.variables[variableName] = this.createValueDescriptor(config.variables[variableName], true);\r\n }\r\n //CSS statement groups\r\n for (const conditionConfig of config.statementGroups) {\r\n const statements = this.createCssStatements(conditionConfig.statements);\r\n if (statements.length < 1) {\r\n continue;\r\n }\r\n const condition = this.createValueDescriptor(conditionConfig.expression, true);\r\n const usedSettingIds = this.getSettingIdsUsedBy(condition);\r\n const conditionCallback = () => {\r\n //For performance, conditions that reference settings should\r\n //only be checked when at least one setting is active.\r\n if (usedSettingIds.length > 0) {\r\n if (!usedSettingIds.some((id) => this.isSettingActive(id))) {\r\n return false;\r\n }\r\n }\r\n const isTruthy = condition.getValue();\r\n return !!isTruthy; //Convert to boolean.\r\n };\r\n this.styleBlocks.push(new PreviewStyleBlock(statements, conditionCallback));\r\n }\r\n }\r\n createValueDescriptor(data, allowUnknownVariables = false) {\r\n switch (data.t) {\r\n case 'constant':\r\n return new ConstantValue(data.value);\r\n case 'array':\r\n return new ArrayValue(data.items.map((valueData) => this.createValueDescriptor(valueData, allowUnknownVariables)));\r\n case 'setting':\r\n this.registerPreviewableSettingId(data.id);\r\n return new SettingReference(data.id, this.settingValueGetter);\r\n case 'var':\r\n if (!this.variables.hasOwnProperty(data.name) && !allowUnknownVariables) {\r\n throw new Error('Unknown variable: ' + data.name);\r\n }\r\n return new VariableReference(data.name, this.variableValueGetter);\r\n case 'funcCall':\r\n let functionName;\r\n if (data.name in builtinFunctions) {\r\n functionName = data.name;\r\n }\r\n else {\r\n throw new Error('Unknown function: ' + data.name);\r\n }\r\n const func = builtinFunctions[functionName];\r\n //Initialize the function arguments.\r\n let args;\r\n if (Array.isArray(data.args)) {\r\n args = data.args.map(arg => this.createValueDescriptor(arg, allowUnknownVariables));\r\n }\r\n else {\r\n args = {};\r\n for (const argName in data.args) {\r\n if (!data.args.hasOwnProperty(argName)) {\r\n continue;\r\n }\r\n args[argName] = this.createValueDescriptor(data.args[argName], allowUnknownVariables);\r\n }\r\n }\r\n // @ts-ignore - Can't really statically check this since the values come from the server.\r\n return new FunctionCall(args, func);\r\n }\r\n }\r\n /**\r\n * Get the IDs of all settings that are referenced by the given descriptor.\r\n *\r\n * @param descriptor\r\n * @private\r\n */\r\n getSettingIdsUsedBy(descriptor) {\r\n if (descriptor instanceof SettingReference) {\r\n return [descriptor.settingId];\r\n }\r\n if (descriptor instanceof ArrayValue) {\r\n let result = [];\r\n for (const item of descriptor.getItemDescriptors()) {\r\n result = result.concat(this.getSettingIdsUsedBy(item));\r\n }\r\n return uniqueArrayValues(result);\r\n }\r\n if (descriptor instanceof FunctionCall) {\r\n let result = [];\r\n const args = descriptor.args;\r\n if (Array.isArray(args)) {\r\n for (const arg of args) {\r\n result = result.concat(this.getSettingIdsUsedBy(arg));\r\n }\r\n }\r\n else {\r\n for (const argName in args) {\r\n if (args.hasOwnProperty(argName)) {\r\n result = result.concat(this.getSettingIdsUsedBy(args[argName]));\r\n }\r\n }\r\n }\r\n return uniqueArrayValues(result);\r\n }\r\n if (descriptor instanceof VariableReference) {\r\n const varDef = this.getVariableDefinition(descriptor.name);\r\n if (varDef === null) {\r\n return [];\r\n }\r\n return this.getSettingIdsUsedBy(varDef);\r\n }\r\n return [];\r\n }\r\n getVariableDefinition(variableName) {\r\n if (!this.variables.hasOwnProperty(variableName)) {\r\n return null;\r\n }\r\n return this.variables[variableName];\r\n }\r\n createCssStatements(configs) {\r\n let results = [];\r\n for (const config of configs) {\r\n if (isRuleSetConfig(config)) {\r\n results.push(this.createRuleSetFromConfig(config));\r\n }\r\n else if (isConditionalAtRuleConfig(config)) {\r\n results.push(new ConditionalAtRule(config.identifier, config.condition, (typeof config.nestedStatements === 'undefined')\r\n ? []\r\n : this.createCssStatements(config.nestedStatements)));\r\n }\r\n else {\r\n console.error('Unknown CSS statement type: ', config);\r\n }\r\n }\r\n return results;\r\n }\r\n createRuleSetFromConfig(config, parent = null) {\r\n const generatorWrappers = this.makeGeneratorWrappers(config.generators);\r\n const ruleSet = new CssRuleSet(config.selectors, generatorWrappers, parent);\r\n const nestedRuleSets = this.createNestedRuleSets(config.nestedStatements, ruleSet);\r\n ruleSet.setNestedRuleSets(nestedRuleSets);\r\n return ruleSet;\r\n }\r\n createNestedRuleSets(configs, parent = null) {\r\n let results = [];\r\n if (!configs) {\r\n return results;\r\n }\r\n for (const config of configs) {\r\n if (!isRuleSetConfig(config)) {\r\n throw new Error('A CSS rule set can only contain other rule sets, not other types of statements.');\r\n }\r\n results.push(this.createRuleSetFromConfig(config, parent));\r\n }\r\n return results;\r\n }\r\n getPreviewableSettingIDs() {\r\n return Object.keys(this.settings);\r\n }\r\n preview(settingId, value, otherSettingReader) {\r\n if (this._isBeforeFirstUpdate) {\r\n this._isBeforeFirstUpdate = false;\r\n this.disableAssociatedStylesheets();\r\n }\r\n this.valueReaders.add(otherSettingReader);\r\n if (!this.settings.hasOwnProperty(settingId)) {\r\n this.settings[settingId] = ko.observable(value);\r\n }\r\n else {\r\n this.settings[settingId](value);\r\n }\r\n }\r\n dispose() {\r\n //Dispose of all style blocks.\r\n for (const block of this.styleBlocks) {\r\n block.dispose();\r\n }\r\n this.reEnableAssociatedStylesheets();\r\n }\r\n disableAssociatedStylesheets() {\r\n for (const stylesheetSelector of this.stylesheetsToDisable) {\r\n const $link = $(stylesheetSelector);\r\n if ($link.length > 0) {\r\n this.stylesheetWasEnabled[stylesheetSelector] = $link.prop('disabled');\r\n $link.prop('disabled', true);\r\n }\r\n }\r\n }\r\n reEnableAssociatedStylesheets() {\r\n for (const stylesheetSelector of this.stylesheetsToDisable) {\r\n const $link = $(stylesheetSelector);\r\n if (($link.length > 0) && this.stylesheetWasEnabled.hasOwnProperty(stylesheetSelector)) {\r\n $link.prop('disabled', this.stylesheetWasEnabled[stylesheetSelector]);\r\n }\r\n }\r\n }\r\n isSettingActive(settingId) {\r\n if (this.settings.hasOwnProperty(settingId)) {\r\n return this.settings[settingId]() !== inactiveSettingMarker;\r\n }\r\n return false;\r\n }\r\n getSettingPreviewValue(settingId) {\r\n if (!this.settings.hasOwnProperty(settingId)) {\r\n const value = this.getSettingFromReaders(settingId);\r\n this.settings[settingId] = ko.observable(value).extend({ deferred: true });\r\n }\r\n const observable = this.settings[settingId];\r\n let value = observable();\r\n if (value === inactiveSettingMarker) {\r\n value = this.getSettingFromReaders(settingId);\r\n observable(value);\r\n }\r\n return value;\r\n }\r\n getSettingFromReaders(settingId) {\r\n for (const reader of this.valueReaders) {\r\n const value = reader(settingId, this.notFound);\r\n if (value !== this.notFound) {\r\n return value;\r\n }\r\n }\r\n throw new Error('Setting not found for preview: ' + settingId);\r\n }\r\n makeGeneratorWrappers(generatorConfigs) {\r\n let generatorWrappers = [];\r\n for (const generatorConfig of generatorConfigs) {\r\n const wrapper = this.makeDeclarationGeneratorWrapper(generatorConfig);\r\n if (wrapper !== null) {\r\n generatorWrappers.push(wrapper);\r\n }\r\n }\r\n return generatorWrappers;\r\n }\r\n makeDeclarationGeneratorWrapper(config) {\r\n const generator = this.createValueDescriptor(config);\r\n return new DeclarationGeneratorWrapper(generator, this);\r\n }\r\n registerPreviewableSettingId(settingId) {\r\n if (!this.settings.hasOwnProperty(settingId)) {\r\n this.settings[settingId] = ko.observable(inactiveSettingMarker);\r\n }\r\n }\r\n get isBeforeFirstUpdate() {\r\n return this._isBeforeFirstUpdate;\r\n }\r\n }\r\n /**\r\n * Preview manager for the style generator.\r\n *\r\n * This is a thin wrapper around the PreviewSession class. It initializes the session\r\n * as needed and destroys it when the preview is cleared. This makes it simpler to manage\r\n * active settings, style blocks, and CSS rule-sets: instead of having to carefully\r\n * track dependencies and deactivate/reactivate them in the right order whenever the preview\r\n * is disabled/enabled, we can just destroy the session and start over.\r\n */\r\n class StyleGeneratorPreview {\r\n constructor(config) {\r\n this.config = config;\r\n this.currentSession = null;\r\n }\r\n getOrCreateSession() {\r\n if (this.currentSession === null) {\r\n this.currentSession = new PreviewSession(this.config);\r\n }\r\n return this.currentSession;\r\n }\r\n getPreviewableSettingIDs() {\r\n return this.getOrCreateSession().getPreviewableSettingIDs();\r\n }\r\n preview(settingId, value, otherSettingReader) {\r\n const session = this.getOrCreateSession();\r\n const shouldPreviewAll = (this.config.previewAllOnFirstUpdate && session.isBeforeFirstUpdate);\r\n session.preview(settingId, value, otherSettingReader);\r\n if (shouldPreviewAll) {\r\n //Preview all registered settings the first time the preview is updated.\r\n const notFound = {};\r\n for (const otherId of session.getPreviewableSettingIDs()) {\r\n const otherValue = otherSettingReader(otherId, notFound);\r\n if ((otherId !== settingId) && (otherValue !== notFound)) {\r\n session.preview(otherId, otherValue, otherSettingReader);\r\n }\r\n }\r\n }\r\n }\r\n clearPreview() {\r\n if (this.currentSession !== null) {\r\n this.currentSession.dispose();\r\n this.currentSession = null;\r\n }\r\n }\r\n }\r\n Preview.StyleGeneratorPreview = StyleGeneratorPreview;\r\n class DeclarationGeneratorWrapper {\r\n constructor(generator, settingSource) {\r\n this.generator = generator;\r\n this.settingSource = settingSource;\r\n //Introspect the generator and see which settings it uses.\r\n //This will be useful to determine if the generator is active.\r\n this.usedSettingIds = DeclarationGeneratorWrapper.findReferencedSettingIds(generator, settingSource);\r\n this.cssDeclarations = ko.computed({\r\n read: () => this.getDeclarations(),\r\n deferEvaluation: true,\r\n }).extend({ deferred: true });\r\n }\r\n /**\r\n * Recursively find all settings used by a value descriptor (such as a function call).\r\n *\r\n * @param {ValueDescriptor} thing\r\n * @param variableSource Needed to get variable definitions and not just the final values.\r\n */\r\n static findReferencedSettingIds(thing, variableSource) {\r\n let settingIds = [];\r\n if (thing instanceof SettingReference) {\r\n settingIds.push(thing.settingId);\r\n }\r\n else if (thing instanceof FunctionCall) {\r\n if (Array.isArray(thing.args)) {\r\n for (const arg of thing.args) {\r\n settingIds = settingIds.concat(DeclarationGeneratorWrapper.findReferencedSettingIds(arg, variableSource));\r\n }\r\n }\r\n else {\r\n for (const key in thing.args) {\r\n settingIds = settingIds.concat(DeclarationGeneratorWrapper.findReferencedSettingIds(thing.args[key], variableSource));\r\n }\r\n }\r\n }\r\n else if (thing instanceof VariableReference) {\r\n const value = variableSource.getVariableDefinition(thing.name);\r\n if (value !== null) {\r\n settingIds = settingIds.concat(DeclarationGeneratorWrapper.findReferencedSettingIds(value, variableSource));\r\n }\r\n }\r\n return settingIds;\r\n }\r\n isActive() {\r\n //Check if any of the input settings are active.\r\n let hasSettingLookups = false;\r\n for (const settingId of this.usedSettingIds) {\r\n hasSettingLookups = true;\r\n if (this.settingSource.isSettingActive(settingId)) {\r\n return true;\r\n }\r\n }\r\n //If there are no input settings, the generator is always active: it just\r\n //generates a fixed declaration.\r\n return !hasSettingLookups;\r\n }\r\n getDeclarations() {\r\n return this.generator.getValue();\r\n }\r\n dispose() {\r\n this.cssDeclarations.dispose();\r\n }\r\n }\r\n class CssStatement {\r\n constructor() {\r\n this.cssText = ko.computed({\r\n read: () => this.generateCss(),\r\n deferEvaluation: true,\r\n }).extend({ deferred: true });\r\n }\r\n dispose() {\r\n //Dispose the CSS text observable.\r\n this.cssText.dispose();\r\n }\r\n }\r\n class CssRuleSet extends CssStatement {\r\n constructor(selectors, declarationSources, parent = null) {\r\n super();\r\n this.declarationSources = declarationSources;\r\n this.nestedRuleSets = ko.observableArray([]);\r\n if (parent === null) {\r\n this.effectiveSelectors = selectors;\r\n }\r\n else {\r\n this.effectiveSelectors = CssRuleSet.combineSelectors(selectors, parent.effectiveSelectors);\r\n }\r\n this.selectorText = this.effectiveSelectors.join(', ');\r\n }\r\n static combineSelectors(selectors, parentSelectors) {\r\n const combinedSelectors = [];\r\n for (const selector of selectors) {\r\n if (selector === '') {\r\n continue;\r\n }\r\n if (selector.includes('&')) {\r\n //Insert the parent selectors into the current selector at the position of the \"&\".\r\n for (const parentSelector of parentSelectors) {\r\n combinedSelectors.push(selector.replace('&', parentSelector.trim()));\r\n }\r\n }\r\n else {\r\n //Just append the current selector to the parent selectors.\r\n for (const parentSelector of parentSelectors) {\r\n combinedSelectors.push(`${parentSelector} ${selector}`);\r\n }\r\n }\r\n }\r\n return combinedSelectors;\r\n }\r\n setNestedRuleSets(ruleSets) {\r\n //Dispose the old rule sets that are not part of the new list.\r\n for (const oldRuleSet of this.nestedRuleSets()) {\r\n if (ruleSets.indexOf(oldRuleSet) === -1) {\r\n oldRuleSet.dispose();\r\n }\r\n }\r\n this.nestedRuleSets(ruleSets);\r\n }\r\n generateCss() {\r\n const declarations = this.getDeclarations();\r\n const nestedRuleSetParts = [];\r\n for (const ruleSet of this.nestedRuleSets()) {\r\n if (ruleSet.isActive()) {\r\n nestedRuleSetParts.push(ruleSet.cssText());\r\n }\r\n }\r\n let css = '';\r\n if (declarations.length > 0) {\r\n css += this.selectorText + ' {\\n\\t' + declarations.join('\\n\\t') + '\\n}\\n';\r\n }\r\n if (nestedRuleSetParts.length > 0) {\r\n css += nestedRuleSetParts.join('\\n');\r\n }\r\n return css;\r\n }\r\n isActive() {\r\n for (const source of this.declarationSources) {\r\n if (source.isActive()) {\r\n return true;\r\n }\r\n }\r\n for (const ruleSet of this.nestedRuleSets()) {\r\n if (ruleSet.isActive()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n getDeclarations() {\r\n const declarations = [];\r\n for (const source of this.declarationSources) {\r\n if (source.isActive()) {\r\n declarations.push(...source.cssDeclarations());\r\n }\r\n }\r\n return declarations;\r\n }\r\n dispose() {\r\n //Dispose declaration sources.\r\n for (const source of this.declarationSources) {\r\n source.dispose();\r\n }\r\n //Dispose nested rule sets.\r\n for (const ruleSet of this.nestedRuleSets()) {\r\n ruleSet.dispose();\r\n }\r\n super.dispose();\r\n }\r\n }\r\n class ConditionalAtRule extends CssStatement {\r\n constructor(identifier, condition, nestedStatements) {\r\n super();\r\n this.identifier = identifier;\r\n this.condition = condition;\r\n this.nestedStatements = nestedStatements;\r\n }\r\n generateCss() {\r\n const pieces = [];\r\n for (const statement of this.nestedStatements) {\r\n const css = statement.cssText();\r\n if (css !== '') {\r\n pieces.push(css);\r\n }\r\n }\r\n if (pieces.length === 0) {\r\n return '';\r\n }\r\n return this.getAtRuleText() + ' {\\n\\t' + pieces.join('\\n\\t') + '\\n}';\r\n }\r\n getAtRuleText() {\r\n return '@' + this.identifier + ' ' + this.condition;\r\n }\r\n isActive() {\r\n for (const statement of this.nestedStatements) {\r\n if (statement.isActive()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n dispose() {\r\n //Dispose nested statements.\r\n for (const statement of this.nestedStatements) {\r\n statement.dispose();\r\n }\r\n super.dispose();\r\n }\r\n }\r\n class PreviewStyleBlock {\r\n constructor(statements, condition = null) {\r\n this.statements = statements;\r\n this.condition = condition;\r\n this.$styleElement = null;\r\n this.cssText = ko.computed({\r\n read: () => {\r\n if ((condition !== null) && !condition()) {\r\n return '';\r\n }\r\n let pieces = [];\r\n for (const statement of this.statements) {\r\n if (statement.isActive()) {\r\n const css = statement.cssText();\r\n if (css !== '') {\r\n pieces.push(css);\r\n }\r\n }\r\n }\r\n if (pieces.length === 0) {\r\n return '';\r\n }\r\n return pieces.join('\\n');\r\n },\r\n deferEvaluation: true,\r\n }).extend({ deferred: true });\r\n this.updateStyleElement(this.cssText());\r\n this.cssChangeSubscription = this.cssText.subscribe((cssText) => {\r\n this.updateStyleElement(cssText);\r\n });\r\n }\r\n updateStyleElement(cssText) {\r\n if (cssText === '') {\r\n if (this.$styleElement) {\r\n this.$styleElement.remove();\r\n this.$styleElement = null;\r\n }\r\n return;\r\n }\r\n if (!this.$styleElement) {\r\n this.$styleElement = $('').appendTo('head');\r\n }\r\n this.$styleElement.text(cssText);\r\n }\r\n clear() {\r\n if (this.$styleElement) {\r\n this.$styleElement.remove();\r\n this.$styleElement = null;\r\n }\r\n }\r\n dispose() {\r\n //Stop listening for CSS changes.\r\n this.cssChangeSubscription.dispose();\r\n this.cssText.dispose();\r\n //Dispose rule sets.\r\n for (const ruleset of this.statements) {\r\n ruleset.dispose();\r\n }\r\n //Remove the style element.\r\n this.clear();\r\n }\r\n }\r\n })(Preview = AmeStyleGenerator.Preview || (AmeStyleGenerator.Preview = {}));\r\n})(AmeStyleGenerator || (AmeStyleGenerator = {}));\r\n//# sourceMappingURL=style-generator.js.map"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/extras.php b/extras.php index ca6fa12..95d8e9b 100644 --- a/extras.php +++ b/extras.php @@ -2434,6 +2434,13 @@ public function filter_available_modules($modules) { 'isAlwaysActive' => true, ); + $modules['hide-others-posts'] = array( + 'path' => AME_ROOT_DIR . '/extras/modules/hide-others-posts/hide-others-posts.php', + 'className' => 'ameOtherUserPostHider', + 'title' => 'Hide others\' posts', + 'requiredPhpVersion' => '7.4', + ); + if (defined('AME_CUSTOMIZABLE_DEV') && AME_CUSTOMIZABLE_DEV) { $modules['sample-module'] = [ 'path' => AME_ROOT_DIR . '/customizables/SampleModule.php', @@ -2464,7 +2471,6 @@ public function filter_available_modules($modules) { //Load the custom update checker (requires PHP 5) if ( (version_compare(PHP_VERSION, '5.0.0', '>=')) && isset($wp_menu_editor) ){ - require dirname(__FILE__) . '/plugin-updates/plugin-update-checker.php'; $ameProUpdateChecker = PucFactory::buildUpdateChecker( 'https://adminmenueditor.com/?get_metadata_for=admin-menu-editor-pro', $wp_menu_editor->plugin_file, //Note: This variable is set in the framework constructor diff --git a/extras/ko-extensions.js b/extras/ko-extensions.js index 262d741..e37ec7a 100644 --- a/extras/ko-extensions.js +++ b/extras/ko-extensions.js @@ -2,7 +2,7 @@ /// /// /// -/// +/// class AmeBaseKnockoutDialog { constructor() { this.isOpen = ko.observable(false); @@ -405,6 +405,7 @@ ko.bindingHandlers.readonly = { let parsed = wsAmeLodash.defaults(ko.unwrap(options), { onValue: true, offValue: false, + checked: ko.pureComputed(() => false) }); parsed.onValue = ko.unwrap(parsed.onValue); parsed.offValue = ko.unwrap(parsed.offValue); diff --git a/extras/ko-extensions.js.map b/extras/ko-extensions.js.map index 0ebb5dd..215361e 100644 --- a/extras/ko-extensions.js.map +++ b/extras/ko-extensions.js.map @@ -1 +1 @@ -{"version":3,"file":"ko-extensions.js","sourceRoot":"","sources":["ko-extensions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ko-extensions.js","sourceRoot":"","sources":["ko-extensions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/ko-extensions.ts b/extras/ko-extensions.ts index eb013ff..2b81a40 100644 --- a/extras/ko-extensions.ts +++ b/extras/ko-extensions.ts @@ -1,7 +1,7 @@ /// /// /// -/// +/// declare var wsAmeLodash: _.LoDashStatic; @@ -502,6 +502,7 @@ ko.bindingHandlers.readonly = { { onValue: true, offValue: false, + checked: ko.pureComputed(() => false) } ); parsed.onValue = ko.unwrap(parsed.onValue); diff --git a/extras/menu-headings/menu-headings.js b/extras/menu-headings/menu-headings.js index 915e209..1fb4c0d 100644 --- a/extras/menu-headings/menu-headings.js +++ b/extras/menu-headings/menu-headings.js @@ -1,6 +1,6 @@ "use strict"; /// -/// +/// /// //Idea: Maybe code generator that generates both TS/KO stuff and PHP classes with validation? class AmePlainMenuHeadingSettings { @@ -218,7 +218,7 @@ class AmeMenuHeadingSettingsScreen { .countBy(function (menu) { return $(menu).css('fontSize'); }) - .pairs() + .toPairs() .sortBy(1) .last() .value(); diff --git a/extras/menu-headings/menu-headings.js.map b/extras/menu-headings/menu-headings.js.map index 5a47029..41364e5 100644 --- a/extras/menu-headings/menu-headings.js.map +++ b/extras/menu-headings/menu-headings.js.map @@ -1 +1 @@ -{"version":3,"file":"menu-headings.js","sourceRoot":"","sources":["menu-headings.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"menu-headings.js","sourceRoot":"","sources":["menu-headings.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/menu-headings/menu-headings.ts b/extras/menu-headings/menu-headings.ts index aacf1a9..6677462 100644 --- a/extras/menu-headings/menu-headings.ts +++ b/extras/menu-headings/menu-headings.ts @@ -1,5 +1,5 @@ /// -/// +/// /// declare var wsAmeLodash: _.LoDashStatic; @@ -298,7 +298,7 @@ class AmeMenuHeadingSettingsScreen { .countBy(function (menu: HTMLElement) { return $(menu).css('fontSize'); }) - .pairs() + .toPairs() .sortBy(1) .last() .value(); diff --git a/extras/modules/admin-customizer/admin-customizer.js b/extras/modules/admin-customizer/admin-customizer.js index bbf0c91..758e730 100644 --- a/extras/modules/admin-customizer/admin-customizer.js +++ b/extras/modules/admin-customizer/admin-customizer.js @@ -1,6 +1,6 @@ 'use strict'; /// -/// +/// /// import { AmeCustomizable } from '../../pro-customizables/assets/customizable.js'; import { registerBaseComponents } from '../../pro-customizables/ko-components/ame-components.js'; @@ -1438,6 +1438,7 @@ export var AmeAdminCustomizer; //Update menu states. this.importActionEnabled.notifySubscribers(this.importActionEnabled()); this.discardChangesActionEnabled.notifySubscribers(this.discardChangesActionEnabled()); + this.downloadThemeActionEnabled.notifySubscribers(this.downloadThemeActionEnabled()); //Get the file picker. this.$importFileInput = jQuery('#ame-ac-import-admin-theme-file', rootElement); } @@ -1542,6 +1543,7 @@ export var AmeAdminCustomizer; } actionOpenDownloadDialog() { if (!this.downloadThemeActionEnabled()) { + alert('Currently disabled because there are no changes to download.'); return; } this.openMetadataDialog(MetadataDialogMode.Download); diff --git a/extras/modules/admin-customizer/admin-customizer.js.map b/extras/modules/admin-customizer/admin-customizer.js.map index 29bc513..8eb0904 100644 --- a/extras/modules/admin-customizer/admin-customizer.js.map +++ b/extras/modules/admin-customizer/admin-customizer.js.map @@ -1 +1 @@ -{"version":3,"file":"admin-customizer.js","sourceRoot":"","sources":["admin-customizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"admin-customizer.js","sourceRoot":"","sources":["admin-customizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/admin-customizer/admin-customizer.ts b/extras/modules/admin-customizer/admin-customizer.ts index 2543c0a..124b0ee 100644 --- a/extras/modules/admin-customizer/admin-customizer.ts +++ b/extras/modules/admin-customizer/admin-customizer.ts @@ -1,7 +1,7 @@ 'use strict'; /// -/// +/// /// import {AmeCustomizable, AmeCustomizableViewModel} from '../../pro-customizables/assets/customizable.js'; @@ -1908,6 +1908,7 @@ export namespace AmeAdminCustomizer { //Update menu states. this.importActionEnabled.notifySubscribers(this.importActionEnabled()); this.discardChangesActionEnabled.notifySubscribers(this.discardChangesActionEnabled()); + this.downloadThemeActionEnabled.notifySubscribers(this.downloadThemeActionEnabled()); //Get the file picker. this.$importFileInput = jQuery('#ame-ac-import-admin-theme-file', rootElement); @@ -2032,6 +2033,7 @@ export namespace AmeAdminCustomizer { actionOpenDownloadDialog() { if (!this.downloadThemeActionEnabled()) { + alert('Currently disabled because there are no changes to download.'); return; } this.openMetadataDialog(MetadataDialogMode.Download); diff --git a/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js b/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js index 636e7c6..5cae7de 100644 --- a/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js +++ b/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js @@ -3,7 +3,7 @@ /// /// /// -/// +/// /// /// let ameWidgetEditor; @@ -271,7 +271,7 @@ class AmeDashboardWidgetEditor { }, widgets: [], welcomePanel: { - grantAccess: _.pick((_b = (_a = this.welcomePanel) === null || _a === void 0 ? void 0 : _a.grantAccess.getAll()) !== null && _b !== void 0 ? _b : {}, function (hasAccess, actorId) { + grantAccess: _.pickBy((_b = (_a = this.welcomePanel) === null || _a === void 0 ? void 0 : _a.grantAccess.getAll()) !== null && _b !== void 0 ? _b : {}, function (hasAccess, actorId) { if (typeof actorId === 'undefined') { return false; //This should never happen in practice. } diff --git a/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js.map b/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js.map index a664a5a..8b8d902 100644 --- a/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js.map +++ b/extras/modules/dashboard-widget-editor/dashboard-widget-editor.js.map @@ -1 +1 @@ -{"version":3,"file":"dashboard-widget-editor.js","sourceRoot":"","sources":["dashboard-widget-editor.ts"],"names":[],"mappings":";AAAA,kDAAkD;AAClD,gDAAgD;AAChD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,8CAA8C;AAC9C,0EAA0E;AAG1E,IAAI,eAAyC,CAAC;AAsB9C,MAAM,wBAAwB;IAiD7B,YACC,cAAoC,EACpC,gBAA+B,IAAI,EACnC,cAAuB,KAAK,EAC5B,wBAAuC,CAAC;;QAjDjC,iBAAY,GAA4B,IAAI,CAAC;QAKpC,wBAAmB,GAAW,CAAC,CAAC;QAYzC,0BAAqB,GAAgC,IAAI,CAAC;QACjD,gBAAW,GAAY,KAAK,CAAC;QAGtC,qBAAgB,GAAG,CAAC,CAAC;QAkBb,gCAA2B,GAAmD;YAC7F,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC;SAC9B,CAAC;QAUD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE3D,wFAAwF;QACxF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACrE,6EAA6E;QAC7E,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAEzE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE;YAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,EAA0B,CAAC,CAAC,CAAC;SACxE;QAED,wBAAwB;QACxB,MAAM,oBAAoB,GAAG,EAAE,CAAC,UAAU,CACzC,cAAc,CAAC,2BAA2B,IAAI,KAAK,CACnD,CAAC;QACF,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC,QAAQ,CAAC;YAChD,IAAI,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE;YAClC,KAAK,EAAE,CAAC,uBAA4B,EAAE,EAAE;gBACvC,iEAAiE;gBACjE,oBAAoB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;YACjD,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAAG,IAAI,uBAAuB,CAAC;YAC1D,mBAAmB,EAAE,sBAAsB,CAAC,IAAI;YAChD,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,mBAAmB;YACrC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;SACzD,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,IAAI,oBAAoB,CACjD,IAAI,4BAA4B,CAAC,cAAc,CAAC,qBAAqB,CAAC,EACtE,sBAAsB,CACtB,CAAC;QAEF,yBAAyB;QACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,UAAU,CAAC,MAAA,cAAc,CAAC,iBAAiB,mCAAI,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,UAAU,CAAC,MAAA,cAAc,CAAC,oBAAoB,mCAAI,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,kBAAkB,GAAG,IAAI,oBAAoB,CACjD,IAAI,4BAA4B,CAAC,cAAc,CAAC,4BAA4B,CAAC,EAC7E,sBAAsB,CACtB,CAAC;QAEF,IAAI,CAAC,2BAA2B,GAAG,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAC,CAAC,CAAC;QAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;gBACrC,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;aACzC,CAAC,CAAC;SACH;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;gBACrC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;gBACrB,KAAK,EAAE,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;aAC9C,CAAC,CAAC;SACH;QAED,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAClC;QAED,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAElC,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CACvC,OAAO,qBAAqB,KAAK,QAAQ;YACxC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACrC,CAAC,CAAC,qBAAqB,CACxB,CAAC;QACF,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC5C,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE;YAChC,KAAK,EAAE,CAAC,cAAsB,EAAE,EAAE;gBACjC,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;oBACrE,MAAM,EAAC,OAAO,EAAE,wBAAwB,GAAG,cAAc,EAAC,CAAC;iBAC3D;gBACD,kBAAkB,CAAC,cAAc,CAAC,CAAC;YACpC,CAAC;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAuB,GAAG,EAAE;YAC1D,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,6DAA6D;YAC7D,8BAA8B;YAC9B,QAAQ,IAAI,CAAC,yBAAyB,EAAE,EAAE;gBACzC,KAAK,CAAC;oBACL,OAAO,kBAAkB,CAAC;gBAC3B,KAAK,CAAC;oBACL,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzB,KAAK,CAAC;oBACL,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3B,KAAK,CAAC;oBACL,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B;YACD,OAAO,kBAAkB,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;YACpC,IAAI,KAAK,KAAK,IAAI,EAAE;gBACnB,OAAO,sBAAsB,CAAC;aAC9B;YACD,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBACnB,OAAO,8BAA8B,CAAC;aACtC;YACD,OAAO,8BAA8B,CAAC;QACvC,CAAC,CAAC,CAAC;QAGH,kEAAkE;QAClE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjD,oDAAoD;QACpD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,cAAoC;;QAChD,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;SAClC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvD,IAAI,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EACzC,MAAM,GAAG,IAAI,CAAC;YAEf,IAAI,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;gBAC/C,MAAM,GAAG,IAAI,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACxD;iBAAM,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,aAAa,EAAE;gBAC7D,MAAM,GAAG,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACnD;iBAAM,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,YAAY,EAAE;gBAC5D,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aAClD;iBAAM;gBACN,MAAM,EAAC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAC,CAAC;aACrE;YAED,qGAAqG;YACrG,wGAAwG;YACxG,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,wBAAwB,CAAC,kBAAkB,EAAE;gBAC1F,SAAS;aACT;YAED,MAAM,WAAW,GAAG,MAAA,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,mCAAI,CAAC,CAAC;YACnF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7C,iFAAiF;YACjF,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBACrE,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAC/D;aACD;SACD;QAED,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,YAAoB;QACrC,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;QACrC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAChE,MAAM,EAAC,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,aAAa,CAAC,YAAoB;QACjC,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;QACrC,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAClE,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;SACtD;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,IAAS;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAE1C,2EAA2E;QAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,EAAE;gBACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,OAAO;aACP;SACD;aAAM;YACN,sEAAsE;YACtE,uCAAuC;YACvC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,EAAE;gBACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,OAAO;aACP;SACD;IACF,CAAC;IAED,iBAAiB,CAAC,IAAS;QAC1B,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,kBAAkB,CAAC,EAAE;YAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClE,IAAI,WAAW,IAAI,CAAC,EAAE;gBACrB,IAAI,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE;oBAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,IAA0B,CAAC;oBAC/C,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;iBACrE;aACD;SACD;IACF,CAAC;IAED,iEAAiE;IACjE,YAAY,CAAC,MAA0B,EAAE,KAAY;QACpD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAClB,OAAO;SACP;QAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;YACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACrC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,aAAa;QACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,MAAM,GAAG,IAAI,mBAAmB,CAAC;YACpC,EAAE,EAAE,wBAAwB,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB;YACnE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC,gBAAgB;SAC5C,EAAE,IAAI,CAAC,CAAC;QAET,wBAAwB;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,YAAY;QACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,MAAM,GAAG,IAAI,kBAAkB,CAAC;YACnC,EAAE,EAAE,wBAAwB,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB;YACnE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC,gBAAgB;SAChD,EAAE,IAAI,CAAC,CAAC;QAET,wBAAwB;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,uBAAuB,CAAC,MAA0B;QACzD,8EAA8E;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAE1C,uEAAuE;QACvE,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;YACxE,IAAI,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;YACvC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5B,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SAClC;aAAM;YACN,sDAAsD;YACtD,2DAA2D;YAC3D,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC5B;IACF,CAAC;IAED,iEAAiE;IACjE,WAAW;QACV,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEzC,6BAA6B;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;QAEhD,kBAAkB;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IAES,kBAAkB;;QAC3B,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;QACnE,MAAM,uBAAuB,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC;QAErC,IAAI,QAAQ,GAAyB;YACpC,MAAM,EAAE;gBACP,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,uBAAuB;aAChC;YACD,OAAO,EAAE,EAAE;YACX,YAAY,EAAE;gBACb,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,CAAC,MAAM,EAAE,mCAAI,EAAE,EAAE,UAAU,SAAS,EAAE,OAAO;oBAC9F,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;wBACnC,OAAO,KAAK,CAAC,CAAC,uCAAuC;qBACrD;oBAED,uEAAuE;oBACvE,OAAO,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/E,CAAC,CAAC;aACF;YAED,2BAA2B,EAAE,IAAI,CAAC,6BAA6B,EAAE;YACjE,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;YAErD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC3C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACjD,4BAA4B,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;YAE5D,iBAAiB,EAAE,MAAA,MAAA,IAAI,CAAC,qBAAqB,0CAAE,iBAAiB,mCAAI,kCAAkC;YACtG,4BAA4B;YAC5B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SAC3C,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,MAAM;gBAChF,IAAI,MAAM,KAAK,IAAI,EAAE;oBACpB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;iBAC9C;YACF,CAAC,CAAC,CAAC;SACH;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,iEAAiE;IACjE,aAAa;QACZ,8EAA8E;QAC9E,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAE3D,kDAAkD;QAClD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,iBAAiB;QAChB,gEAAgE;QAEhE,MAAM,YAAY,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAC1D,IAAI,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAE/D,YAAY,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,GAAG,EAAE;gBACV,UAAU,CAAC,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;SACD,CAAC,CAAC;QAEH,6FAA6F;QAC7F,gEAAgE;QAChE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,6DAA6D;QAC7D,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YACnE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,iHAAiH;QACjH,gHAAgH;QAChH,IAAI,2BAA2B,GAAG,CAAC,GAAc,EAAE,YAAoB,EAAE,EAAE;YAC1E,kFAAkF;YAClF,0BAA0B;YAC1B,UAAU,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAErC,4BAA4B;YAC5B,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC7F,CAAC,CAAC;QAEF,UAAU,CAAC,QAAQ,CAAC;YACnB,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAE1B,uCAAuC;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;wBACvC,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;4BACrE,KAAK,CAAC,sBAAsB,CAAC,CAAC;4BAC9B,OAAO,KAAK,CAAC;yBACb;qBACD;iBACD;gBAED,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YACb,CAAC;YACD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;oBACnC,sEAAsE;oBACtE,gCAAgC;oBAChC,OAAO;iBACP;gBAED,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;oBAClD,2BAA2B,CAAC,GAAG,EAAE,gEAAgE,CAAC,CAAC;oBACnG,OAAO;iBACP;gBAED,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;oBACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7C,yBAAyB;oBACzB,UAAU,CAAC,SAAS,EAAE,CAAC;oBACvB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC1B;gBAED,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;oBAC1D,0CAA0C;oBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAExB,qFAAqF;oBACrF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBAC7B,UAAU,CAAC,GAAG,EAAE;wBACf,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;iBACR;YAEF,CAAC;YACD,KAAK,EAAE,UAAU,GAAG,EAAE,MAAM,EAAE,YAAY;gBACzC,2BAA2B,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAChD,CAAC;SACD,CAAC,CAAC;QAEH,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC/D,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,iEAAiE;IACjE,gBAAgB;QACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;;AAlgBc,0BAAC,GAAG,WAAW,CAAC;AAChB,2CAAkB,GAAY,IAAI,CAAC;AAsBnC,uCAAc,GAAG,oBAAoB,CAAC;AA8etD,MAAM,CAAC;IACN,eAAe,GAAG,IAAI,wBAAwB,CAC7C,kBAAkB,CAAC,cAAc,EACjC,kBAAkB,CAAC,aAAa,EAChC,kBAAkB,CAAC,WAAW,EAC9B,kBAAkB,CAAC,cAAc,CACjC,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAE1F,kBAAkB;IAClB,IAAI,OAAQ,MAAc,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE;QACnD,MAAM,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAAC;YAC/D,KAAK,EAAE;gBACN,OAAO,EAAE,mCAAmC;aAC5C;SACD,CAAC,CAAC;KACH;AACF,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"dashboard-widget-editor.js","sourceRoot":"","sources":["dashboard-widget-editor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/dashboard-widget-editor/dashboard-widget-editor.ts b/extras/modules/dashboard-widget-editor/dashboard-widget-editor.ts index f96a73b..d928d12 100644 --- a/extras/modules/dashboard-widget-editor/dashboard-widget-editor.ts +++ b/extras/modules/dashboard-widget-editor/dashboard-widget-editor.ts @@ -2,7 +2,7 @@ /// /// /// -/// +/// /// /// @@ -391,7 +391,7 @@ class AmeDashboardWidgetEditor { }, widgets: [], welcomePanel: { - grantAccess: _.pick(this.welcomePanel?.grantAccess.getAll() ?? {}, function (hasAccess, actorId) { + grantAccess: _.pickBy(this.welcomePanel?.grantAccess.getAll() ?? {}, function (hasAccess, actorId) { if (typeof actorId === 'undefined') { return false; //This should never happen in practice. } diff --git a/extras/modules/dashboard-widget-editor/dashboard-widget.js b/extras/modules/dashboard-widget-editor/dashboard-widget.js index 22c2d11..2811fd4 100644 --- a/extras/modules/dashboard-widget-editor/dashboard-widget.js +++ b/extras/modules/dashboard-widget-editor/dashboard-widget.js @@ -1,6 +1,6 @@ "use strict"; /// -/// +/// /// /// class AmeDashboardWidget { @@ -13,6 +13,11 @@ class AmeDashboardWidget { this.canBeMoved = true; this.propertyTemplate = ''; this.widgetType = null; + //"grantAccess" must always be an object. In PHP, it's an associative array, which + //is converted to a plain array if it's empty. + if (AmeDashboardWidget._.isArray(settings['grantAccess'])) { + settings['grantAccess'] = {}; + } this.rawProperties = settings; this.widgetEditor = widgetEditor; this.id = settings['id']; diff --git a/extras/modules/dashboard-widget-editor/dashboard-widget.js.map b/extras/modules/dashboard-widget-editor/dashboard-widget.js.map index 1708072..5c4cd2e 100644 --- a/extras/modules/dashboard-widget-editor/dashboard-widget.js.map +++ b/extras/modules/dashboard-widget-editor/dashboard-widget.js.map @@ -1 +1 @@ -{"version":3,"file":"dashboard-widget.js","sourceRoot":"","sources":["dashboard-widget.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dashboard-widget.js","sourceRoot":"","sources":["dashboard-widget.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/dashboard-widget-editor/dashboard-widget.ts b/extras/modules/dashboard-widget-editor/dashboard-widget.ts index 7f86f96..97189df 100644 --- a/extras/modules/dashboard-widget-editor/dashboard-widget.ts +++ b/extras/modules/dashboard-widget-editor/dashboard-widget.ts @@ -1,5 +1,5 @@ /// -/// +/// /// /// @@ -50,6 +50,12 @@ abstract class AmeDashboardWidget { protected widgetType: string | null = null; protected constructor(settings: WidgetPropertyMap, widgetEditor: AmeDashboardWidgetEditor) { + //"grantAccess" must always be an object. In PHP, it's an associative array, which + //is converted to a plain array if it's empty. + if (AmeDashboardWidget._.isArray(settings['grantAccess'])) { + settings['grantAccess'] = {}; + } + this.rawProperties = settings; this.widgetEditor = widgetEditor; diff --git a/extras/modules/easy-hide/easy-hide-style.css b/extras/modules/easy-hide/easy-hide-style.css index 8d05d98..ed51fb8 100644 --- a/extras/modules/easy-hide/easy-hide-style.css +++ b/extras/modules/easy-hide/easy-hide-style.css @@ -207,13 +207,25 @@ input[type=checkbox].ame-eh-negative-box:checked:before { background-color: #ffff00; } +.ame-eh-category-tooltip { + color: #888; +} +.ame-eh-category-tooltip:hover { + color: #333; +} + .ame-eh-category-heading { background: #fcfcfc; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; - padding: 0.4em 12px 0.6em 12px; - margin: 1.5em -12px 0.7em -12px; - font-size: 1.3em; + padding: 0.4375rem 12px 0.625rem 12px; + margin: 1.5em -12px 0.75rem -12px; + font-size: 1.0625rem; +} +.ame-eh-category-heading .ame-eh-category-tooltip { + line-height: 1.0625rem; + height: 1.0625rem; + vertical-align: -3px; } .ame-eh-category-list { @@ -370,7 +382,7 @@ table.ame-eh-category-table-view thead th:first-child { font-size: 1.1em; font-weight: normal; margin-top: 0; - margin-bottom: -1.7627272727em; + margin-bottom: -1.4388636364rem; } /*# sourceMappingURL=easy-hide-style.css.map */ diff --git a/extras/modules/easy-hide/easy-hide-style.css.map b/extras/modules/easy-hide/easy-hide-style.css.map index 1da18c8..9d66b62 100644 --- a/extras/modules/easy-hide/easy-hide-style.css.map +++ b/extras/modules/easy-hide/easy-hide-style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../_cat-nav.scss","easy-hide-style.scss","../../../css/_indeterminate-checkbox.scss"],"names":[],"mappings":";AAGA;EACC;EACA;;;AAGD;EACC,kBATkB;;;AAYnB;EACC,kBAZqB;EAarB;;AAGA;EACC,kBAjBoB;;;AAwBrB;EACC,cAFS;;;AACV;EACC,cAFS;;;AACV;EACC,cAFS;;;AACV;EACC,cAFS;;;AAMX;EACC;EACA;EAEA;EAEA;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;;AAGD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;ACjDD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EAEA;EAEA;EACA;;;AAKD;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EAIA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;;AAMF;EACC;EACA;EAEA;;ACjGA;EACC;EACA,ODCe;ECMf;EACA;EAMA;EACA;EACA;EACA;EACA;;AAGD;EACC;IAEC,QADU;IAEV,OAFU;IAGV,aAHU;IAIV;IAEA;IACA;IACA;;;;ADwEF;EACC;EAIA;EACA;EACA;EAEA,OA/Ge;EAkHf;EACA;EACA;EAEA;EACA;EAEA;EACA;;;AAIF;EAEE;IAEC,QADU;IAEV,OAFU;IAGV,aAHU;IAIV;;;AAKH;EACC;EACA;EAEA;EACA;;;AAOD;EACC;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAOA;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EAEA;EACA;EAEA;EACA;EAEA,WAtLiB;;;AA2LlB;EACC;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EAEA;EACA;EACA;;;AAUA;EAEC;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAIA;EACC,kBDpQgB;;ACwQlB;EACC,kBDzQiB;;AC6QlB;EACC;EACA,KA1QuB;EA2QvB;;AAKD;EACC;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EAEA;EACA;;;AAID;EACC;EACA;EACA;EAEA;EACA,KAnTwB;;;AAwTzB;EACC,cAH6B;;;AAM9B;EACC;EACA;EACA;EACA;EACA;;AAEA;EAIC;EAEA;EACA;;;AAUA;EACC,cAHoB;;;AAErB;EACC,cAHoB;;;AAQvB;EACC;EAEA;EACA;;;AAGD;EACC;EACA;;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC,YD7XmB;EC8XnB;;;AAOH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAGA,WADe;EAEf;EAEA;EAIA","file":"easy-hide-style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../_cat-nav.scss","easy-hide-style.scss","../../../css/_indeterminate-checkbox.scss"],"names":[],"mappings":";AAGA;EACC;EACA;;;AAGD;EACC,kBATkB;;;AAYnB;EACC,kBAZqB;EAarB;;AAGA;EACC,kBAjBoB;;;AAwBrB;EACC,cAFS;;;AACV;EACC,cAFS;;;AACV;EACC,cAFS;;;AACV;EACC,cAFS;;;AAMX;EACC;EACA;EAEA;EAEA;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;;AAGD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AC5CD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EAEA;EAEA;EACA;;;AAKD;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EAIA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;;AAMF;EACC;EACA;EAEA;;ACtGA;EACC;EACA,ODEe;ECKf;EACA;EAMA;EACA;EACA;EACA;EACA;;AAGD;EACC;IAEC,QADU;IAEV,OAFU;IAGV,aAHU;IAIV;IAEA;IACA;IACA;;;;AD6EF;EACC;EAIA;EACA;EACA;EAEA,OAnHe;EAsHf;EACA;EACA;EAEA;EACA;EAEA;EACA;;;AAIF;EAEE;IAEC,QADU;IAEV,OAFU;IAGV,aAHU;IAIV;;;AAKH;EACC;EACA;EAEA;EACA;;;AAOD;EACC;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAOA;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;EACC;EAEA;EACA;EAEA;EACA;EAEA,WA9LiB;;AAgMjB;EACC,aAjMgB;EAkMhB,QAlMgB;EAmMhB;;;AAMF;EACC;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EAEA;EACA;EACA;;;AAUA;EAEC;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAIA;EACC,kBDvRgB;;AC2RlB;EACC,kBD5RiB;;ACgSlB;EACC;EACA,KA5RuB;EA6RvB;;AAKD;EACC;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EAEA;EACA;;;AAID;EACC;EACA;EACA;EAEA;EACA,KArUwB;;;AA0UzB;EACC,cAH6B;;;AAM9B;EACC;EACA;EACA;EACA;EACA;;AAEA;EAIC;EAEA;EACA;;;AAUA;EACC,cAHoB;;;AAErB;EACC,cAHoB;;;AAQvB;EACC;EAEA;EACA;;;AAGD;EACC;EACA;;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC,YDhZmB;ECiZnB;;;AAOH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EAGA,WADe;EAEf;EAEA;EAIA","file":"easy-hide-style.css"} \ No newline at end of file diff --git a/extras/modules/easy-hide/easy-hide-style.scss b/extras/modules/easy-hide/easy-hide-style.scss index 8999ae7..a30b62c 100644 --- a/extras/modules/easy-hide/easy-hide-style.scss +++ b/extras/modules/easy-hide/easy-hide-style.scss @@ -1,3 +1,4 @@ +@use "sass:math"; @use "../../cat-nav"; @import "../../../css/indeterminate-checkbox"; @import "../../../css/boxes"; @@ -6,8 +7,12 @@ $crossMarkColor: #D81536; $expectedAdminBarHeight: 32px; $itemContainerPadding: 12px; +@function pxToRem($px, $baseSize: 16) { + @return math.div($px, $baseSize) * 1rem; +} + $headingTopMargin: 1.5em; -$headingFontSize: 1.3em; +$headingFontSize: pxToRem(17); #ws_ame_editor_heading { float: none; @@ -180,16 +185,30 @@ input[type=checkbox].ame-eh-negative-box { background-color: #ffff00; } +.ame-eh-category-tooltip { + color: #888; + + &:hover { + color: #333; + } +} + .ame-eh-category-heading { background: #fcfcfc; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; - padding: 0.4em $itemContainerPadding 0.6em $itemContainerPadding; - margin: $headingTopMargin (-$itemContainerPadding) 0.70em (-$itemContainerPadding); + padding: pxToRem(7) $itemContainerPadding pxToRem(10) $itemContainerPadding; + margin: $headingTopMargin (-$itemContainerPadding) pxToRem(12) (-$itemContainerPadding); font-size: $headingFontSize; + + .ame-eh-category-tooltip { + line-height: $headingFontSize; + height: $headingFontSize; + vertical-align: -3px; //Align the tooltip with the heading text. Such a hack. + } } //region Category navigation @@ -407,5 +426,5 @@ $topSaveButtonContainerWidth: 130px; //Pull the next heading up. Because the font sizes are different, the em-based //measurements need to be scaled up proportionally. Let's add a safety factor, too. - margin-bottom: (-($headingTopMargin * ($headingFontSize / $rootFontSize)) + 0.01em); + margin-bottom: (-($headingTopMargin * ($headingFontSize / $rootFontSize)) + 0.01rem); } \ No newline at end of file diff --git a/extras/modules/easy-hide/easy-hide-template.php b/extras/modules/easy-hide/easy-hide-template.php index 5f93018..d60b785 100644 --- a/extras/modules/easy-hide/easy-hide-template.php +++ b/extras/modules/easy-hide/easy-hide-template.php @@ -147,6 +147,10 @@ class="ame-eh-category"> data-bind="checked: isChecked, indeterminate: isIndeterminate"> + + + diff --git a/extras/modules/easy-hide/easy-hide.js b/extras/modules/easy-hide/easy-hide.js index 41f5c16..aae5fea 100644 --- a/extras/modules/easy-hide/easy-hide.js +++ b/extras/modules/easy-hide/easy-hide.js @@ -1,9 +1,9 @@ /// /// /// -/// +/// /// -/// +/// /// 'use strict'; let ameEasyHideModel = null; @@ -16,7 +16,7 @@ var AmeEasyHide; SortOrder[SortOrder["SORT_INSERTION"] = 1] = "SORT_INSERTION"; })(SortOrder || (SortOrder = {})); class Category { - constructor(id, label, parent = null, invertItemState = false, filterState = null, initialSortOrder = SortOrder.SORT_ALPHA, itemSortOrder = SortOrder.SORT_INSERTION, priority = Category.DEFAULT_PRIORITY, subtitle = null) { + constructor(id, label, parent = null, invertItemState = false, filterState = null, initialSortOrder = SortOrder.SORT_ALPHA, itemSortOrder = SortOrder.SORT_INSERTION, priority = Category.DEFAULT_PRIORITY, subtitle = null, tooltip = null) { this.id = id; this.label = label; this.parent = parent; @@ -25,6 +25,7 @@ var AmeEasyHide; this.itemSortOrder = itemSortOrder; this.priority = priority; this.subtitle = subtitle; + this.tooltip = tooltip; this.containsSelectedCategory = ko.observable(false); this.isStandardRenderingEnabled = ko.observable(true); this.tableViewEnabled = false; @@ -96,7 +97,7 @@ var AmeEasyHide; return true; } else { - return !_.contains(item.parent.categories, this); + return !_.includes(item.parent.categories, this); } }) .value(); @@ -265,8 +266,8 @@ var AmeEasyHide; return this.cachedParentList; } static fromProps(props, parent = null, filterState = null) { - var _a, _b, _c, _d, _e; - return new Category(props.id, props.label, parent, (_a = props.invertItemState) !== null && _a !== void 0 ? _a : false, filterState, (_b = props.sort) !== null && _b !== void 0 ? _b : SortOrder.SORT_ALPHA, (_c = props.itemSort) !== null && _c !== void 0 ? _c : SortOrder.SORT_INSERTION, (_d = props.priority) !== null && _d !== void 0 ? _d : Category.DEFAULT_PRIORITY, (_e = props.subtitle) !== null && _e !== void 0 ? _e : null); + var _a, _b, _c, _d, _e, _f; + return new Category(props.id, props.label, parent, (_a = props.invertItemState) !== null && _a !== void 0 ? _a : false, filterState, (_b = props.sort) !== null && _b !== void 0 ? _b : SortOrder.SORT_ALPHA, (_c = props.itemSort) !== null && _c !== void 0 ? _c : SortOrder.SORT_INSERTION, (_d = props.priority) !== null && _d !== void 0 ? _d : Category.DEFAULT_PRIORITY, (_e = props.subtitle) !== null && _e !== void 0 ? _e : null, (_f = props.tooltip) !== null && _f !== void 0 ? _f : null); } } Category.DEFAULT_PRIORITY = 10; @@ -505,7 +506,7 @@ var AmeEasyHide; const keywords = this.searchKeywords(); if (keywords.length > 0) { const haystack = item.label.toLowerCase(); - const matchesKeywords = _.all(keywords, keyword => (haystack.indexOf(keyword) >= 0)); + const matchesKeywords = _.every(keywords, keyword => (haystack.indexOf(keyword) >= 0)); if (!matchesKeywords) { return false; } @@ -684,7 +685,7 @@ var AmeEasyHide; return false; } return category.isExpanded(); - }).pluck('id').value(); + }).map('id').value(); return result; //TypeScript can't infer that the item type is string. }).extend({ rateLimit: { timeout: 100, method: 'notifyWhenChangesStop' } }); expandedCategories.subscribe((newValue) => { @@ -699,7 +700,7 @@ var AmeEasyHide; //placeholders below the bottom of the viewport. _(this.rootCategory.sortedSubcategories()).take(2).forEach(function (c) { c.shouldRenderContent(true); - }).commit(); + }); //Always render the selected category. (_b = this.selectedCategory()) === null || _b === void 0 ? void 0 : _b.shouldRenderContent(true); this.selectedCategoryId = ko.pureComputed(() => { diff --git a/extras/modules/easy-hide/easy-hide.js.map b/extras/modules/easy-hide/easy-hide.js.map index f74646c..fda6487 100644 --- a/extras/modules/easy-hide/easy-hide.js.map +++ b/extras/modules/easy-hide/easy-hide.js.map @@ -1 +1 @@ -{"version":3,"file":"easy-hide.js","sourceRoot":"","sources":["easy-hide.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"easy-hide.js","sourceRoot":"","sources":["easy-hide.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/easy-hide/easy-hide.php b/extras/modules/easy-hide/easy-hide.php index 4101491..80369c2 100644 --- a/extras/modules/easy-hide/easy-hide.php +++ b/extras/modules/easy-hide/easy-hide.php @@ -466,6 +466,10 @@ class Category implements JsonSerializable { protected $itemSortOrder; protected $priority = null; protected $subtitle = null; + /** + * @var null|string + */ + protected $tooltip = null; protected $tableView = []; @@ -520,6 +524,15 @@ public function setSortPriority($priority) { return $this; } + /** + * @param string|null $tooltip + * @return $this + */ + public function setTooltip($tooltip) { + $this->tooltip = $tooltip; + return $this; + } + #[\ReturnTypeWillChange] public function jsonSerialize() { $result = [ @@ -547,6 +560,9 @@ public function jsonSerialize() { if ( !empty($this->subtitle) ) { $result['subtitle'] = $this->subtitle; } + if ( !empty($this->tooltip) ) { + $result['tooltip'] = $this->tooltip; + } if ( $this->priority !== null ) { $result['priority'] = $this->priority; } diff --git a/extras/modules/easy-hide/easy-hide.ts b/extras/modules/easy-hide/easy-hide.ts index 7326cae..2bf24e0 100644 --- a/extras/modules/easy-hide/easy-hide.ts +++ b/extras/modules/easy-hide/easy-hide.ts @@ -1,9 +1,9 @@ /// /// /// -/// +/// /// -/// +/// /// 'use strict'; @@ -32,6 +32,7 @@ namespace AmeEasyHide { columnCategory: string }, subtitle?: string + tooltip?: string; } class Category { @@ -79,7 +80,8 @@ namespace AmeEasyHide { public readonly initialSortOrder: SortOrder = SortOrder.SORT_ALPHA, public readonly itemSortOrder: SortOrder = SortOrder.SORT_INSERTION, private readonly priority: number = Category.DEFAULT_PRIORITY, - public readonly subtitle: string | null = null + public readonly subtitle: string | null = null, + public readonly tooltip: string | null = null ) { Category.counter++; this.safeElementId = 'ame-eh-category-n-' + Category.counter; @@ -157,7 +159,7 @@ namespace AmeEasyHide { if (item.parent === null) { return true; } else { - return !_.contains(item.parent.categories, this); + return !_.includes(item.parent.categories, this); } }) .value(); @@ -359,7 +361,8 @@ namespace AmeEasyHide { props.sort ?? SortOrder.SORT_ALPHA, props.itemSort ?? SortOrder.SORT_INSERTION, props.priority ?? Category.DEFAULT_PRIORITY, - props.subtitle ?? null + props.subtitle ?? null, + props.tooltip ?? null ); } } @@ -767,7 +770,7 @@ namespace AmeEasyHide { if (keywords.length > 0) { const haystack = item.label.toLowerCase(); - const matchesKeywords = _.all( + const matchesKeywords = _.every( keywords, keyword => (haystack.indexOf(keyword) >= 0) ); @@ -1032,7 +1035,7 @@ namespace AmeEasyHide { } return category.isExpanded(); - }).pluck('id').value(); + }).map('id').value(); return result as string[]; //TypeScript can't infer that the item type is string. }).extend({rateLimit: {timeout: 100, method: 'notifyWhenChangesStop'}}); @@ -1053,7 +1056,7 @@ namespace AmeEasyHide { //placeholders below the bottom of the viewport. _(this.rootCategory.sortedSubcategories()).take(2).forEach(function (c) { c.shouldRenderContent(true); - }).commit(); + }); //Always render the selected category. this.selectedCategory()?.shouldRenderContent(true); diff --git a/extras/modules/hide-others-posts/hide-others-posts.php b/extras/modules/hide-others-posts/hide-others-posts.php new file mode 100644 index 0000000..02f8db1 --- /dev/null +++ b/extras/modules/hide-others-posts/hide-others-posts.php @@ -0,0 +1,235 @@ +isRelevantQuery($query) ) { + return; + } + //Note: The tweak manager will only call our "enable..." callback if it determines that + //the tweak applies to the current user, so we don't need to check that here. + + $currentUser = wp_get_current_user(); + if ( empty($currentUser) || empty($currentUser->ID) ) { + return; + } + $postType = $query->get('post_type'); + if ( empty($postType) ) { + return; //Should never happen because isRelevantQuery() checks the post type. + } + + $query->set('author', $currentUser->ID); + + //Filter the number of posts by status to exclude posts that the user can't see. + $this->countFilterEnabled[$postType] = true; + + if ( !$this->postCountHooksAdded ) { + add_filter('wp_count_posts', [$this, 'filterPostCounts'], 10, 3); + //Clear the count cache when post statuses change. + add_action('transition_post_status', [$this, 'maybeClearPostCountCache'], 10, 3); + + $this->postCountHooksAdded = true; + } + } + + /** + * Filter for wp_count_posts() to restrict the counts to the current user's posts. + * + * This is largely a reimplementation of wp_count_posts() with the addition of the post_author + * restriction. Results are cached separately from the original function. + * + * @param \stdClass $counts + * @param string $type + * @param string $perm + * @return \stdClass + */ + public function filterPostCounts($counts, $type, $perm = '') { + //Should we filter this post type? + if ( empty($this->countFilterEnabled[$type]) || !is_admin() ) { + return $counts; + } + global $wpdb; + + $cacheKey = $this->getPostCountCacheKey($type, $perm); + $cache = wp_cache_get($cacheKey, 'counts'); + if ( $cache !== false ) { + return $cache; + } + + /** @noinspection PhpUnnecessaryCurlyVarSyntaxInspection */ + $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s"; + $params = [$type]; + + if ( ($perm === 'readable') && is_user_logged_in() ) { + $postTypeObject = get_post_type_object($type); + if ( !current_user_can($postTypeObject->cap->read_private_posts) ) { + $query .= " AND (post_status != 'private' OR ( post_author = %d AND post_status = 'private' )) "; + $params[] = get_current_user_id(); + } + } + + //Important part: Include only the user's own posts. + $query .= ' AND (post_author = %d) '; + $params[] = get_current_user_id(); + + $query .= ' GROUP BY post_status'; + + $results = (array)$wpdb->get_results( + //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- It is actually prepared, but PHPCS doesn't recognize it. + $wpdb->prepare($query, $params), + ARRAY_A + ); + + $counts = array_fill_keys(get_post_stati(), 0); + foreach ($results as $row) { + $counts[$row['post_status']] = $row['num_posts']; + } + $counts = (object)$counts; + + wp_cache_set($cacheKey, $counts, 'counts'); + return $counts; + } + + private function getPostCountCacheKey($postType, $perm = 'all') { + return 'ame_own_posts-' . $postType . '-' . $perm; + } + + /** + * @param string $newStatus + * @param string $oldStatus + * @param \WP_Post $post + */ + public function maybeClearPostCountCache($newStatus, $oldStatus, $post) { + if ( ($newStatus !== $oldStatus) && isset($post->post_type) ) { + wp_cache_delete($this->getPostCountCacheKey($post->post_type), 'counts'); + wp_cache_delete($this->getPostCountCacheKey($post->post_type, 'readable'), 'counts'); + } + } + + /** + * @param \ameTweakManager $manager + */ + public function registerTweaks($manager) { + $section = $manager->addSection(self::TWEAK_SECTION_ID, 'Hide Other Users\' Posts', 100); + + $notes = [ + 'Applies to post listings in the admin dashboard, like "Posts -> All Posts".', + 'Does not not prevent users from editing or deleting posts if they still have' + . ' the required role capabilities. Does not prevent users from viewing published' + . ' posts.', + ]; + $section->setDescription(implode("\n\n", $notes)); + + $tweakCallback = [$this, 'enableForPostTypeThisTime']; + + //Register a tweak for each post type. + $postTypes = get_post_types(['show_ui' => true], 'objects'); + foreach ($postTypes as $postType) { + if ( empty($postType->show_in_menu) ) { + continue; + } + + $postTypeId = $postType->name; + + $tweak = new ameDelegatedTweak( + self::TWEAK_ID_PREFIX . $postTypeId, + $postType->label, + $tweakCallback, + [$postTypeId] + ); + $tweak->setSectionId(self::TWEAK_SECTION_ID); + + $manager->addTweak($tweak); + } + //exit; + } + + public function enableForPostTypeThisTime($postType) { + $this->postFilterEnabledForPostType[$postType] = true; + + if ( !$this->postFilterAdded ) { + add_action('pre_get_posts', [$this, 'filterPostQuery']); + $this->postFilterAdded = true; + } + } + + private function isSupportedAdminPage() { + global $pagenow; + return in_array($pagenow, ['edit.php', 'upload.php'], true); + } + + /** + * @param \WP_Query $query + * @return bool + */ + private function isRelevantQuery($query) { + if ( + //Sanity check: Is it even a real query? + !($query instanceof WP_Query) + //We only care about queries made on admin pages. + || !$query->is_admin + ) { + return false; + } + + //Is the restriction enabled for this post type? + $postType = $query->get('post_type'); + if ( empty($postType) || empty($this->postFilterEnabledForPostType[$postType]) ) { + return false; + } + + //Special case: Retrieving media in grid mode. WordPress uses AJAX to load the media. + if ( + ($postType === 'attachment') + && wp_doing_ajax() + && isset($_REQUEST['action']) + && ($_REQUEST['action'] === 'query-attachments') + ) { + return true; + } + + //Normal case: An admin page with a list of posts. + return $query->is_main_query() && $this->isSupportedAdminPage(); + } + + public function addSectionToHideableSections($sections) { + //Alt: 'Post Listings' + $sections[self::TWEAK_SECTION_ID] = 'Posts by Other Users'; + return $sections; + } + + public function addRelatedWidgetContent($content = '') { + $tweaksTabUrl = $this->menuEditor->get_tab_url('tweaks'); + if ( empty($tweaksTabUrl) ) { + return $content; + } + + $content .= sprintf( + 'Hide other users\' posts', + esc_url($tweaksTabUrl) + ); + + return $content; + } +} \ No newline at end of file diff --git a/extras/modules/menu-styler/menu-styler-ui.js b/extras/modules/menu-styler/menu-styler-ui.js index 50e5040..32e1e9a 100644 --- a/extras/modules/menu-styler/menu-styler-ui.js +++ b/extras/modules/menu-styler/menu-styler-ui.js @@ -121,7 +121,7 @@ jQuery(function ($) { for (const presetName of Object.keys(colorPresets)) { //Remove empty string values (i.e. no color selected). This also //covers nulls and empty arrays/objects, but that shouldn't happen. - colorPresets[presetName] = _.omit(colorPresets[presetName], _.isEmpty); + colorPresets[presetName] = _.omitBy(colorPresets[presetName], _.isEmpty); //Remove the preset if it's empty. if (_.isEmpty(colorPresets[presetName])) { delete colorPresets[presetName]; diff --git a/extras/modules/menu-styler/menu-styler-ui.js.map b/extras/modules/menu-styler/menu-styler-ui.js.map index f55ab53..c1c4cf7 100644 --- a/extras/modules/menu-styler/menu-styler-ui.js.map +++ b/extras/modules/menu-styler/menu-styler-ui.js.map @@ -1 +1 @@ -{"version":3,"file":"menu-styler-ui.js","sourceRoot":"","sources":["menu-styler-ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"menu-styler-ui.js","sourceRoot":"","sources":["menu-styler-ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/menu-styler/menu-styler-ui.ts b/extras/modules/menu-styler/menu-styler-ui.ts index 5a08e7d..46cd18f 100644 --- a/extras/modules/menu-styler/menu-styler-ui.ts +++ b/extras/modules/menu-styler/menu-styler-ui.ts @@ -153,7 +153,7 @@ jQuery(function ($: JQueryStatic) { for (const presetName of Object.keys(colorPresets)) { //Remove empty string values (i.e. no color selected). This also //covers nulls and empty arrays/objects, but that shouldn't happen. - colorPresets[presetName] = _.omit(colorPresets[presetName], _.isEmpty); + colorPresets[presetName] = _.omitBy(colorPresets[presetName], _.isEmpty); //Remove the preset if it's empty. if (_.isEmpty(colorPresets[presetName])) { delete colorPresets[presetName]; diff --git a/extras/modules/metaboxes/ameMetaBoxEditor.php b/extras/modules/metaboxes/ameMetaBoxEditor.php index 975bdd5..2cb4fba 100644 --- a/extras/modules/metaboxes/ameMetaBoxEditor.php +++ b/extras/modules/metaboxes/ameMetaBoxEditor.php @@ -450,7 +450,7 @@ public function handleFormSubmission($action, $post = array()) { $this->settings = $settings; $this->saveSettings(); - wp_redirect($this->getTabUrl(array('updated' => 1))); + wp_redirect($this->getTabUrl(ameUtils::withSelectedActor(['updated' => 1], $post))); exit; } } @@ -506,8 +506,10 @@ public function enqueueGutenbergScripts() { ); $boxesToSelectors = array( - 'submitdiv' => '#editor .edit-post-post-schedule', - 'formatdiv' => '#editor .editor-post-format, #editor .edit-post-post-schedule + .components-panel__row', + 'submitdiv' => '#editor .edit-post-post-schedule', + 'authordiv' => '#editor .edit-post-post-author', + 'formatdiv' => '#editor .editor-post-format, #editor .edit-post-post-schedule + .components-panel__row', + 'revisionsdiv' => '#editor .components-panel .edit-post-last-revision__panel', ); $panelsToRemove = array(); diff --git a/extras/modules/metaboxes/metabox-editor.js b/extras/modules/metaboxes/metabox-editor.js index b35b79b..edcaac9 100644 --- a/extras/modules/metaboxes/metabox-editor.js +++ b/extras/modules/metaboxes/metabox-editor.js @@ -1,5 +1,5 @@ "use strict"; -/// +/// /// /// /// @@ -7,26 +7,8 @@ class AmeMetaBoxEditor { constructor(settings, forceRefreshUrl) { this.canAnyBoxesBeDeleted = false; this.actorSelector = new AmeActorSelector(AmeActors, true); - //Wrap the selected actor in a computed observable so that it can be used with Knockout. - let _selectedActor = ko.observable(this.actorSelector.selectedActor - ? AmeActors.getActor(this.actorSelector.selectedActor) - : null); - this.selectedActor = ko.computed({ - read: function () { - return _selectedActor(); - }, - write: (newActor) => { - this.actorSelector.setSelectedActor(newActor ? newActor.getId() : null); - } - }); - this.actorSelector.onChange((newSelectedActorId) => { - if (newSelectedActorId === null) { - _selectedActor(null); - } - else { - _selectedActor(AmeActors.getActor(newSelectedActorId)); - } - }); + this.actorSelector.setSelectedActorFromUrl(); + this.selectedActor = this.actorSelector.createActorObservable(ko); this.screens = ko.observableArray(AmeMetaBoxEditor._.map(settings.screens, (screenData, id) => { let metaBoxes = screenData['metaBoxes:']; if (AmeMetaBoxEditor._.isEmpty(metaBoxes)) { @@ -110,6 +92,15 @@ class AmeMetaBox { this.uniqueHtmlId = 'ame-mb-item-' + AmeMetaBox.counter; const _ = AmeMetaBox._; this.metaBoxEditor = metaBoxEditor; + //"grantAccess" and "defaultVisibility" may be incorrectly JSON-encoded as arrays + //when they are empty. Leaving them as arrays could prevent us from correctly + //serializing them later, so let's convert them to objects. + const potentialArrays = ['grantAccess', 'defaultVisibility']; + _.forEach(potentialArrays, (key) => { + if (_.isArray(settings[key])) { + settings[key] = {}; + } + }); this.initialProperties = settings; if (settings['parentCollectionKey']) { this.parentCollectionKey = settings['parentCollectionKey']; diff --git a/extras/modules/metaboxes/metabox-editor.js.map b/extras/modules/metaboxes/metabox-editor.js.map index 04b281d..bd94e6f 100644 --- a/extras/modules/metaboxes/metabox-editor.js.map +++ b/extras/modules/metaboxes/metabox-editor.js.map @@ -1 +1 @@ -{"version":3,"file":"metabox-editor.js","sourceRoot":"","sources":["metabox-editor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"metabox-editor.js","sourceRoot":"","sources":["metabox-editor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/metaboxes/metabox-editor.ts b/extras/modules/metaboxes/metabox-editor.ts index 51ab839..fca15c7 100644 --- a/extras/modules/metaboxes/metabox-editor.ts +++ b/extras/modules/metaboxes/metabox-editor.ts @@ -1,4 +1,4 @@ -/// +/// /// /// /// @@ -37,28 +37,8 @@ class AmeMetaBoxEditor { constructor(settings: MetaBoxEditorSettings, forceRefreshUrl: string) { this.actorSelector = new AmeActorSelector(AmeActors, true); - - //Wrap the selected actor in a computed observable so that it can be used with Knockout. - let _selectedActor = ko.observable( - this.actorSelector.selectedActor - ? AmeActors.getActor(this.actorSelector.selectedActor) - : null - ); - this.selectedActor = ko.computed({ - read: function () { - return _selectedActor(); - }, - write: (newActor) => { - this.actorSelector.setSelectedActor(newActor ? newActor.getId() : null); - } - }); - this.actorSelector.onChange((newSelectedActorId: string | null) => { - if (newSelectedActorId === null) { - _selectedActor(null); - } else { - _selectedActor(AmeActors.getActor(newSelectedActorId)); - } - }); + this.actorSelector.setSelectedActorFromUrl(); + this.selectedActor = this.actorSelector.createActorObservable(ko); this.screens = ko.observableArray(AmeMetaBoxEditor._.map( settings.screens, @@ -187,6 +167,16 @@ class AmeMetaBox { const _ = AmeMetaBox._; this.metaBoxEditor = metaBoxEditor; + + //"grantAccess" and "defaultVisibility" may be incorrectly JSON-encoded as arrays + //when they are empty. Leaving them as arrays could prevent us from correctly + //serializing them later, so let's convert them to objects. + const potentialArrays = ['grantAccess', 'defaultVisibility']; + _.forEach(potentialArrays, (key) => { + if (_.isArray(settings[key])) { + settings[key] = {}; + } + }); this.initialProperties = settings; if (settings['parentCollectionKey']) { diff --git a/extras/modules/role-editor/ameRexSettingsValidator.php b/extras/modules/role-editor/ameRexSettingsValidator.php index fabd47f..13ad403 100644 --- a/extras/modules/role-editor/ameRexSettingsValidator.php +++ b/extras/modules/role-editor/ameRexSettingsValidator.php @@ -6,10 +6,10 @@ */ class ameRexSettingsValidator { private $inputData = ''; - private $errors = array(); + private $errors = []; - private $preExistingCapabilities = array(); - private $preExistingUserDefinedCaps = array(); + private $preExistingCapabilities = []; + private $preExistingUserDefinedCaps = []; private $oldEditableRoleSettings; /** @@ -20,11 +20,11 @@ class ameRexSettingsValidator { private $userDefinedCaps = null; private $modifiedUserDefinedCapCount = 0; - private $rolesToDelete = array(); - private $rolesToCreate = array(); - private $rolesToModify = array(); - private $usersToModify = array(); - private $knownRoleIDs = array(); + private $rolesToDelete = []; + private $rolesToCreate = []; + private $rolesToModify = []; + private $usersToModify = []; + private $knownRoleIDs = []; private $existingUsers; private $editableRoleSettings; @@ -37,7 +37,7 @@ class ameRexSettingsValidator { private $effectiveEditableRoles; /** - * @param string $jsonString Settings submitted by the user. + * @param string $jsonString Settings submitted by the user. * @param array $allCapabilities Capabilities that exist now, before the submitted settings are applied. * @param array $userDefinedCaps * @param array $oldEditableRoleSettings @@ -57,10 +57,10 @@ public function __construct( } public function validate() { - $this->errors = array(); + $this->errors = []; $data = json_decode($this->inputData, true); - if ($data === null) { + if ( $data === null ) { $this->errors[] = new WP_Error( 'ame_rex_invalid_json', 'JSON parsing failed. Submitted settings are probably invalid or corrupted.' @@ -68,7 +68,7 @@ public function validate() { return $this->errors; } - if (!is_array($data)) { + if ( !is_array($data) ) { $this->errors[] = new WP_Error( 'ame_rex_unexpected_data_type', sprintf('JSON parsing failed. Expected type: associative array, actual type: %s.', gettype($data)) @@ -76,13 +76,13 @@ public function validate() { return $this->errors; } - $submittedRoles = array(); + $submittedRoles = []; foreach ($data['roles'] as $tempRole) { $submittedRoles[$tempRole['name']] = $tempRole; } $wpRoles = ameRoleUtils::get_roles();; - $existingRoles = (isset($wpRoles->roles) && is_array($wpRoles->roles)) ? $wpRoles->roles : array(); + $existingRoles = (isset($wpRoles->roles) && is_array($wpRoles->roles)) ? $wpRoles->roles : []; $knownRoleIDs = array_fill_keys( array_merge(array_keys($existingRoles), array_keys($submittedRoles)), @@ -98,7 +98,7 @@ public function validate() { $rolesToDelete = array_diff_key($editableRoles, $submittedRoles); //Don't delete the default role. The user should set a different default role first. $defaultRole = get_option('default_role'); - if (isset($rolesToDelete[$defaultRole])) { + if ( isset($rolesToDelete[$defaultRole]) ) { unset($rolesToDelete[$defaultRole]); $this->errors[] = new WP_Error( 'ame_rex_cannot_delete_default_role', @@ -106,11 +106,11 @@ public function validate() { ); } //Don't delete roles that are currently assigned to one or more users. This check may be slow. - if (count($rolesToDelete) > 0) { + if ( count($rolesToDelete) > 0 ) { $usersByRole = count_users(); - if (isset($usersByRole['avail_roles'])) { + if ( isset($usersByRole['avail_roles']) ) { foreach ($usersByRole['avail_roles'] as $id => $totalUsers) { - if (($totalUsers > 0) && isset($rolesToDelete[$id])) { + if ( ($totalUsers > 0) && isset($rolesToDelete[$id]) ) { unset($rolesToDelete[$id]); $this->errors[] = new WP_Error( 'ame_rex_deleted_role_has_users', @@ -125,8 +125,8 @@ public function validate() { } } - $rolesToCreate = array(); - $rolesToModify = array(); + $rolesToCreate = []; + $rolesToModify = []; //Validate all new or modified properties. foreach ($submittedRoles as $id => $role) { @@ -134,7 +134,7 @@ public function validate() { $isModifiedRole = false; //Only modify existing roles if they're editable. - if (!$isNewRole && (!isset($editableRoles[$id]) || !isset($wpRoles->role_objects[$id]))) { + if ( !$isNewRole && (!isset($editableRoles[$id]) || !isset($wpRoles->role_objects[$id])) ) { $this->errors[] = new WP_Error( 'ame_rex_role_not_editable', sprintf('You don\'t have permission to edit role "%s"', $id) @@ -143,18 +143,18 @@ public function validate() { } //Validate the role ID (internal name). - if ($isNewRole) { + if ( $isNewRole ) { $state = $this->validateRoleName($id, $existingRoles, $existingCapabilities); - if (is_wp_error($state)) { + if ( is_wp_error($state) ) { $this->errors[] = $state; continue; } } //Validate the display name. - if ($isNewRole || ($editableRoles[$id]['name'] !== $role['displayName'])) { + if ( $isNewRole || ($editableRoles[$id]['name'] !== $role['displayName']) ) { $state = $this->validateRoleDisplayName($role['displayName']); - if (is_wp_error($state)) { + if ( is_wp_error($state) ) { $this->errors[] = $state; continue; } @@ -167,23 +167,23 @@ public function validate() { $existingCapabilities, $knownRoleIDs ); - if (!empty($capErrors)) { + if ( !empty($capErrors) ) { $this->errors = array_merge($this->errors, $capErrors); continue; } - if (!$isNewRole) { + if ( !$isNewRole ) { //Have any of the capabilities changed? $oldCaps = $this->menuEditor->castValuesToBool($wpRoles->roles[$id]['capabilities']); - if (!$this->areAssocArraysEqual($oldCaps, $role['capabilities'])) { + if ( !$this->areAssocArraysEqual($oldCaps, $role['capabilities']) ) { $isModifiedRole = true; } } //Everything looks valid. - if ($isNewRole) { + if ( $isNewRole ) { $rolesToCreate[$id] = $role; - } else if ($isModifiedRole) { + } else if ( $isModifiedRole ) { $rolesToModify[$id] = $role; } } @@ -193,31 +193,31 @@ public function validate() { //Validate user settings. //----------------------- - $submittedUsers = ameUtils::get($data, 'users', array()); - if (!is_array($submittedUsers)) { - $submittedUsers = array(); + $submittedUsers = ameUtils::get($data, 'users', []); + if ( !is_array($submittedUsers) ) { + $submittedUsers = []; } - $existingUsers = array(); - $usersToModify = array(); + $existingUsers = []; + $usersToModify = []; foreach ($submittedUsers as $modifiedUser) { //Skip malformed user records that are missing required fields. - if (!isset($modifiedUser, $modifiedUser['userId'], $modifiedUser['capabilities'], $modifiedUser['roles'])) { + if ( !isset($modifiedUser, $modifiedUser['userId'], $modifiedUser['capabilities'], $modifiedUser['roles']) ) { continue; } $userId = intval(ameUtils::get($modifiedUser, 'userId', 0)); //User must exist. $user = get_user_by('id', $userId); - if (empty($user) || !$user->exists()) { + if ( empty($user) || !$user->exists() ) { continue; } - $previousRoles = array(); - if (isset($user->roles) && is_array($user->roles)) { + $previousRoles = []; + if ( isset($user->roles) && is_array($user->roles) ) { $previousRoles = array_values($user->roles); } $previousCapsWithoutRoles = array_diff_key( - (isset($user->caps) && is_array($user->caps)) ? $user->caps : array(), + (isset($user->caps) && is_array($user->caps)) ? $user->caps : [], array_fill_keys($previousRoles, true) ); @@ -246,21 +246,21 @@ public function validate() { //Have any of the roles or capabilities actually changed? $isModifiedUser = false; $oldCaps = $this->menuEditor->castValuesToBool($previousCapsWithoutRoles); - if (!$this->areAssocArraysEqual($oldCaps, $newCapsWithoutRoles)) { + if ( !$this->areAssocArraysEqual($oldCaps, $newCapsWithoutRoles) ) { $isModifiedUser = true; } //Note: The order of roles is significant. - if (!$this->areAssocArraysEqual($previousRoles, $newRoles)) { + if ( !$this->areAssocArraysEqual($previousRoles, $newRoles) ) { $isModifiedUser = true; } //Don't check permissions if the user hasn't actually made any changes. - if (!$isModifiedUser) { + if ( !$isModifiedUser ) { continue; } //The current user must have permission to edit this user. - if (!current_user_can('edit_user', $userId)) { + if ( !current_user_can('edit_user', $userId) ) { $this->errors[] = new WP_Error( 'ame_uneditable_user', sprintf('You don\'t have sufficient permissions to edit the user with ID #%d.', $userId) @@ -269,16 +269,16 @@ public function validate() { } //Now validation errors actually matter. - if (!empty($capErrors)) { + if ( !empty($capErrors) ) { $this->errors = array_merge($this->errors, $capErrors); continue; } - if (!empty($roleErrors)) { + if ( !empty($roleErrors) ) { $this->errors = array_merge($this->errors, $roleErrors); continue; } - if ($isModifiedUser) { + if ( $isModifiedUser ) { $usersToModify[$userId] = $modifiedUser; $existingUsers[$userId] = $user; } @@ -286,11 +286,11 @@ public function validate() { //Now that we know what roles exist, we can validate and save user-defined capabilities. $this->userDefinedCaps = null; - if (isset($data['userDefinedCaps']) && is_array($data['userDefinedCaps'])) { - $validCaps = array(); + if ( isset($data['userDefinedCaps']) && is_array($data['userDefinedCaps']) ) { + $validCaps = []; foreach ($data['userDefinedCaps'] as $capability) { $status = $this->validateCapabilityName($capability, $knownRoleIDs); - if (!is_wp_error($status)) { + if ( !is_wp_error($status) ) { $validCaps[$capability] = true; } } @@ -302,29 +302,29 @@ public function validate() { } //Validate "editable roles" settings. - $submittedEditableRoles = ameUtils::get($data, 'editableRoles', array()); - if (!is_array($submittedEditableRoles)) { - $submittedEditableRoles = array(); - } - $allowedStrategies = array('auto', 'none', 'user-defined-list'); - $newEditableRoles = array(); - foreach($submittedEditableRoles as $actorId => $settings) { - if (!$this->userCanEditActor($actorId, $editableRoles)) { - if (isset($this->oldEditableRoleSettings[$actorId])) { + $submittedEditableRoles = ameUtils::get($data, 'editableRoles', []); + if ( !is_array($submittedEditableRoles) ) { + $submittedEditableRoles = []; + } + $allowedStrategies = ['auto', 'none', 'user-defined-list']; + $newEditableRoles = []; + foreach ($submittedEditableRoles as $actorId => $settings) { + if ( !$this->userCanEditActor($actorId, $editableRoles) ) { + if ( isset($this->oldEditableRoleSettings[$actorId]) ) { $newEditableRoles[$actorId] = $this->oldEditableRoleSettings[$actorId]; } continue; } //Validate the strategy. - if (!isset($settings['strategy']) || !in_array($settings['strategy'], $allowedStrategies)) { + if ( !isset($settings['strategy']) || !in_array($settings['strategy'], $allowedStrategies) ) { $settings['strategy'] = 'auto'; } //The user-defined role list, if any, must be in the form of [roleId => true]. - if ($settings['strategy'] === 'user-defined-list') { - $sanitizedList = array(); - if (is_array($settings['userDefinedList'])) { - foreach(array_keys($settings['userDefinedList']) as $roleId) { + if ( $settings['strategy'] === 'user-defined-list' ) { + $sanitizedList = []; + if ( is_array($settings['userDefinedList']) ) { + foreach (array_keys($settings['userDefinedList']) as $roleId) { $sanitizedList[strval($roleId)] = true; } } @@ -333,22 +333,17 @@ public function validate() { $settings['userDefinedList'] = null; } - //"auto" is the default so we don't need to store it. - if ($settings['strategy'] === 'auto') { - $settings = null; - } - $newEditableRoles[$actorId] = $settings; } //Restore removed settings if the user doesn't have permission to edit them. $removedSettings = array_diff_key($this->oldEditableRoleSettings, $submittedEditableRoles); - foreach($removedSettings as $actorId => $settings) { - if (!$this->userCanEditActor($actorId, $editableRoles) && isset($this->oldEditableRoleSettings[$actorId]) ) { + foreach ($removedSettings as $actorId => $settings) { + if ( !$this->userCanEditActor($actorId, $editableRoles) && isset($this->oldEditableRoleSettings[$actorId]) ) { $newEditableRoles[$actorId] = $this->oldEditableRoleSettings[$actorId]; } } //Check if we have actually made any changes. - if (!$this->areAssocArraysRecursivelyEqual($newEditableRoles, $this->oldEditableRoleSettings)) { + if ( !$this->areAssocArraysRecursivelyEqual($newEditableRoles, $this->oldEditableRoleSettings) ) { $this->areEditableRolesModified = true; } @@ -369,15 +364,15 @@ public function validate() { * @param array $capabilities * @return bool|WP_Error */ - private function validateRoleName($name, $roles = array(), $capabilities = array()) { + private function validateRoleName($name, $roles = [], $capabilities = []) { $name = trim($name); - if ($name === '') { + if ( $name === '' ) { return new WP_Error('ame_empty_role_name', 'Role name cannot be empty.'); } //Name can only contain certain characters. - if (preg_match('/[^a-z0-9_]/', $name)) { + if ( preg_match('/[^a-z0-9_]/', $name) ) { return new WP_Error( 'ame_invalid_characters_in_name', 'Role name contains invalid characters. Please use only lowercase English letters, numbers, and underscores.' @@ -385,18 +380,18 @@ private function validateRoleName($name, $roles = array(), $capabilities = array } //Numeric names could cause problems with how PHP handles associative arrays. - if (is_numeric($name)) { + if ( is_numeric($name) ) { return new WP_Error('ame_numeric_role_name', 'Numeric role names are not allowed.'); } //Name must not be a duplicate. - if (array_key_exists($name, $roles)) { + if ( array_key_exists($name, $roles) ) { return new WP_Error('ame_duplicate_role', 'Duplicate role name.'); } //WP stores capabilities and role names in the same associative array, //so they must be unique with respect to each other. - if (array_key_exists($name, $capabilities)) { + if ( array_key_exists($name, $capabilities) ) { return new WP_Error('ame_role_matches_capability', 'Role name can\'t be the same as a capability name.'); } @@ -410,11 +405,11 @@ private function validateRoleName($name, $roles = array(), $capabilities = array private function validateRoleDisplayName($displayName) { $displayName = trim($displayName); - if ($displayName === '') { + if ( $displayName === '' ) { return new WP_Error('ame_empty_role_display_name', 'Role display name cannot be empty.'); } - if (preg_match('/[><&\r\n\t]/', $displayName)) { + if ( preg_match('/[><&\r\n\t]/', $displayName) ) { return new WP_Error('ame_invalid_display_name_chars', 'Role display name contains invalid characters.'); } @@ -426,26 +421,26 @@ private function validateRoleDisplayName($displayName) { * @param string[] $roles * @return bool|WP_Error */ - private function validateCapabilityName($capability, $roles = array()) { - if ($capability === '') { + private function validateCapabilityName($capability, $roles = []) { + if ( $capability === '' ) { return new WP_Error('ame_empty_cap', 'Capability name must not be an empty string.'); } //WP API allows completely arbitrary capability names, but this plugin forbids some characters //for sanity's sake and to avoid XSS. static $invalidCharacters = '/[><&\r\n\t]/'; - if (preg_match($invalidCharacters, $capability)) { + if ( preg_match($invalidCharacters, $capability) ) { return new WP_Error('ame_invalid_cap_characters', 'Capability name contains invalid characters.'); } //PHP doesn't allow numeric string keys, and there's no conceivable reason to start the name with a space. static $invalidFirstCharacter = '/^[\s0-9]/i'; - if (preg_match($invalidFirstCharacter, $capability)) { + if ( preg_match($invalidFirstCharacter, $capability) ) { return new WP_Error('ame_invalid_cap_start', 'Capability name cannot start with a number or a space.'); } //Roles and caps are stored in the same array, so they must be mutually unique. - if (array_key_exists($capability, $roles)) { + if ( array_key_exists($capability, $roles) ) { return new WP_Error( 'ame_cap_equals_role', sprintf('Capability name "%s" cannot be the same as the name of a role.', $capability) @@ -453,8 +448,8 @@ private function validateCapabilityName($capability, $roles = array()) { } //Some capabilities are special and should never be directly assigned to roles. - static $excludedCaps = array('do_not_allow', 'exist', 'customize'); - if (in_array($capability, $excludedCaps)) { + static $excludedCaps = ['do_not_allow', 'exist', 'customize']; + if ( in_array($capability, $excludedCaps) ) { return new WP_Error( 'ame_create_reserved_cap', 'Cannot create a capability that matches a meta capability or a reserved capability.' @@ -464,13 +459,13 @@ private function validateCapabilityName($capability, $roles = array()) { return true; } - private function validateCapabilityAssignment($capabilities, $existingCapabilities, $roles = array()) { + private function validateCapabilityAssignment($capabilities, $existingCapabilities, $roles = []) { //Preexisting capabilities can be granted even if they don't meet our validation requirements. $newCaps = array_diff_key($capabilities, $existingCapabilities); - $errors = array(); + $errors = []; foreach ($newCaps as $capability => $isGranted) { $validationState = $this->validateCapabilityName($capability, $roles); - if (is_wp_error($validationState)) { + if ( is_wp_error($validationState) ) { $errors[] = $validationState; } } @@ -506,16 +501,16 @@ private function validateCapabilityAssignment($capabilities, $existingCapabiliti * @return array [validated-new-roles, errors] */ private function validateUserRoleChange($oldRoles, $newRoles, $editableRoles = null) { - if ($editableRoles === null) { + if ( $editableRoles === null ) { $editableRoles = get_editable_roles(); - if (!is_array($editableRoles)) { - $editableRoles = array(); + if ( !is_array($editableRoles) ) { + $editableRoles = []; } } - $errors = array(); + $errors = []; - if (!is_array($newRoles)) { - return array($oldRoles, array(new WP_Error('ame_rex_invalid_argument', 'Role list must be an array.'))); + if ( !is_array($newRoles) ) { + return [$oldRoles, [new WP_Error('ame_rex_invalid_argument', 'Role list must be an array.')]]; } $newPrimaryRole = reset($newRoles); @@ -523,7 +518,7 @@ private function validateUserRoleChange($oldRoles, $newRoles, $editableRoles = n //NB: It is NOT an error to select a new primary role when the old one is not editable. //WordPress UI simply doesn't give the option to leave the role unchanged. We shouldn't penalize users for that. $oldPrimaryRole = reset($oldRoles); - if (is_string($oldPrimaryRole) && ($oldPrimaryRole !== '') && !isset($editableRoles[$oldPrimaryRole])) { + if ( is_string($oldPrimaryRole) && ($oldPrimaryRole !== '') && !isset($editableRoles[$oldPrimaryRole]) ) { //Keep the existing primary role. Treat the new one as a normal "other" role. $newPrimaryRole = $oldPrimaryRole; array_unshift($newRoles, $oldPrimaryRole); //This might duplicate the role. We'll remove duplicates later. @@ -537,19 +532,19 @@ private function validateUserRoleChange($oldRoles, $newRoles, $editableRoles = n array_fill_keys(array_diff($newRoles, $oldRoles), 'add'), array_fill_keys(array_diff($oldRoles, $newRoles), 'remove') ); - $errorMessages = array( + $errorMessages = [ 'add' => 'You cannot give users the "%s" role.', 'remove' => 'You cannot remove the "%s" role from users.', - ); + ]; foreach ($changedRoles as $roleId => $action) { $isAllowed = isset($editableRoles[$roleId]); - if (($isAllowed && ($action === 'add')) || (!$isAllowed && ($action === 'remove'))) { + if ( ($isAllowed && ($action === 'add')) || (!$isAllowed && ($action === 'remove')) ) { $validNewRoles[] = $roleId; } - if (!$isAllowed && isset($errors)) { + if ( !$isAllowed && isset($errors) ) { $errors[] = new WP_Error( sprintf('ame_rex_cannot_%1$s_role_%2$s', $action, $roleId), sprintf($errorMessages[$action], htmlentities($roleId)) @@ -559,7 +554,7 @@ private function validateUserRoleChange($oldRoles, $newRoles, $editableRoles = n //Move the primary role to the start of the array. $primaryRoleIndex = array_search($newPrimaryRole, $validNewRoles, true); - if ($newPrimaryRole && ($primaryRoleIndex > 0)) { + if ( $newPrimaryRole && ($primaryRoleIndex > 0) ) { unset($validNewRoles[$primaryRoleIndex]); array_unshift($validNewRoles, $newPrimaryRole); } @@ -568,7 +563,7 @@ private function validateUserRoleChange($oldRoles, $newRoles, $editableRoles = n $validNewRoles = array_unique($validNewRoles, SORT_STRING); //Requires PHP >= 5.2.9 ksort($validNewRoles); - return array(array_values($validNewRoles), $errors); + return [array_values($validNewRoles), $errors]; } /** @@ -579,20 +574,20 @@ private function validateUserRoleChange($oldRoles, $newRoles, $editableRoles = n * @return bool */ private function userCanEditActor($actorId, $currentEditableRoles) { - if ($actorId === 'special:super_admin') { + if ( $actorId === 'special:super_admin' ) { return is_super_admin(); } list($type, $name) = explode(':', $actorId, 2); - if ($type === 'user') { + if ( $type === 'user' ) { $victim = get_user_by('login', $name); - if ($victim) { + if ( $victim ) { return current_user_can('edit_user', $victim->ID); } return current_user_can('edit_users'); } - if ($type === 'role') { + if ( $type === 'role' ) { return isset($currentEditableRoles[$name]); } @@ -608,7 +603,7 @@ private function userCanEditActor($actorId, $currentEditableRoles) { * @return bool */ private function areAssocArraysEqual($a, $b) { - if (count($a) !== count($b)) { + if ( count($a) !== count($b) ) { return false; } $sameItems = array_intersect_assoc($a, $b); @@ -623,18 +618,18 @@ private function areAssocArraysEqual($a, $b) { * @return bool */ private function areAssocArraysRecursivelyEqual($a, $b) { - if (count($a) !== count($b)) { + if ( count($a) !== count($b) ) { return false; } $sameKeys = array_intersect_key($a, $b); - if (count($sameKeys) !== count($a)) { + if ( count($sameKeys) !== count($a) ) { return false; } - foreach($sameKeys as $key => $valueA) { + foreach ($sameKeys as $key => $valueA) { $valueB = $b[$key]; - if ($valueA !== $valueB) { - if (is_array($valueA) && is_array($valueB)) { - if (!$this->areAssocArraysRecursivelyEqual($valueA, $valueB)) { + if ( $valueA !== $valueB ) { + if ( is_array($valueA) && is_array($valueB) ) { + if ( !$this->areAssocArraysRecursivelyEqual($valueA, $valueB) ) { return false; } } else { diff --git a/extras/modules/role-editor/ameRoleEditor.php b/extras/modules/role-editor/ameRoleEditor.php index 763be96..1b1691f 100644 --- a/extras/modules/role-editor/ameRoleEditor.php +++ b/extras/modules/role-editor/ameRoleEditor.php @@ -25,28 +25,28 @@ class ameRoleEditor extends amePersistentProModule { /** * @var ameRexCapability[] */ - private $capabilities = array(); + private $capabilities = []; /** * @var array */ - private $uncategorizedCapabilities = array(); + private $uncategorizedCapabilities = []; /** * @var ameRexComponentRegistry */ private $knownComponents; - private $postTypeRegistrants = array(); - private $taxonomyRegistrants = array(); + private $postTypeRegistrants = []; + private $taxonomyRegistrants = []; /** * @var ameRexCategory[] */ - private $componentRootCategories = array(); + private $componentRootCategories = []; /** * @var ameRexCategory[] */ - private $componentCapPrefixes = array(); + private $componentCapPrefixes = []; /** * @var string Name of the table that stores role data backups. @@ -60,16 +60,16 @@ class ameRoleEditor extends amePersistentProModule { /** * @var array List of errors encountered when saving role settings. */ - private $cachedSettingsErrors = array(); + private $cachedSettingsErrors = []; /** * @var ameEditableRoleFilter[] Editable roles per user. [userId => $filterInstance] */ - private $cachedEditableRoles = array(); + private $cachedEditableRoles = []; /** * @var string[] Overall, most specific strategy per user. [123 => 'auto', 456 => 'user-defined-list', ...] */ - private $cachedOverallEditableRoleStrategy = array(); + private $cachedOverallEditableRoleStrategy = []; /** * @var bool Is the hook that clears the role cache already installed? */ @@ -77,27 +77,27 @@ class ameRoleEditor extends amePersistentProModule { /** * @var array */ - private $cachedEnabledRoleCaps = array(); + private $cachedEnabledRoleCaps = []; public function __construct($menuEditor) { $this->settingsWrapperEnabled = true; parent::__construct($menuEditor); - add_filter('editable_roles', array($this, 'filterEditableRoles'), 20, 1); - add_filter('map_meta_cap', array($this, 'restrictUserEditing'), 10, 4); + add_filter('editable_roles', [$this, 'filterEditableRoles'], 20, 1); + add_filter('map_meta_cap', [$this, 'restrictUserEditing'], 10, 4); //Optimization: Only record plugins that register post types and taxonomies when the current page is an AME tab. - if (isset($_GET['sub_section'])) { - add_action('registered_post_type', array($this, 'recordPostTypeOrigin'), 10, 2); - add_action('registered_taxonomy', array($this, 'recordTaxonomyOrigin'), 10, 3); + if ( isset($_GET['sub_section']) ) { + add_action('registered_post_type', [$this, 'recordPostTypeOrigin'], 10, 2); + add_action('registered_taxonomy', [$this, 'recordTaxonomyOrigin'], 10, 3); } - add_action('wp_ajax_' . self::UPDATE_PREFERENCES_ACTION, array($this, 'ajaxUpdateUserPreferences')); + add_action('wp_ajax_' . self::UPDATE_PREFERENCES_ACTION, [$this, 'ajaxUpdateUserPreferences']); /** @var wpdb */ global $wpdb; $this->backupTable = $wpdb->base_prefix . 'ame_role_backups'; - add_action(self::BACKUP_CLEANUP_HOOK, array($this, 'deleteOldRoleBackups')); + add_action(self::BACKUP_CLEANUP_HOOK, [$this, 'deleteOldRoleBackups']); } public function enqueueTabScripts() { @@ -106,7 +106,7 @@ public function enqueueTabScripts() { wp_register_auto_versioned_script( 'ame-role-editor', plugins_url('role-editor.js', __FILE__), - array( + [ 'ame-lodash', 'ame-knockout', 'jquery', @@ -114,7 +114,7 @@ public function enqueueTabScripts() { 'ame-actor-manager', 'ame-actor-selector', 'ame-ko-extensions', - ) + ] ); wp_enqueue_script('ame-role-editor'); @@ -125,9 +125,9 @@ public function enqueueTabScripts() { $defaultCapabilities = $this->getDefaultCapabilities(); $multisiteCapabilities = $this->getMultisiteOnlyCapabilities(); - foreach ($this->getAllCapabilities(array(wp_get_current_user())) as $capability => $unusedValue) { + foreach ($this->getAllCapabilities([wp_get_current_user()]) as $capability => $unusedValue) { $descriptor = new ameRexCapability(); - if (isset($defaultCapabilities[$capability]) || isset($multisiteCapabilities[$capability])) { + if ( isset($defaultCapabilities[$capability]) || isset($multisiteCapabilities[$capability]) ) { $descriptor->componentId = self::CORE_COMPONENT_ID; } else { $this->uncategorizedCapabilities[$capability] = true; @@ -157,10 +157,10 @@ public function enqueueTabScripts() { foreach ($this->componentRootCategories as $category) { //Find component roots that have both subcategories and capabilities and //put all freestanding capabilities in a "General" subcategory. - if (!empty($category->capabilities) && !empty($category->subcategories)) { + if ( !empty($category->capabilities) && !empty($category->subcategories) ) { $generalCategory = new ameRexCategory('General', $category->componentId); $generalCategory->capabilities = $category->capabilities; - $category->capabilities = array(); + $category->capabilities = []; array_unshift($category->subcategories, $generalCategory); } } @@ -170,10 +170,10 @@ public function enqueueTabScripts() { //Normally, only a Super Admin on Multisite has certain Multisite administration capabilities. //However, there is at least one plugin that uses these capabilities even in a regular WP install, //so we'll show them as long as they're assigned to at least one role or user. - if (!is_multisite() && isset($coreCategory->subcategories['default/multisite'])) { + if ( !is_multisite() && isset($coreCategory->subcategories['default/multisite']) ) { $multisiteCategory = $coreCategory->subcategories['default/multisite']; $multisiteCategory->capabilities = array_intersect_key($multisiteCategory->capabilities, $this->capabilities); - if (empty($multisiteCategory->capabilities)) { + if ( empty($multisiteCategory->capabilities) ) { unset($coreCategory->subcategories['default/multisite']); } } @@ -190,46 +190,46 @@ public function enqueueTabScripts() { //exit; $customCategories = array_merge($this->componentRootCategories, $probablePostTypeCategories, $clusteredCategories); - $customCategoryDescriptors = array(); + $customCategoryDescriptors = []; foreach ($customCategories as $category) { /** @var ameRexCategory $category */ $customCategoryDescriptors[] = $category->toArray(); } - $components = array(); + $components = []; foreach ($this->knownComponents as $id => $component) { $components[$id] = $component->toArray(); } $stableMetaCaps = self::loadCapabilities('stable-meta-caps.txt'); - $metaCapMap = array(); + $metaCapMap = []; $currentUserId = get_current_user_id(); foreach ($stableMetaCaps as $metaCap => $unused) { $primitiveCaps = map_meta_cap($metaCap, $currentUserId); - if ((count($primitiveCaps) === 1) && !in_array('do_not_allow', $primitiveCaps)) { + if ( (count($primitiveCaps) === 1) && !in_array('do_not_allow', $primitiveCaps) ) { $targetCap = reset($primitiveCaps); - if ($targetCap !== $metaCap) { + if ( $targetCap !== $metaCap ) { $metaCapMap[$metaCap] = $targetCap; } } } - $userPreferences = array(); + $userPreferences = []; $userPreferenceData = get_user_meta(get_current_user_id(), self::USER_PREFERENCE_KEY, true); - if (is_string($userPreferenceData) && !empty($userPreferenceData)) { + if ( is_string($userPreferenceData) && !empty($userPreferenceData) ) { $userPreferences = json_decode($userPreferenceData, true); - if (!is_array($userPreferences)) { - $userPreferences = array(); + if ( !is_array($userPreferences) ) { + $userPreferences = []; } } $query = $this->menuEditor->get_query_params(); $selectedActor = null; - if (isset($query['selected_actor'])) { + if ( isset($query['selected_actor']) ) { $selectedActor = strval($query['selected_actor']); } - $scriptData = array( + $scriptData = [ 'coreCategory' => $coreCategory->toArray(), 'customCategories' => $customCategoryDescriptors, 'postTypes' => $postTypes, @@ -241,16 +241,16 @@ public function enqueueTabScripts() { 'knownComponents' => $components, 'metaCapMap' => $metaCapMap, 'roles' => $this->getRoleData(), - 'users' => array(), + 'users' => [], 'defaultRoleName' => get_option('default_role'), - 'trashedRoles' => array(), //todo: Load trashed roles from somewhere. + 'trashedRoles' => [], //todo: Load trashed roles from somewhere. 'selectedActor' => $selectedActor, 'editableRoles' => ameUtils::get($this->loadSettings(), 'editableRoles', new stdClass()), 'userPreferences' => $userPreferences, 'adminAjaxUrl' => self_admin_url('admin-ajax.php'), 'updatePreferencesNonce' => wp_create_nonce(self::UPDATE_PREFERENCES_ACTION), - ); + ]; $jsonData = wp_json_encode($scriptData); @@ -289,20 +289,20 @@ public function enqueueTabStyles() { } public function displaySettingsPage() { - if (!$this->userCanAccessModule()) { + if ( !$this->userCanAccessModule() ) { echo 'Error: You don\'t have sufficient permissions to access these settings.'; return; } - if ($this->backupsEnabled && !wp_next_scheduled(self::BACKUP_CLEANUP_HOOK)) { + if ( $this->backupsEnabled && !wp_next_scheduled(self::BACKUP_CLEANUP_HOOK) ) { wp_schedule_event(time() + 10 * 60, 'daily', self::BACKUP_CLEANUP_HOOK); } parent::displaySettingsPage(); } private function getPostTypeDescriptors() { - $results = array(); - $wpPostTypes = get_post_types(array(), 'objects'); + $results = []; + $wpPostTypes = get_post_types([], 'objects'); //Note: When the "map_meta_cap" option is disabled for a CPT, the values of the "cap" //object will be treated as primitive capabilities. For example, "read_post" => "read_post" @@ -314,14 +314,14 @@ private function getPostTypeDescriptors() { //These three meta capabilities will always be mapped to something else if "map_meta_cap" //is enabled. We'll skip them unless mapping is off or someone has assigned them to a role. //Note: It's possible that it would be fine to skip them even then. Not sure. - $metaCaps = array('edit_post', 'read_post', 'delete_post'); + $metaCaps = ['edit_post', 'read_post', 'delete_post']; foreach ($wpPostTypes as $name => $postType) { $isIncluded = $postType->public || !$postType->_builtin; //Skip the "attachment" post type. It only has one unique capability (upload_files), which //is included in a default group. - if ($name === 'attachment') { + if ( $name === 'attachment' ) { $isIncluded = false; } @@ -332,37 +332,37 @@ private function getPostTypeDescriptors() { } } - if (!$isIncluded) { + if ( !$isIncluded ) { continue; } $label = $name; $pluralLabel = $name; - if (isset($postType->labels, $postType->labels->name) && !empty($postType->labels->name)) { + if ( isset($postType->labels, $postType->labels->name) && !empty($postType->labels->name) ) { $label = $postType->labels->name; $pluralLabel = $postType->labels->name; } //We want the plural in lowercase, but if there are multiple consecutive uppercase letters //then it's probably an acronym. Stuff like "aBc" is probably a contraction or a proper noun. - if (!preg_match('@([A-Z]{2}|[a-z][A-Z])@', $pluralLabel)) { + if ( !preg_match('@([A-Z]{2}|[a-z][A-Z])@', $pluralLabel) ) { $pluralLabel = strtolower($pluralLabel); } - $capabilities = array(); + $capabilities = []; foreach ((array)$postType->cap as $capType => $capability) { //Skip meta caps unless they already exist. - if (in_array($capType, $metaCaps) && ($postType->map_meta_cap || !isset($this->capabilities[$capability]))) { + if ( in_array($capType, $metaCaps) && ($postType->map_meta_cap || !isset($this->capabilities[$capability])) ) { continue; } //Skip the "read" cap. It's redundant - most CPTs use it, and all roles have it by default. - if (($capType === 'read') && ($capability === 'read')) { + if ( ($capType === 'read') && ($capability === 'read') ) { continue; } //Some plugins apparently set capability to "false". Perhaps the intention is to disable it. - if ($capability === false) { + if ( $capability === false ) { continue; } @@ -371,14 +371,14 @@ private function getPostTypeDescriptors() { $component = isset($this->postTypeRegistrants[$name]) ? $this->postTypeRegistrants[$name] : null; - $descriptor = array( + $descriptor = [ 'label' => $label, 'name' => $name, 'pluralLabel' => $pluralLabel, 'permissions' => $capabilities, 'isDefault' => isset($postType->_builtin) && $postType->_builtin, 'componentId' => $component, - ); + ]; $results[$name] = $descriptor; } @@ -387,10 +387,10 @@ private function getPostTypeDescriptors() { } protected function findRegisteredTaxonomies() { - $registeredTaxonomies = array(); - $usedLabels = array('Categories' => true, 'Category' => true, 'Tags' => true); + $registeredTaxonomies = []; + $usedLabels = ['Categories' => true, 'Category' => true, 'Tags' => true]; - foreach (get_taxonomies(array(), 'object') as $taxonomy) { + foreach (get_taxonomies([], 'object') as $taxonomy) { $permissions = (array)($taxonomy->cap); //Skip "link_category" because its only cap (manage_links) is already part of a default category. @@ -404,40 +404,40 @@ protected function findRegisteredTaxonomies() { //Skip "nav_menu" and "post_format" because they're intended for internal use and have the same //caps as the "Category" taxonomy. - if (in_array($taxonomy->name, array('nav_menu', 'post_format')) && $taxonomy->_builtin) { + if ( in_array($taxonomy->name, ['nav_menu', 'post_format']) && $taxonomy->_builtin ) { continue; } $componentId = null; $isBuiltIn = isset($taxonomy->_builtin) && $taxonomy->_builtin; - if ($isBuiltIn) { + if ( $isBuiltIn ) { $componentId = self::CORE_COMPONENT_ID; - } else if (isset($this->taxonomyRegistrants[$taxonomy->name])) { + } else if ( isset($this->taxonomyRegistrants[$taxonomy->name]) ) { $componentId = $this->taxonomyRegistrants[$taxonomy->name]; } $label = $taxonomy->name; - if (isset($taxonomy->labels, $taxonomy->labels->name) && !empty($taxonomy->labels->name)) { + if ( isset($taxonomy->labels, $taxonomy->labels->name) && !empty($taxonomy->labels->name) ) { $label = $taxonomy->labels->name; } $uniqueLabel = $label; - if (isset($usedLabels[$uniqueLabel]) && !$isBuiltIn) { + if ( isset($usedLabels[$uniqueLabel]) && !$isBuiltIn ) { $uniqueLabel = str_replace('_', ' ', $taxonomy->name); } //We want the label in lowercase unless it's an acronym. - if (!preg_match('@([A-Z]{2}|[a-z][A-Z])@', $uniqueLabel)) { + if ( !preg_match('@([A-Z]{2}|[a-z][A-Z])@', $uniqueLabel) ) { $uniqueLabel = strtolower($uniqueLabel); } $usedLabels[$uniqueLabel] = true; - $registeredTaxonomies[$taxonomy->name] = array( + $registeredTaxonomies[$taxonomy->name] = [ 'name' => $taxonomy->name, 'label' => $label, 'pluralLabel' => $uniqueLabel, 'componentId' => $componentId, 'permissions' => $permissions, - ); + ]; } @@ -447,20 +447,20 @@ protected function findRegisteredTaxonomies() { protected function analysePostTypes($postTypes) { //Record which components use which CPT capabilities. foreach ($postTypes as $name => $postType) { - if (empty($postType['componentId']) || !isset($this->knownComponents[$postType['componentId']])) { + if ( empty($postType['componentId']) || !isset($this->knownComponents[$postType['componentId']]) ) { continue; } $this->knownComponents[$postType['componentId']]->registeredPostTypes[$name] = true; foreach ($postType['permissions'] as $action => $capability) { - if (isset($this->capabilities[$capability])) { + if ( isset($this->capabilities[$capability]) ) { $this->capabilities[$capability]->addUsage($postType['componentId']); } } //Add a CPT category to the component that created this post type. - if (empty($postType['isDefault']) && ($postType['componentId'] !== self::CORE_COMPONENT_ID)) { + if ( empty($postType['isDefault']) && ($postType['componentId'] !== self::CORE_COMPONENT_ID) ) { $componentRoot = $this->getComponentCategory($postType['componentId']); - if ($componentRoot) { + if ( $componentRoot ) { $category = new ameRexPostTypeCategory( $postType['label'], $postType['componentId'], @@ -476,19 +476,19 @@ protected function analysePostTypes($postTypes) { protected function analyseTaxonomies($taxonomies) { //Record taxonomy components and create taxonomy categories for those components. foreach ($taxonomies as $name => $taxonomy) { - if (empty($taxonomy['componentId'])) { + if ( empty($taxonomy['componentId']) ) { continue; } foreach ($taxonomy['permissions'] as $action => $capability) { - if (isset($this->capabilities[$capability])) { + if ( isset($this->capabilities[$capability]) ) { $this->capabilities[$capability]->addUsage($taxonomy['componentId']); } } //Add a taxonomy category to the component that created this taxonomy. - if ($taxonomy['componentId'] !== self::CORE_COMPONENT_ID) { + if ( $taxonomy['componentId'] !== self::CORE_COMPONENT_ID ) { $componentRoot = $this->getComponentCategory($taxonomy['componentId']); - if ($componentRoot) { + if ( $componentRoot ) { $category = new ameRexTaxonomyCategory( $taxonomy['label'], $taxonomy['componentId'], @@ -510,31 +510,31 @@ protected function assignCapabilitiesToComponents() { foreach ($this->capabilities as $capability => $unusedValue) { $details = $this->capabilities[$capability]; - if (empty($details->componentId) && !empty($details->usedByComponents)) { + if ( empty($details->componentId) && !empty($details->usedByComponents) ) { //Sort related components by priority. - if (count($details->usedByComponents) > 1) { - uksort($details->usedByComponents, array($this, 'compareComponents')); + if ( count($details->usedByComponents) > 1 ) { + uksort($details->usedByComponents, [$this, 'compareComponents']); } //Pick the first component. $details->componentId = key($details->usedByComponents); } - if (!empty($details->componentId)) { + if ( !empty($details->componentId) ) { //Copy context information that's relevant to the selected component. - if (isset($details->componentContext[$details->componentId])) { - $propertiesToCopy = array('permissions', 'documentationUrl', 'notes'); + if ( isset($details->componentContext[$details->componentId]) ) { + $propertiesToCopy = ['permissions', 'documentationUrl', 'notes']; foreach ($propertiesToCopy as $property) { - if (isset($details->componentContext[$details->componentId][$property])) { + if ( isset($details->componentContext[$details->componentId][$property]) ) { $details->$property = $details->componentContext[$details->componentId][$property]; } } } - if ($details->componentId !== self::CORE_COMPONENT_ID) { + if ( $details->componentId !== self::CORE_COMPONENT_ID ) { //Add the capability to the component category unless it's already there. $category = $this->getComponentCategory($details->componentId); - if ($category !== null) { - if (!$category->hasCapability($capability)) { + if ( $category !== null ) { + if ( !$category->hasCapability($capability) ) { $category->capabilities[$capability] = true; } unset($this->uncategorizedCapabilities[$capability]); @@ -573,23 +573,23 @@ private function loadCoreCategories() { //Skip blank lines. $line = rtrim($line); - if ($line === '') { + if ( $line === '' ) { continue; } $firstChar = substr($line, 0, 1); - if ($firstChar === ' ' || $firstChar === "\t") { + if ( $firstChar === ' ' || $firstChar === "\t" ) { //Found a capability. $capability = trim($line); //Skip unassigned caps. Even core capabilities sometimes get removed as WP development continues. - if (isset($this->capabilities[$capability])) { + if ( isset($this->capabilities[$capability]) ) { $currentCategory->capabilities[$capability] = true; } } else { //Found a "Category title [optional slug]" - if (preg_match('@^(?P[^\[]+)(?:\s+\[(?P<slug>[^]]+)])?\s*$@', $line, $matches)) { + if ( preg_match('@^(?P<title>[^\[]+)(?:\s+\[(?P<slug>[^]]+)])?\s*$@', $line, $matches) ) { //Save the previous category if it matched any capabilities. - if (count($currentCategory->capabilities) > 0) { + if ( count($currentCategory->capabilities) > 0 ) { $root->addSubcategory($currentCategory); } @@ -603,7 +603,7 @@ private function loadCoreCategories() { } //Save the last category. - if (count($currentCategory->capabilities) > 0) { + if ( count($currentCategory->capabilities) > 0 ) { $root->addSubcategory($currentCategory); } @@ -612,7 +612,7 @@ private function loadCoreCategories() { protected function analyseAdminMenuCapabilities() { $menu = $this->menuEditor->get_active_admin_menu(); - if (!empty($menu['tree'])) { + if ( !empty($menu['tree']) ) { foreach ($menu['tree'] as $item) { $this->analyseMenuItem($item); } @@ -620,38 +620,38 @@ protected function analyseAdminMenuCapabilities() { } protected function analyseMenuItem($item, $parent = null) { - $capability = ameUtils::get($item, array('defaults', 'access_level')); + $capability = ameUtils::get($item, ['defaults', 'access_level']); - if (empty($item['custom']) && !empty($item['defaults']) && !empty($capability) && empty($item['separator'])) { + if ( empty($item['custom']) && !empty($item['defaults']) && !empty($capability) && empty($item['separator']) ) { $defaults = $item['defaults']; $hook = get_plugin_page_hook(ameUtils::get($defaults, 'file', ''), ameUtils::get($defaults, 'parent', '')); $rawTitle = ameMenuItem::get($item, 'menu_title', '[Untitled]'); $fullTitle = trim(strip_tags(ameMenuItem::remove_update_count($rawTitle))); - if ($parent) { + if ( $parent ) { $parentTitle = ameMenuItem::remove_update_count(ameMenuItem::get($parent, 'menu_title', '[Untitled]')); $fullTitle = trim(strip_tags($parentTitle)) . ' → ' . $fullTitle; } - $relatedComponents = array(); - if (!empty($hook)) { + $relatedComponents = []; + if ( !empty($hook) ) { $reflections = $this->getHookReflections($hook); foreach ($reflections as $reflection) { $path = $reflection->getFileName(); $componentId = $this->getComponentIdFromPath($path); - if ($componentId) { + if ( $componentId ) { $relatedComponents[$this->getComponentIdFromPath($path)] = true; } } } - if (isset($this->capabilities[$capability])) { + if ( isset($this->capabilities[$capability]) ) { $this->capabilities[$capability]->menuItems[] = $fullTitle; $this->capabilities[$capability]->addManyUsages($relatedComponents); } } - if (!empty($item['items'])) { + if ( !empty($item['items']) ) { foreach ($item['items'] as $submenu) { $this->analyseMenuItem($submenu, $item); } @@ -664,11 +664,11 @@ protected function analyseMenuItem($item, $parent = null) { */ protected function getHookReflections($tag) { global $wp_filter; - if (!isset($wp_filter[$tag])) { - return array(); + if ( !isset($wp_filter[$tag]) ) { + return []; } - $reflections = array(); + $reflections = []; foreach ($wp_filter[$tag] as $priority => $handlers) { foreach ($handlers as $index => $callback) { try { @@ -685,29 +685,33 @@ protected function getHookReflections($tag) { protected function getComponentIdFromPath($absolutePath) { static $pluginDirectory = null, $muPluginDirectory = null, $themeDirectory = null; - if ($pluginDirectory === null) { + if ( $pluginDirectory === null ) { $pluginDirectory = wp_normalize_path(WP_PLUGIN_DIR); $muPluginDirectory = wp_normalize_path(WPMU_PLUGIN_DIR); $themeDirectory = wp_normalize_path(WP_CONTENT_DIR . '/themes'); } $absolutePath = wp_normalize_path($absolutePath); + if ( empty($absolutePath) ) { + return null; + } + $pos = null; $type = ''; - if (strpos($absolutePath, $pluginDirectory) === 0) { + if ( strpos($absolutePath, $pluginDirectory) === 0 ) { $type = 'plugin'; $pos = strlen($pluginDirectory); - } else if (strpos($absolutePath, $muPluginDirectory) === 0) { + } else if ( !empty($muPluginDirectory) && (strpos($absolutePath, $muPluginDirectory) === 0) ) { $type = 'mu-plugin'; $pos = strlen($muPluginDirectory); - } else if (strpos($absolutePath, $themeDirectory) === 0) { + } else if ( strpos($absolutePath, $themeDirectory) === 0 ) { $type = 'theme'; $pos = strlen($themeDirectory); } - if ($pos !== null) { + if ( $pos !== null ) { $nextSlash = strpos($absolutePath, '/', $pos + 1); - if ($nextSlash !== false) { + if ( $nextSlash !== false ) { $componentDirectory = substr($absolutePath, $pos + 1, $nextSlash - $pos - 1); } else { $componentDirectory = substr($absolutePath, $pos + 1); @@ -719,18 +723,18 @@ protected function getComponentIdFromPath($absolutePath) { protected function getRoleData() { $wpRoles = ameRoleUtils::get_roles(); - $roles = array(); + $roles = []; $usersByRole = count_users(); foreach ($wpRoles->role_objects as $roleId => $role) { - $capabilities = array(); - if (!empty($role->capabilities) && is_array($role->capabilities)) { + $capabilities = []; + if ( !empty($role->capabilities) && is_array($role->capabilities) ) { $capabilities = $this->menuEditor->castValuesToBool($role->capabilities); } $hasUsers = false; - if (isset($usersByRole['avail_roles'], $usersByRole['avail_roles'][$roleId])) { + if ( isset($usersByRole['avail_roles'], $usersByRole['avail_roles'][$roleId]) ) { $hasUsers = ($usersByRole['avail_roles'][$roleId] > 0); } @@ -738,12 +742,12 @@ protected function getRoleData() { //even if it's empty or if all of the keys (i.e. capability names) are numeric. $capabilities = (object)$capabilities; - $roles[] = array( + $roles[] = [ 'name' => $roleId, 'displayName' => ameUtils::get($wpRoles->role_names, $roleId, $roleId), 'capabilities' => $capabilities, 'hasUsers' => $hasUsers, - ); + ]; } return $roles; } @@ -754,7 +758,7 @@ protected function getRoleData() { * @param WP_User[] $users List of zero or more users. * @return array Associative array indexed by capability name. */ - protected function getAllCapabilities($users = array()) { + protected function getAllCapabilities($users = []) { //Always include capabilities that are built into WordPress. $capabilities = $this->getDefaultCapabilities(); @@ -781,13 +785,13 @@ protected function getAllCapabilities($users = array()) { protected function getDefaultCapabilities() { static $defaults = null; - if ($defaults !== null) { + if ( $defaults !== null ) { return $defaults; } $defaults = self::loadCapabilities('default-capabilities.txt'); - if (is_multisite()) { + if ( is_multisite() ) { $defaults = array_merge($defaults, $this->getMultisiteOnlyCapabilities()); } @@ -796,7 +800,7 @@ protected function getDefaultCapabilities() { protected function getMultisiteOnlyCapabilities() { static $cache = null; - if ($cache === null) { + if ( $cache === null ) { $cache = self::loadCapabilities('default-multisite-capabilities.txt'); } return $cache; @@ -811,16 +815,16 @@ protected function getMultisiteOnlyCapabilities() { */ public static function loadCapabilities($fileName, $fillValue = false) { $fileName = __DIR__ . '/data/' . $fileName; - if (!is_file($fileName) || !is_readable($fileName)) { - return array(); + if ( !is_file($fileName) || !is_readable($fileName) ) { + return []; } $contents = file_get_contents($fileName); $capabilities = preg_split('@[\r\n]+@', $contents); $capabilities = array_map('trim', $capabilities); - $capabilities = array_filter($capabilities, array(__CLASS__, 'isNotEmptyString')); - $capabilities = array_filter($capabilities, array(__CLASS__, 'isNotLineComment')); + $capabilities = array_filter($capabilities, [__CLASS__, 'isNotEmptyString']); + $capabilities = array_filter($capabilities, [__CLASS__, 'isNotLineComment']); $capabilities = array_fill_keys($capabilities, $fillValue); @@ -833,16 +837,16 @@ protected static function isNotEmptyString($input) { protected static function isLineComment($input) { $input = trim($input); - if ($input === '') { + if ( $input === '' ) { return false; } $firstChar = substr($input, 0, 1); - if ($firstChar === '#' || $firstChar === ';') { + if ( $firstChar === '#' || $firstChar === ';' ) { return true; } - if (substr($input, 0, 2) === '//') { + if ( substr($input, 0, 2) === '//' ) { return true; } @@ -863,7 +867,7 @@ private function queryCapabilityDatabase() { //$engine->addDataSource(new ameRexJsonCapabilityDataSource(__DIR__ . '/data/capability-metadata.json')); $results = $engine->query(array_keys($this->capabilities), $this->knownComponents); - foreach($results as $capability => $components) { + foreach ($results as $capability => $components) { $this->capabilities[$capability]->addManyUsages($components); } } @@ -872,16 +876,16 @@ private function compareComponents($idA, $idB) { $a = $this->knownComponents->components[$idA]; $b = $this->knownComponents->components[$idB]; - if ($a->isActive && !$b->isActive) { + if ( $a->isActive && !$b->isActive ) { return -1; } - if ($b->isActive && !$a->isActive) { + if ( $b->isActive && !$a->isActive ) { return 1; } - if ($a->isInstalled && !$b->isInstalled) { + if ( $a->isInstalled && !$b->isInstalled ) { return -1; } - if ($b->isInstalled && !$a->isInstalled) { + if ( $b->isInstalled && !$a->isInstalled ) { return 1; } @@ -893,17 +897,17 @@ private function compareComponents($idA, $idB) { * @param WP_Post_Type $postType */ public function recordPostTypeOrigin($id, $postType) { - if (!is_admin() || empty($postType) || empty($id)) { + if ( !is_admin() || empty($postType) || empty($id) ) { return; } - if (isset($postType->_builtin) && $postType->_builtin) { + if ( isset($postType->_builtin) && $postType->_builtin ) { return; } //Find the last entry that is part of a plugin or theme. $component = $this->detectCallerComponent(); - if ($component !== null) { + if ( $component !== null ) { $this->postTypeRegistrants[$id] = $component; } } @@ -912,18 +916,18 @@ public function recordTaxonomyOrigin( $id, /** @noinspection PhpUnusedParameterInspection It's part of the filter signature. We can't remove it. */ $objectType, - $taxonomy = array() + $taxonomy = [] ) { - if (!is_admin() || empty($taxonomy) || empty($id) || !is_array($taxonomy)) { + if ( !is_admin() || empty($taxonomy) || empty($id) || !is_array($taxonomy) ) { return; } - if (isset($taxonomy['_builtin']) && $taxonomy['_builtin']) { + if ( isset($taxonomy['_builtin']) && $taxonomy['_builtin'] ) { return; } $component = $this->detectCallerComponent(); - if ($component !== null) { + if ( $component !== null ) { $this->taxonomyRegistrants[$id] = $component; } } @@ -946,12 +950,12 @@ private function detectCallerComponent() { //Find the last entry that is part of a plugin or theme. $component = null; foreach ($trace as $item) { - if (empty($item['file'])) { + if ( empty($item['file']) ) { continue; } $possibleComponent = $this->getComponentIdFromPath($item['file']); - if ($possibleComponent) { + if ( $possibleComponent ) { $component = $possibleComponent; } } @@ -962,7 +966,7 @@ private function queryInstalledComponents() { $installedPlugins = get_plugins(); foreach ($installedPlugins as $pluginFile => $plugin) { $pathComponents = explode('/', $pluginFile, 2); - if (count($pathComponents) < 2) { + if ( count($pathComponents) < 2 ) { continue; } $component = new ameRexComponent( @@ -975,7 +979,7 @@ private function queryInstalledComponents() { } $installedMuPlugins = get_mu_plugins(); - foreach($installedMuPlugins as $pluginFile => $plugin) { + foreach ($installedMuPlugins as $pluginFile => $plugin) { $component = new ameRexComponent( 'mu-plugin:' . $pluginFile, ameUtils::get($plugin, 'Name', $pluginFile) @@ -985,14 +989,14 @@ private function queryInstalledComponents() { $this->knownComponents[$component->id] = $component; } - $activeThemeSlugs = array(get_stylesheet(), get_template()); + $activeThemeSlugs = [get_stylesheet(), get_template()]; foreach ($activeThemeSlugs as $slug) { $componentId = 'theme:' . $slug; - if (isset($this->knownComponents[$componentId])) { + if ( isset($this->knownComponents[$componentId]) ) { continue; } $theme = wp_get_theme($slug); - if (!empty($theme)) { + if ( !empty($theme) ) { $component = new ameRexComponent($componentId, $theme->get('Name')); $component->isActive = true; $component->isInstalled = true; @@ -1006,8 +1010,8 @@ private function queryInstalledComponents() { * @return ameRexCategory|null */ private function getComponentCategory($componentId) { - if (!isset($this->componentRootCategories[$componentId])) { - if (!isset($this->knownComponents[$componentId])) { + if ( !isset($this->componentRootCategories[$componentId]) ) { + if ( !isset($this->knownComponents[$componentId]) ) { return null; } $category = new ameRexCategory($this->knownComponents[$componentId]->name, $componentId); @@ -1024,12 +1028,12 @@ private function getComponentCategory($componentId) { * @return ameRexCategory[] */ protected function findProbablePostTypeCategories() { - $potentialPostTypes = array(); - $foundCategories = array(); + $potentialPostTypes = []; + $foundCategories = []; //At the moment, WordPress database schema limits post types to 20 characters. $namePattern = '(?P<post_type>.{1,20}?)s?'; - $cptPatterns = array( + $cptPatterns = [ '@^edit_(?:(?:others|private|published)_)?' . $namePattern . '$@', '@^delete_(?:(?:others|private|published)_)?' . $namePattern . '$@', '@^publish_' . $namePattern . '$@', @@ -1039,16 +1043,16 @@ protected function findProbablePostTypeCategories() { //WooCommerce stuff '@^(assign|edit|manage|delete)_' . $namePattern . '_terms$@', - ); + ]; foreach ($this->uncategorizedCapabilities as $capability => $unused) { foreach ($cptPatterns as $pattern) { - if (preg_match($pattern, $capability, $matches)) { + if ( preg_match($pattern, $capability, $matches) ) { $postType = $matches['post_type']; //Unknown CPT-like capability. - if (!isset($potentialPostTypes[$postType])) { - $potentialPostTypes[$postType] = array(); + if ( !isset($potentialPostTypes[$postType]) ) { + $potentialPostTypes[$postType] = []; } $potentialPostTypes[$postType][$capability] = $capability; @@ -1059,10 +1063,10 @@ protected function findProbablePostTypeCategories() { //Empirically, real post types have at least 3 associated capabilities. foreach ($potentialPostTypes as $postType => $typeCaps) { - if (count($typeCaps) >= 3) { + if ( count($typeCaps) >= 3 ) { //Note that this group does not correspond to an existing post type. It's just a set of similar caps. $title = ameUtils::ucWords(str_replace('_', ' ', $postType)); - if (substr($title, -1) !== 's') { + if ( substr($title, -1) !== 's' ) { $title .= 's'; //Post type titles are usually plural. } @@ -1085,12 +1089,12 @@ private function groupSimilarCapabilities() { //Find the common prefix of each component root, if there is one. foreach ($this->componentRootCategories as $category) { - if (!empty($category->capabilities) && (count($category->capabilities) > 1)) { + if ( !empty($category->capabilities) && (count($category->capabilities) > 1) ) { $possiblePrefix = key($category->capabilities); foreach ($category->capabilities as $capability => $unusedValue) { for ($i = 0; $i < min(strlen($possiblePrefix), strlen($capability)); $i++) { - if ($possiblePrefix[$i] !== $capability[$i]) { - if ($i >= 1) { + if ( $possiblePrefix[$i] !== $capability[$i] ) { + if ( $i >= 1 ) { $possiblePrefix = substr($possiblePrefix, 0, $i); } else { $possiblePrefix = ''; @@ -1099,21 +1103,21 @@ private function groupSimilarCapabilities() { } } - if ($possiblePrefix === '') { + if ( $possiblePrefix === '' ) { break; } } //The prefix must be at least 2 characters long and must not consist entirely of stopwords. - if (strlen($possiblePrefix) >= 2) { + if ( strlen($possiblePrefix) >= 2 ) { $tokens = $this->tokenizeCapability($possiblePrefix); $foundStopWords = 0; foreach ($tokens as $token) { - if (isset($stopWords[strtolower($token)])) { + if ( isset($stopWords[strtolower($token)]) ) { $foundStopWords++; } } - if ($foundStopWords === count($tokens)) { + if ( $foundStopWords === count($tokens) ) { continue; } @@ -1123,61 +1127,61 @@ private function groupSimilarCapabilities() { } } - $possibleCategories = array(); + $possibleCategories = []; foreach ($this->uncategorizedCapabilities as $capability => $unusedValue) { $tokens = $this->tokenizeCapability($capability); $upperLimit = min(2, count($tokens) - 1); $prefix = null; for ($i = 0; $i < $upperLimit; $i++) { - if ($prefix === null) { + if ( $prefix === null ) { $prefix = $tokens[$i]; } else { $prefix .= ' ' . $tokens[$i]; } - if (isset($stopWords[$tokens[$i]]) || (strlen($tokens[$i]) < 2)) { + if ( isset($stopWords[$tokens[$i]]) || (strlen($tokens[$i]) < 2) ) { continue; } //Check if one of the existing component categories has the same prefix //and add this capability there. - if (isset($this->componentCapPrefixes[$prefix])) { + if ( isset($this->componentCapPrefixes[$prefix]) ) { $this->componentCapPrefixes[$prefix]->addCapabilityToDefaultLocation($capability); unset($this->uncategorizedCapabilities[$capability]); $componentId = $this->componentCapPrefixes[$prefix]->componentId; - if ($componentId !== null) { + if ( $componentId !== null ) { $this->capabilities[$capability]->addUsage($componentId); - if (empty($this->capabilities[$capability]->componentId)) { + if ( empty($this->capabilities[$capability]->componentId) ) { $this->capabilities[$capability]->componentId = $componentId; } } } - if (!isset($possibleCategories[$prefix])) { - $possibleCategories[$prefix] = array(); + if ( !isset($possibleCategories[$prefix]) ) { + $possibleCategories[$prefix] = []; } $possibleCategories[$prefix][$capability] = true; } } - uasort($possibleCategories, array($this, 'compareArraySizes')); + uasort($possibleCategories, [$this, 'compareArraySizes']); - $approvedCategories = array(); + $approvedCategories = []; foreach ($possibleCategories as $prefix => $capabilities) { $capabilities = array_intersect_key($capabilities, $this->uncategorizedCapabilities); - if (count($capabilities) < 3) { + if ( count($capabilities) < 3 ) { continue; } $title = $prefix; //Convert all-lowercase to Title Case, but preserve stuff that already has mixed case. - if (strtolower($title) === $title) { + if ( strtolower($title) === $title ) { $title = ameUtils::ucWords($title); } //No vowels = probably an acronym. - if (!preg_match('@[aeuio]@', $title)) { + if ( !preg_match('@[aeuio]@', $title) ) { $title = strtoupper($title); } @@ -1198,8 +1202,8 @@ private function tokenizeCapability($capability) { private function getPrefixStopWords() { static $stopWords = null; - if ($stopWords === null) { - $stopWords = array( + if ( $stopWords === null ) { + $stopWords = [ 'edit', 'delete', 'add', @@ -1219,7 +1223,7 @@ private function getPrefixStopWords() { 'setting', 'update', 'install', - ); + ]; $stopWords = array_fill_keys($stopWords, true); } return $stopWords; @@ -1233,49 +1237,49 @@ public function ajaxUpdateUserPreferences() { check_ajax_referer(self::UPDATE_PREFERENCES_ACTION); @header('Content-Type: application/json; charset=' . get_option('blog_charset')); - if (!$this->userCanAccessModule()) { - echo json_encode(array('error' => 'Access denied')); + if ( !$this->userCanAccessModule() ) { + echo json_encode(['error' => 'Access denied']); exit; } $post = $this->menuEditor->get_post_params(); - if (!isset($post['preferences']) || !is_string($post['preferences'])) { - echo json_encode(array('error' => 'The "preferences" field is missing or invalid.')); + if ( !isset($post['preferences']) || !is_string($post['preferences']) ) { + echo json_encode(['error' => 'The "preferences" field is missing or invalid.']); exit; } $preferences = json_decode($post['preferences'], true); - if ($preferences === null) { - echo json_encode(array('error' => 'The "preferences" field is not valid JSON.')); + if ( $preferences === null ) { + echo json_encode(['error' => 'The "preferences" field is not valid JSON.']); exit; } - if (!is_array($preferences)) { - echo json_encode(array('error' => 'The "preferences" field is not valid. Expected an associative array.')); + if ( !is_array($preferences) ) { + echo json_encode(['error' => 'The "preferences" field is not valid. Expected an associative array.']); exit; } update_user_meta(get_current_user_id(), self::USER_PREFERENCE_KEY, json_encode($preferences)); - echo json_encode(array('success' => true)); + echo json_encode(['success' => true]); exit; } - public function handleSettingsForm($post = array()) { - if (!$this->userCanAccessModule()) { + public function handleSettingsForm($post = []) { + if ( !$this->userCanAccessModule() ) { wp_die("You don't have sufficient permissions to change these settings."); } - $redirectParams = array(); - if (!empty($post['selectedActor'])) { + $redirectParams = []; + if ( !empty($post['selectedActor']) ) { $redirectParams['selected_actor'] = strval($post['selectedActor']); } $validator = new ameRexSettingsValidator( $post['settings'], - $this->getAllCapabilities(array(wp_get_current_user())), + $this->getAllCapabilities([wp_get_current_user()]), $this->getUserDefinedCaps(), - ameUtils::get($this->loadSettings(), 'editableRoles', array()), + ameUtils::get($this->loadSettings(), 'editableRoles', []), $this->getEffectiveEditableRoles(), $this->menuEditor ); @@ -1289,17 +1293,17 @@ public function handleSettingsForm($post = array()) { //var_dump($totalChanges, $post); //exit; - if (($totalChanges <= 0) && !$shouldUpdateNetwork) { + if ( ($totalChanges <= 0) && !$shouldUpdateNetwork ) { $redirectParams['no-changes-made'] = 1; wp_redirect($this->getTabUrl($redirectParams)); exit; } - if ($shouldUpdateNetwork && ($totalChanges < 1)) { + if ( $shouldUpdateNetwork && ($totalChanges < 1) ) { $totalChanges = 1; //A network update is always at least one change. } - if ($this->backupsEnabled) { + if ( $this->backupsEnabled ) { //Make a backup before actually changing anything. $currentUser = wp_get_current_user(); $this->createRoleBackup(sprintf( @@ -1310,7 +1314,7 @@ public function handleSettingsForm($post = array()) { } //Save user defined capabilities. - if ($validator->getUserDefinedCaps() !== null) { + if ( $validator->getUserDefinedCaps() !== null ) { $this->saveUserDefinedCaps($validator->getUserDefinedCaps()); } @@ -1330,10 +1334,10 @@ public function handleSettingsForm($post = array()) { //Update role capabilities and display names. $rolesToModify = $validator->getRolesToModify(); - if (!empty($rolesToModify)) { + if ( !empty($rolesToModify) ) { foreach ($rolesToModify as $id => $role) { //Rename the role. - if ($wpRoles->roles[$id]['name'] !== $role['displayName']) { + if ( $wpRoles->roles[$id]['name'] !== $role['displayName'] ) { $wpRoles->roles[$id]['name'] = $role['displayName']; } $wpRoles->roles[$id]['capabilities'] = $role['capabilities']; @@ -1344,9 +1348,9 @@ public function handleSettingsForm($post = array()) { //Apply role settings to all network sites if requested. We'll do that even if the settings //weren't changed, which lets you use this feature to normalize role settings across the network. - if ($shouldUpdateNetwork) { + if ( $shouldUpdateNetwork ) { $result = $this->updateNetworkRoles(get_option($wpRoles->role_key)); - if (is_wp_error($result)) { + if ( is_wp_error($result) ) { $errors[] = $result; $this->storeSettingsErrors($errors); } @@ -1362,7 +1366,7 @@ public function handleSettingsForm($post = array()) { //We have to go through the trouble of removing/adding each role individually //because some plugins use the "add_user_role" and "remove_user_role" hooks. - $oldRoles = (isset($user->roles) && is_array($user->roles)) ? $user->roles : array(); + $oldRoles = (isset($user->roles) && is_array($user->roles)) ? $user->roles : []; $removedRoles = array_diff($oldRoles, $newRoles); $addedRoles = array_diff($newRoles, $oldRoles); foreach ($removedRoles as $role) { @@ -1376,7 +1380,7 @@ public function handleSettingsForm($post = array()) { //This is faster than calling add_cap() a bunch of times and it lets us precisely control //the order of roles in the array. $user->remove_all_caps(); - $user->roles = array(); + $user->roles = []; $user->caps = array_merge($newCaps, array_fill_keys($newRoles, true)); update_user_meta($user->ID, $user->cap_key, $user->caps); @@ -1432,18 +1436,18 @@ private function updateNetworkRoles($roleData) { global $wpdb; /** @var wpdb $wpdb */ - if (!is_multisite()) { + if ( !is_multisite() ) { return new WP_Error( 'ame_not_multisite', 'Cannot update roles on all sites because this is not a Multisite network.' ); } - if (empty($roleData)) { + if ( empty($roleData) ) { return new WP_Error('ame_invalid_role_data', 'Role data is invalid.'); } - if (!function_exists('get_sites')) { + if ( !function_exists('get_sites') ) { return new WP_Error( 'ame_wp_incompatible', 'The plugin does not support this feature in the current WordPress version.' @@ -1459,7 +1463,7 @@ private function updateNetworkRoles($roleData) { && apply_filters('admin_menu_editor-clear_role_cache', false); $originalBlogId = is_callable('get_current_blog_id') ? get_current_blog_id() : null; - $sites = get_sites(array( + $sites = get_sites([ /* * As of this writing, WP documentation doesn't mention any officially supported way * to make get_sites() return all available results. There are unofficial workarounds, @@ -1468,7 +1472,7 @@ private function updateNetworkRoles($roleData) { */ 'number' => 1000000, 'fields' => 'ids', - )); + ]); $serializedData = serialize($roleData); foreach ($sites as $siteId) { @@ -1478,26 +1482,26 @@ private function updateNetworkRoles($roleData) { $query = $wpdb->prepare( "UPDATE {$tableName} SET option_value = %s WHERE option_name = %s LIMIT 1", - array($serializedData, $optionName) + [$serializedData, $optionName] ); $result = $wpdb->query($query); - if ($result === false) { + if ( $result === false ) { $errorMessage = sprintf('Failed to update site with ID %d.', $siteId); - if (!empty($wpdb->last_error)) { + if ( !empty($wpdb->last_error) ) { $errorMessage .= ' Database error: ' . $wpdb->last_error; } return new WP_Error('ame_db_error', $errorMessage); } //Clear the option cache on the target site. - if ($shouldClearCache) { + if ( $shouldClearCache ) { wp_cache_switch_to_blog($siteId); wp_cache_delete($optionName, 'options'); } } - if ($shouldClearCache && ($originalBlogId !== null)) { + if ( $shouldClearCache && ($originalBlogId !== null) ) { wp_cache_switch_to_blog($originalBlogId); } @@ -1509,18 +1513,18 @@ private function tempGenerateChangeSummary($role = null) { global $wpRoles; $id = ''; - if (!empty($rolesToDelete)) { + if ( !empty($rolesToDelete) ) { $deletedIds = array_keys($rolesToDelete); - if (count($deletedIds) === 1) { + if ( count($deletedIds) === 1 ) { $summary[] = 'Deleted ' . $deletedIds[0]; - } else if (count($deletedIds) === 2) { + } else if ( count($deletedIds) === 2 ) { $summary[] = 'Deleted ' . implode(' and ', $deletedIds); } else { $summary[] = 'Deleted ' . count($deletedIds) . ' roles'; } } - if (!empty($rolesToCreate)) { + if ( !empty($rolesToCreate) ) { $createdIds = array_keys($rolesToCreate); $summary[] = 'Created ' . $this->formatPhraseList($createdIds, '%d roles'); } @@ -1532,31 +1536,31 @@ private function tempGenerateChangeSummary($role = null) { $addedCaps = array_diff_key($newGrantedCaps, $oldGrantedCaps); $removedCaps = array_diff_key($oldGrantedCaps, $newGrantedCaps); - $changes = array(); - if (!empty($addedCaps)) { + $changes = []; + if ( !empty($addedCaps) ) { $changes[] = count($addedCaps) . ' added'; } - if (!empty($removedCaps)) { + if ( !empty($removedCaps) ) { $changes[] = count($removedCaps) . ' removed'; } $capSummaries[] = $id . ' (' . implode(', ', $changes) . ')'; //Add renames and cap changes to the summary. - if (!empty($renamedRoles)) { + if ( !empty($renamedRoles) ) { $summary[] = 'Renamed ' . $this->formatPhraseList($renamedRoles, '%d roles', 1); } - if (!empty($capSummaries)) { + if ( !empty($capSummaries) ) { $summary[] = 'Changed capabilities: ' . implode(', ', $capSummaries); } } private function formatPhraseList($items, $combinedTemplate = '%d items', $limit = 2) { $itemCount = count($items); - if ($itemCount === 1) { + if ( $itemCount === 1 ) { return $items[0]; - } else if ($itemCount === 2) { + } else if ( $itemCount === 2 ) { return implode(' and ', $items); - } else if ($itemCount <= $limit) { + } else if ( $itemCount <= $limit ) { return implode(', ', $items); } return sprintf($combinedTemplate, $itemCount); @@ -1566,7 +1570,7 @@ private function formatPhraseList($items, $combinedTemplate = '%d items', $limit * @param array $errors */ private function storeSettingsErrors($errors) { - if (empty($errors)) { + if ( empty($errors) ) { delete_transient(self::SETTINGS_ERROR_TRANSIENT); return; } @@ -1579,7 +1583,7 @@ private function storeSettingsErrors($errors) { */ private function fetchSettingsErrors() { $storedErrors = get_transient(self::SETTINGS_ERROR_TRANSIENT); - if ($storedErrors !== false) { + if ( $storedErrors !== false ) { delete_transient(self::SETTINGS_ERROR_TRANSIENT); $this->cachedSettingsErrors = (array)$storedErrors; } @@ -1600,7 +1604,7 @@ protected function getTemplateVariables($templateName) { private function createRoleBackup($comment = '', $roleData = null) { //TODO: If we're going to do backups, remember to create the table if it doesn't exist. //TODO: Delete the table when the plugin is uninstalled. - if ($roleData === null) { + if ( $roleData === null ) { $wpRoles = ameRoleUtils::get_roles(); $roleData = get_option($wpRoles->role_key); } @@ -1610,14 +1614,14 @@ private function createRoleBackup($comment = '', $roleData = null) { $result = $wpdb->insert( $this->backupTable, - array( + [ 'created_on' => gmdate('Y-m-d H:i:s'), 'site_id' => get_current_blog_id(), 'user_id' => get_current_user_id(), 'role_data' => serialize($roleData), 'comment' => $comment, - ), - array('%s', '%d', '%d', '%s', '%s') + ], + ['%s', '%d', '%d', '%s', '%s'] ); return ($result !== false); } @@ -1636,7 +1640,7 @@ public function deleteOldRoleBackups() { . ' WHERE 1 ORDER BY created_on DESC LIMIT 1 OFFSET 10' ); - if (empty($nthItemDate)) { + if ( empty($nthItemDate) ) { return; //There are 10 or fewer backups. Do nothing. } @@ -1658,11 +1662,11 @@ public function deleteOldRoleBackups() { * @return bool */ private function userCanAccessModule($userId = null) { - if (($userId === null) || ($userId === get_current_user_id())) { + if ( ($userId === null) || ($userId === get_current_user_id()) ) { return $this->menuEditor->current_user_can_edit_menu() && current_user_can(self::REQUIRED_CAPABILITY); } $user = get_user_by('id', $userId); - if (!$user) { + if ( !$user ) { return false; } return $this->menuEditor->user_can_edit_menu($userId) @@ -1672,7 +1676,7 @@ private function userCanAccessModule($userId = null) { private function saveUserDefinedCaps($capabilities) { delete_site_option(self::USER_DEFINED_CAP_KEY); - if (empty($capabilities)) { + if ( empty($capabilities) ) { return; } update_site_option(self::USER_DEFINED_CAP_KEY, $capabilities); @@ -1684,9 +1688,9 @@ private function saveUserDefinedCaps($capabilities) { * @return array [capabilityName => arbitraryValue] */ private function getUserDefinedCaps() { - $caps = get_site_option(self::USER_DEFINED_CAP_KEY, array()); - if (!is_array($caps)) { - return array(); + $caps = get_site_option(self::USER_DEFINED_CAP_KEY, []); + if ( !is_array($caps) ) { + return []; } return $caps; } @@ -1720,7 +1724,7 @@ public function filterEditableRoles($editableRoles) { //It's possible that another plugin has already removed some roles from the array. We'll need the full list //so that we can restore enabled roles if the user has selected the "user-defined-list" strategy. - if (function_exists('wp_roles')) { + if ( function_exists('wp_roles') ) { $allRoles = array_merge(wp_roles()->roles, $editableRoles); } else { $allRoles = $editableRoles; @@ -1732,27 +1736,27 @@ public function filterEditableRoles($editableRoles) { } //A super admin always has full access to everything. Do not remove any roles. - if (is_multisite() && is_super_admin()) { + if ( is_multisite() && is_super_admin() ) { return $editableRoles; } - $settings = ameUtils::get($this->loadSettings(), 'editableRoles', array()); + $settings = ameUtils::get($this->loadSettings(), 'editableRoles', []); $userRoles = $this->menuEditor->get_user_roles($user); //User-specific settings have precedence. //For users, "auto" means "use role settings". $userActorId = 'user:' . $user->user_login; - if ( ameUtils::get($settings, array($userActorId, 'strategy'), 'auto') !== 'auto' ) { + if ( ameUtils::get($settings, [$userActorId, 'strategy'], 'auto') !== 'auto' ) { $userSettings = $settings[$userActorId]; - if ($userSettings['strategy'] === 'none') { + if ( $userSettings['strategy'] === 'none' ) { //Leave the roles unchanged. $this->cachedOverallEditableRoleStrategy[$user->ID] = 'none'; return $editableRoles; - } else if ($userSettings['strategy'] === 'user-defined-list') { + } else if ( $userSettings['strategy'] === 'user-defined-list' ) { //Allow editing only those roles that are on the list. - $filteredResult = array(); - $allowedRoles = ameUtils::get($userSettings, 'userDefinedList', array()); - foreach($allRoles as $roleId => $role) { + $filteredResult = []; + $allowedRoles = ameUtils::get($userSettings, 'userDefinedList', []); + foreach ($allRoles as $roleId => $role) { if ( isset($allowedRoles[$roleId]) ) { $filteredResult[$roleId] = $role; } @@ -1770,21 +1774,38 @@ public function filterEditableRoles($editableRoles) { $leaveUnchanged = true; $hasAnyUserDefinedList = false; - $autoDisabledRoles = array(); - $filteredResult = array(); + $autoDisabledRoles = []; + $filteredResult = []; - foreach($allRoles as $roleId => $role) { + foreach ($allRoles as $roleId => $role) { $wasEnabled = isset($editableRoles[$roleId]); $canAutoDisable = false; //Include this role if at least one of the user's roles is allowed to edit it. - foreach($userRoles as $userRoleId) { + foreach ($userRoles as $userRoleId) { $actorId = 'role:' . $userRoleId; - $strategy = ameUtils::get($settings, array($actorId, 'strategy'), 'auto'); + $strategy = ameUtils::get( + $settings, + [$actorId, 'strategy'], + ($actorId === 'role:administrator') ? 'none' : 'auto' + ); $leaveUnchanged = $leaveUnchanged && ($strategy === 'none'); - if ($strategy === 'user-defined-list') { + /* + Special case: The "Administrator" role. + + Initially, Administrator had the same default restrictions as other roles. That is, + they could only edit roles that had a subset of their capabilities. However, I got + too many support requests from people who were surprised that their Administrator + account couldn't edit users with custom roles that had some capabilities that the + Administrator role didn't have. + + To avoid that, Administrator now defaults to "none" = leave unchanged. Of course, + you can still change that in the settings. + */ + + if ( $strategy === 'user-defined-list' ) { $hasAnyUserDefinedList = true; if ( isset($settings[$actorId]['userDefinedList'][$roleId]) ) { $filteredResult[$roleId] = $role; @@ -1809,20 +1830,29 @@ public function filterEditableRoles($editableRoles) { $filteredResult[$roleId] = $role; break; } - } else if ($strategy === 'none') { - if ($wasEnabled) { + } else if ( $strategy === 'none' ) { + if ( $wasEnabled ) { $filteredResult[$roleId] = $role; + $canAutoDisable = false; + break; } + } else { + //This should never happen. + throw new RuntimeException(sprintf( + 'Invalid editable role strategy "%s" for actor "%s".', + $strategy, + $actorId + )); } } - if ($canAutoDisable && !isset($filteredRoles[$roleId])) { + if ( $canAutoDisable && !isset($filteredResult[$roleId]) ) { $autoDisabledRoles[] = $roleId; } } //Are all of the roles set to "none" = leave unchanged? - if ($leaveUnchanged) { + if ( $leaveUnchanged ) { $this->cachedOverallEditableRoleStrategy[$user->ID] = 'none'; return $editableRoles; } @@ -1832,9 +1862,9 @@ public function filterEditableRoles($editableRoles) { //We won't need the capability cache again unless something changes or replaces the current user mid-request. //That's probably going to be rare, so we can throw away the cache to free up some RAM. - $this->cachedEnabledRoleCaps = array(); + $this->cachedEnabledRoleCaps = []; //Update the user cache. - if ($overallStrategy === 'auto') { + if ( $overallStrategy === 'auto' ) { $this->cachedEditableRoles[$user->ID] = new ameEditableRoleLimiter($autoDisabledRoles); } else { $this->cachedEditableRoles[$user->ID] = new ameEditableRoleReplacer( @@ -1842,14 +1872,14 @@ public function filterEditableRoles($editableRoles) { ); } - if (!$this->isRoleCacheClearingHookSet) { + if ( !$this->isRoleCacheClearingHookSet ) { $this->isRoleCacheClearingHookSet = true; //Clear cache when user roles or capabilities change. - add_action('updated_user_meta', array($this, 'clearEditableRoleCache'), 10, 0); - add_action('deleted_user_meta', array($this, 'clearEditableRoleCache'), 10, 0); + add_action('updated_user_meta', [$this, 'clearEditableRoleCache'], 10, 0); + add_action('deleted_user_meta', [$this, 'clearEditableRoleCache'], 10, 0); //Clear cache when switching to another site because users can have different roles //on different sites. - add_action('switch_blog', array($this, 'clearEditableRoleCache'), 10, 0); + add_action('switch_blog', [$this, 'clearEditableRoleCache'], 10, 0); } return $filteredResult; @@ -1861,18 +1891,18 @@ public function filterEditableRoles($editableRoles) { * @return boolean[] */ private function getEnabledCoreCapabilitiesForRole($roleId, $roleData = null) { - if (isset($this->cachedEnabledRoleCaps[$roleId])) { + if ( isset($this->cachedEnabledRoleCaps[$roleId]) ) { return $this->cachedEnabledRoleCaps[$roleId]; } - if ($roleData) { + if ( $roleData ) { $capabilities = isset($roleData['capabilities']) ? $roleData['capabilities'] : null; } else { $roleObject = get_role($roleId); $capabilities = isset($roleObject->capabilities) ? $roleObject->capabilities : null; } - if (!isset($capabilities) || !is_array($capabilities)) { - return array(); + if ( !isset($capabilities) || !is_array($capabilities) ) { + return []; } $enabledCaps = array_filter($capabilities); @@ -1893,10 +1923,10 @@ private function getEnabledCoreCapabilitiesForRole($roleId, $roleData = null) { */ private function getEffectiveEditableRoles() { $editableRoles = get_editable_roles(); - if (empty($editableRoles) || !is_array($editableRoles)) { - $editableRoles = array(); + if ( empty($editableRoles) || !is_array($editableRoles) ) { + $editableRoles = []; } - if (function_exists('bbp_get_dynamic_roles')) { + if ( function_exists('bbp_get_dynamic_roles') ) { $userId = get_current_user_id(); if ( !isset($this->cachedOverallEditableRoleStrategy[$userId]) @@ -1910,9 +1940,9 @@ private function getEffectiveEditableRoles() { } public function clearEditableRoleCache() { - $this->cachedEditableRoles = array(); - $this->cachedOverallEditableRoleStrategy = array(); - $this->cachedEnabledRoleCaps = array(); + $this->cachedEditableRoles = []; + $this->cachedOverallEditableRoleStrategy = []; + $this->cachedEnabledRoleCaps = []; } /** @@ -1925,8 +1955,8 @@ public function clearEditableRoleCache() { * @return array */ public function restrictUserEditing($requiredCaps, $capability, $thisUserId, $args) { - static $editUserCaps = array('edit_user', 'delete_user', 'promote_user'); - if (!in_array($capability, $editUserCaps) || !isset($args[0])) { + static $editUserCaps = ['edit_user', 'delete_user', 'promote_user']; + if ( !in_array($capability, $editUserCaps) || !isset($args[0]) ) { return $requiredCaps; } @@ -1938,29 +1968,29 @@ public function restrictUserEditing($requiredCaps, $capability, $thisUserId, $ar $isSuperAdmin = $isMultisite && is_super_admin($thisUserId); //Super Admins can edit everything. - if ($isSuperAdmin) { + if ( $isSuperAdmin ) { return $requiredCaps; } - $accessDenied = array_merge($requiredCaps, array('do_not_allow')); + $accessDenied = array_merge($requiredCaps, ['do_not_allow']); //Only Super Admins can edit other Super Admins. - if ($isMultisite && is_super_admin($targetUserId) && !$isSuperAdmin) { + if ( $isMultisite && is_super_admin($targetUserId) && !$isSuperAdmin ) { return $accessDenied; } //Users that don't have access to the role editor can't edit users that do have access. - if (!$this->userCanAccessModule($thisUserId) && $this->userCanAccessModule($targetUserId)) { + if ( !$this->userCanAccessModule($thisUserId) && $this->userCanAccessModule($targetUserId) ) { return $accessDenied; } //Finally, a user can only edit those other users that have an editable role. //This part only works with the current user because get_editable_roles() does not take a user parameter. - if (($thisUserId === get_current_user_id()) && ($thisUserId !== $targetUserId) ) { + if ( ($thisUserId === get_current_user_id()) && ($thisUserId !== $targetUserId) ) { //The file that defines get_editable_roles() is only loaded in the admin back-end even though //the "edit_user" capability is also used in the front-end, e.g. when adding an "Edit" link //to the Toolbar/Admin Bar on author pages. - if (!function_exists('get_editable_roles')) { + if ( !function_exists('get_editable_roles') ) { return $requiredCaps; } $editableRoles = get_editable_roles(); @@ -1972,19 +2002,19 @@ public function restrictUserEditing($requiredCaps, $capability, $thisUserId, $ar //Don't apply any further restrictions if all editable role settings are set to "leave unchanged" //for this user. - if ($strategy === 'none') { + if ( $strategy === 'none' ) { return $requiredCaps; } - if (function_exists('bbp_get_dynamic_roles')) { + if ( function_exists('bbp_get_dynamic_roles') ) { $bbPressRoles = bbp_get_dynamic_roles(); } else { - $bbPressRoles = array(); + $bbPressRoles = []; } $targetUser = get_user_by('id', $targetUserId); - $roles = (isset($targetUser->roles) && is_array($targetUser->roles)) ? $targetUser->roles : array(); - foreach($roles as $roleId) { + $roles = (isset($targetUser->roles) && is_array($targetUser->roles)) ? $targetUser->roles : []; + foreach ($roles as $roleId) { /* * = bbPress compatibility fix = * @@ -1995,11 +2025,11 @@ public function restrictUserEditing($requiredCaps, $capability, $thisUserId, $ar * This should not automatically prevent administrators from editing users who have any bbPress roles. * Therefore, let's ignore bbPress roles here unless the user has custom editable role settings. */ - if (array_key_exists($roleId, $bbPressRoles) && ($strategy !== 'user-defined-list')) { + if ( array_key_exists($roleId, $bbPressRoles) && ($strategy !== 'user-defined-list') ) { continue; } - if (!array_key_exists($roleId, $editableRoles)) { + if ( !array_key_exists($roleId, $editableRoles) ) { return $accessDenied; } } @@ -2037,7 +2067,7 @@ public function __construct($enabledRoles) { } public function filter($allRoles, $editableRoles) { - $result = array(); + $result = []; foreach ($allRoles as $roleId => $role) { if ( isset($this->enabledRoles[$roleId]) ) { $result[$roleId] = $role; diff --git a/extras/modules/role-editor/role-editor-template.php b/extras/modules/role-editor/role-editor-template.php index 7dd65e9..123a4e0 100644 --- a/extras/modules/role-editor/role-editor-template.php +++ b/extras/modules/role-editor/role-editor-template.php @@ -9,16 +9,17 @@ //Show errors encountered while saving changes. if (!empty($settingsErrors)) { echo '<div class="notice notice-error">'; - foreach ($settingsErrors as $error) { - /** @var WP_Error $error */ - if (!($error instanceof WP_Error)) { + foreach ($settingsErrors as $saveError) { + /** @var WP_Error $saveError */ + if (!($saveError instanceof WP_Error)) { continue; } - printf('<p title="%s">%s</p>', esc_attr($error->get_error_code()), esc_html($error->get_error_message())); + printf('<p title="%s">%s</p>', esc_attr($saveError->get_error_code()), esc_html($saveError->get_error_message())); } echo '</div>'; } +//phpcs:ignore WordPress.Security.NonceVerification.Recommended -- It's a simple flag for a status message, no need to verify. if (!empty($_GET['no-changes-made'])) { ?> <div class="notice notice-info is-dismissible" id="ame-rex-no-changes"> @@ -78,7 +79,8 @@ </div> </div> - <div id="rex-action-sidebar"> + <div id="rex-action-sidebar" class="metabox-holder"> + <div id="rex-main-buttons" class="postbox ws-ame-postbox"> <?php if (is_multisite() && is_super_admin() && is_network_admin()) { submit_button( @@ -176,6 +178,22 @@ </form> </div> + <?php + $relatedWidgetContent = trim(apply_filters('admin_menu_editor-rex_related_widget', '')); + if ( !empty($relatedWidgetContent) ): ?> + <div id="rex-related-widget" class="postbox ws-ame-postbox"> + <div class="postbox-header ws-ame-postbox-header"> + <h2 class="hndle">Related</h2> + </div> + <div class="inside ws-ame-postbox-content"> + <?php + //The code using the filter is responsible for escaping the content. + //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo $relatedWidgetContent; + ?> + </div> + </div> + <?php endif; ?> </div> <div id="rex-category-list-options" class="rex-dropdown" style="display: none;"> @@ -667,7 +685,7 @@ class="rex-documentation-link" name="editable-roles-behaviour"> Automatic <br><span class="description"> - Only allows to assign the roles that have the same or fewer capabilities. + Only allows to assign the roles that have the same or fewer core capabilities. </span> </label></p> <p><label> diff --git a/extras/modules/role-editor/role-editor.css b/extras/modules/role-editor/role-editor.css index c9270cb..38cfe2e 100644 --- a/extras/modules/role-editor/role-editor.css +++ b/extras/modules/role-editor/role-editor.css @@ -11,7 +11,7 @@ } #rex-content-container, -#rex-action-sidebar { +#rex-main-buttons { border: 1px solid #ccd0d4; background: #fff; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); @@ -30,13 +30,37 @@ flex-grow: 0; flex-shrink: 0; align-self: flex-start; - margin-left: 15px; - padding: 10px 8px; + display: flex; + flex-direction: column; + margin: 0 0 0 15px; +} +#rex-action-sidebar.metabox-holder { + padding-top: 0; } #rex-action-sidebar .rex-action-separator { height: 10px; } +#rex-main-buttons { + padding: 10px 8px; +} + +#rex-main-buttons, +#rex-related-widget { + min-width: unset; + margin: 0; +} + +#rex-related-widget { + margin-top: 15px; +} +#rex-related-widget .hndle { + cursor: initial; +} +#rex-related-widget .ws-ame-postbox-content { + margin-bottom: 0; +} + #rex-category-sidebar { width: 240px; flex-grow: 0; diff --git a/extras/modules/role-editor/role-editor.css.map b/extras/modules/role-editor/role-editor.css.map index 87fefdc..8f3c036 100644 --- a/extras/modules/role-editor/role-editor.css.map +++ b/extras/modules/role-editor/role-editor.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["role-editor.scss","../../../css/_boxes.scss"],"names":[],"mappings":";AAwBA;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAtBC,QAXW;EAYX;EACA,YCdkB;;;ADuCnB;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA,SAlDY;;AAoDZ;EACC;;;AAIF;EACC;EACA;EACA;EACA;EAEA,cAlEW;EAmEX;EAEA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAGA;EACC;;AAMD;EACC;;AADD;EACC;;AADD;EACC;;AADD;EACC;;AAIF;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;;AAMD;EACC;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EAEA;;AAID;EACC;EACA;EACA;EAEA;EACA;EACA;;AAIA;EACC;EACA,cAJY;EAKZ;EACA;;AAGD;EACC;EACA,aAXY;EAYZ,cAZY;;AAeb;EACC;EACA;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;EACC;EAEA;EACA;EACA;;;AAMD;EACC;EACA;EACA,OANkB;EAQlB;EACA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EAEA;EACA;EACA;EAEA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAIF;EACC,YC1QiB;;AD4QjB;EACC;;;AAWF;EAEC,OADe;EAEf;EACA;;;AAJD;EAEC,OADe;EAEf;EACA;;;AAJD;EAEC,OADe;EAEf;EACA;;;AAIF;EACC;EACA;;;AAKD;EAKG;IACC;IACA;;;AAMJ;EAKG;IACC;IACA;;;EAFD;IACC;IACA;;;AASH;EACC;EACA;;AAGD;EACC;EACA;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BA;EAdI;IACC;IACA;IACA;IACA;IAEA;IACA;;;AAWL;EAlBI;IACC;IACA;IACA;IACA;IAEA;IACA;;EAPD;IACC;IACA;IACA;IACA;IAEA;IACA;;;AAeL;EAtBI;IACC;IACA;IACA;IACA;IAEA;IACA;;EAPD;IACC;IACA;IACA;IACA;IAEA;IACA;;EAPD;IACC;IACA;IACA;IACA;IAEA;IACA;;;AAqBL;EACC;EACA;EAEA;EACA;EACA;;;AAGD;EAOC;EACA;EACA;EAEA;;AAUA;EACC;;AAGD;EACC;;;AAKD;EACC;;;AAIF;EACC;EACA;EAEA;EACA;;AAQD;EACC;EAEA;EACA;EACA;EAEA;EACA,QAhbqB;EAibrB;EAEA;EAEA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EAEA;EACA;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAQA;EAJA,kBAK4B;;AAG5B;EARA,kBAS4B;EAC3B;;;AASF;EAEC;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC;;;AAIF;EACC;;AAEA;EACC;;;AAIF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAIF;EACC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAzhBD;EACC;;AAgiBA;EACC;EACA;EACA;EACA;;;AAOH;EACC;EACA;EAEA;EACA;EAEA;EACA;EACA;;AAEA;EACC,YAxkBc;;AA2kBf;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAQD;EACC;;;AAKA;EACC;EACA;;AAhmBD;EACC;;AAomBD;EACC;;AAGD;EACC;;;AAIF;AAUA;EACC;IATA;IACA;;EAEA;IACC,OAM0B;;;EAG3B;IAbA;IACA;;EAEA;IACC,OAU0B;;;AAI5B;AACA;EACC;IApBA;IACA;;EAEA;IACC,OAiB0B;;;AAI5B;AAAA;AAAA;AAAA;AAIA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;IA/CA;IACA;;EAEA;IACC,OA4C0B;;;AAO3B;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA,aAhsBgB;;;AAmsBjB;EACC;EACA,QAtsBe;;;AAysBhB;EACC;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EAEA,QA5tBW;EA6tBX;EACA;EAEA,SA7tBY;EA8tBZ;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAMF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;;AAMF;EACC;EACA;EACA;;;AAIF;EACC;;;AAIA;EACC;EACA;;AAGD;EACC;EACA;;;AAKD;EACC;EACA;;AAGD;EACC;EACA;;;AAKD;EACC;EAEA;EACA;;AAGD;EACC;;AApzBD;EACC;;AAuzBD;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;;AAMF;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAMF;EACC;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC,MAxCmB;EAyCnB,QAzCmB;EA0CnB;;;AAMJ;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAMD;EACC,cAv6BW;EAw6BX,SAr6BY;EAu6BZ;;AAEA;EACC;;;AAIF;EACC;;;AAGD;EACC","file":"role-editor.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["role-editor.scss","../../../css/_boxes.scss"],"names":[],"mappings":";AAwBA;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAtBC,QAXW;EAYX;EACA,YCdkB;;;ADuCnB;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC,SAhEY;;;AAmEb;AAAA;EAEC;EACA;;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;EACA;EAEA,cA9FW;EA+FX;EAEA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAGA;EACC;;AAMD;EACC;;AADD;EACC;;AADD;EACC;;AADD;EACC;;AAIF;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;;AAMD;EACC;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EAEA;;AAID;EACC;EACA;EACA;EAEA;EACA;EACA;;AAIA;EACC;EACA,cAJY;EAKZ;EACA;;AAGD;EACC;EACA,aAXY;EAYZ,cAZY;;AAeb;EACC;EACA;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;EACC;EAEA;EACA;EACA;;;AAMD;EACC;EACA;EACA,OANkB;EAQlB;EACA;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EAEA;EACA;EACA;EAEA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAIF;EACC,YCtSiB;;ADwSjB;EACC;;;AAWF;EAEC,OADe;EAEf;EACA;;;AAJD;EAEC,OADe;EAEf;EACA;;;AAJD;EAEC,OADe;EAEf;EACA;;;AAIF;EACC;EACA;;;AAKD;EAKG;IACC;IACA;;;AAMJ;EAKG;IACC;IACA;;;EAFD;IACC;IACA;;;AASH;EACC;EACA;;AAGD;EACC;EACA;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BA;EAdI;IACC;IACA;IACA;IACA;IAEA;IACA;;;AAWL;EAlBI;IACC;IACA;IACA;IACA;IAEA;IACA;;EAPD;IACC;IACA;IACA;IACA;IAEA;IACA;;;AAeL;EAtBI;IACC;IACA;IACA;IACA;IAEA;IACA;;EAPD;IACC;IACA;IACA;IACA;IAEA;IACA;;EAPD;IACC;IACA;IACA;IACA;IAEA;IACA;;;AAqBL;EACC;EACA;EAEA;EACA;EACA;;;AAGD;EAOC;EACA;EACA;EAEA;;AAUA;EACC;;AAGD;EACC;;;AAKD;EACC;;;AAIF;EACC;EACA;EAEA;EACA;;AAQD;EACC;EAEA;EACA;EACA;EAEA;EACA,QA5cqB;EA6crB;EAEA;EAEA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EAEA;EACA;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAQA;EAJA,kBAK4B;;AAG5B;EARA,kBAS4B;EAC3B;;;AASF;EAEC;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC;;;AAIF;EACC;;AAEA;EACC;;;AAIF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAIF;EACC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AArjBD;EACC;;AA4jBA;EACC;EACA;EACA;EACA;;;AAOH;EACC;EACA;EAEA;EACA;EAEA;EACA;EACA;;AAEA;EACC,YApmBc;;AAumBf;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAQD;EACC;;;AAKA;EACC;EACA;;AA5nBD;EACC;;AAgoBD;EACC;;AAGD;EACC;;;AAIF;AAUA;EACC;IATA;IACA;;EAEA;IACC,OAM0B;;;EAG3B;IAbA;IACA;;EAEA;IACC,OAU0B;;;AAI5B;AACA;EACC;IApBA;IACA;;EAEA;IACC,OAiB0B;;;AAI5B;AAAA;AAAA;AAAA;AAIA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;IA/CA;IACA;;EAEA;IACC,OA4C0B;;;AAO3B;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA,aA5tBgB;;;AA+tBjB;EACC;EACA,QAluBe;;;AAquBhB;EACC;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EAEA,QAxvBW;EAyvBX;EACA;EAEA,SAzvBY;EA0vBZ;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAMF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;;AAMF;EACC;EACA;EACA;;;AAIF;EACC;;;AAIA;EACC;EACA;;AAGD;EACC;EACA;;;AAKD;EACC;EACA;;AAGD;EACC;EACA;;;AAKD;EACC;EAEA;EACA;;AAGD;EACC;;AAh1BD;EACC;;AAm1BD;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;;AAMF;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAMF;EACC;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC,MAxCmB;EAyCnB,QAzCmB;EA0CnB;;;AAMJ;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAMD;EACC,cAn8BW;EAo8BX,SAj8BY;EAm8BZ;;AAEA;EACC;;;AAIF;EACC;;;AAGD;EACC","file":"role-editor.css"} \ No newline at end of file diff --git a/extras/modules/role-editor/role-editor.js b/extras/modules/role-editor/role-editor.js index 600c6bb..88f3ebd 100644 --- a/extras/modules/role-editor/role-editor.js +++ b/extras/modules/role-editor/role-editor.js @@ -1,6 +1,6 @@ "use strict"; /// <reference path="../../../js/knockout.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../../js/common.d.ts" /> /// <reference path="../../../js/actor-manager.ts" /> /// <reference path="../../../js/jquery.d.ts" /> @@ -329,7 +329,7 @@ class RexUser extends RexBaseActor { } toJs() { const _ = wsAmeLodash; - let roles = _.invoke(this.roles(), 'name'); + let roles = _.invokeMap(this.roles(), 'name'); return { userId: this.userId, userLogin: this.userLogin, @@ -339,7 +339,7 @@ class RexUser extends RexBaseActor { }; } getRoleIds() { - return wsAmeLodash.map(this.roles(), 'name'); + return wsAmeLodash.invokeMap(this.roles(), 'name'); } } class RexCategory { @@ -1426,7 +1426,7 @@ class RexUserPreferences { if (_.isArray(initialPreferences)) { initialPreferences = {}; } - this.preferenceObservables = _.mapValues(initialPreferences, ko.observable, ko); + this.preferenceObservables = _.mapValues(initialPreferences, value => ko.observable(value)); this.preferenceCount = ko.observable(_.size(this.preferenceObservables)); this.collapsedCategories = new RexCollapsedCategorySet(_.get(initialPreferences, 'collapsedCategories', [])); this.plainPreferences = ko.computed(() => { @@ -1515,6 +1515,7 @@ class RexCollapsedCategorySet { return this.items(); } } +const EditableRoleDefaultStrategy = 'auto'; class RexBaseDialog { constructor() { this.isOpen = ko.observable(false); @@ -1596,7 +1597,7 @@ class RexDeleteCapDialog extends RexBaseDialog { .filter(function (item) { return item.isSelected(); }) - .pluck('capability') + .map('capability') .value(); //Note: We could remove confirmation if we get an "Undo" feature. const noun = (selectedCapabilities.length === 1) ? 'capability' : 'capabilities'; @@ -1708,7 +1709,7 @@ class RexAddCapabilityDialog extends RexBaseDialog { return newCapabilityName(); }, write: (value) => { - value = _.trimRight(value); + value = _.trimEnd(value); //Validate and sanitize the capability name. let state = this.validationState, message = this.validationMessage; //WP API allows completely arbitrary capability names, but this plugin forbids some characters @@ -1946,9 +1947,10 @@ class RexDeleteRoleDialog extends RexBaseDialog { const _ = wsAmeLodash; let rolesToDelete = this.getSelectedRoles(); //Warn about the dangers of deleting built-in roles. - let selectedBuiltInRoles = _.filter(rolesToDelete, _.method('isBuiltIn')); + let selectedBuiltInRoles = _.filter(rolesToDelete, r => r.isBuiltIn()); if (selectedBuiltInRoles.length > 0) { - const warning = 'Caution: Deleting default roles like ' + _.first(selectedBuiltInRoles).displayName() + const firstRole = _.head(selectedBuiltInRoles); + const warning = 'Caution: Deleting default roles like ' + ((firstRole === null || firstRole === void 0 ? void 0 : firstRole.displayName()) || '[none]') + ' can prevent you from using certain plugins. This is because some plugins look for specific' + ' role names to determine if a user is allowed to access the plugin.' + '\nDelete ' + selectedBuiltInRoles.length + ' default role(s)?'; @@ -2021,7 +2023,7 @@ class RexRenameRoleDialog extends RexBaseDialog { this.selectedRole(selectedActor); } else { - this.selectedRole(_.first(this.editor.roles())); + this.selectedRole(_.head(this.editor.roles()) || null); } } onConfirm() { @@ -2073,6 +2075,13 @@ class RexEagerObservableStringSet { } return this.items[item]; } + isEmpty() { + const _ = wsAmeLodash; + //Note: every() returns true for empty collections. + return _.every(this.items, (isInSet) => { + return !isInSet(); + }); + } getAsObject(fillValue) { const _ = wsAmeLodash; let output = {}; @@ -2086,7 +2095,7 @@ class RexEagerObservableStringSet { } class RexObservableEditableRoleSettings { constructor() { - this.strategy = ko.observable('auto'); + this.strategy = ko.observable(EditableRoleDefaultStrategy); this.userDefinedList = new RexEagerObservableStringSet(); } toPlainObject() { @@ -2099,6 +2108,12 @@ class RexObservableEditableRoleSettings { userDefinedList: roleList }; } + /** + * Are there any enabled items in the user-defined list? + */ + hasUserDefinedList() { + return !this.userDefinedList.isEmpty(); + } } class RexUserRoleModule { constructor(selectedActor, roles) { @@ -2213,6 +2228,11 @@ class RexEditableRolesDialog extends RexBaseDialog { super(); this.selectedActor = ko.observable(null); this.actorSettings = {}; + this.defaultStrategyByActor = { + //Administrators are allowed to edit all roles by default, so set + //the strategy to "none" (leave unchanged). + 'role:administrator': 'none', + }; this.editor = editor; this.visibleActors = ko.observableArray([]); this.options.minWidth = 600; @@ -2238,8 +2258,13 @@ class RexEditableRolesDialog extends RexBaseDialog { } const actorId = selectedActor.getId(); if (!this.actorSettings.hasOwnProperty(actorId)) { - //This should never happen; the dictionary should be initialized when opening the dialog. - this.actorSettings[actorId] = new RexObservableEditableRoleSettings(); + //This will happen when an actor doesn't have any custom settings. + const defaultSettings = new RexObservableEditableRoleSettings(); + //Does this actor have a different default? + if (this.defaultStrategyByActor.hasOwnProperty(actorId)) { + defaultSettings.strategy(this.defaultStrategyByActor[actorId]); + } + this.actorSettings[actorId] = defaultSettings; } return this.actorSettings[actorId]; }); @@ -2290,7 +2315,7 @@ class RexEditableRolesDialog extends RexBaseDialog { this.selectedActor(selectedActor); } else { - this.selectedActor(_.first(this.editor.roles())); + this.selectedActor(_.head(this.editor.roles()) || null); } } onConfirm() { @@ -2298,11 +2323,15 @@ class RexEditableRolesDialog extends RexBaseDialog { const _ = wsAmeLodash; let settings = this.editor.actorEditableRoles; _.forEach(this.actorSettings, (observableSettings, actorId) => { + var _a; if (typeof actorId === 'undefined') { throw new Error('Actor ID is undefined. This should never happen.'); } - if (observableSettings.strategy() === 'auto') { - //"auto" is the default, so we don't need to store anything. + const strategy = observableSettings.strategy(); + const defaultStrategyForActor = (_a = this.defaultStrategyByActor[actorId]) !== null && _a !== void 0 ? _a : EditableRoleDefaultStrategy; + if ((strategy === defaultStrategyForActor) && !observableSettings.hasUserDefinedList()) { + //This actor has the default strategy and the user hasn't selected any roles in + //the user-defined list, so we don't need to store anything. delete settings[actorId]; } else { @@ -2357,7 +2386,7 @@ class RexRoleEditor { this.inheritanceOverrideEnabled = preferences.getObservable('inheritanceOverrideEnabled', false); //Remember and restore the selected view mode. let viewModeId = preferences.getObservable('categoryVewMode', 'hierarchy'); - let initialViewMode = _.find(this.categoryViewOptions, 'id', viewModeId()); + let initialViewMode = _.find(this.categoryViewOptions, _.matchesProperty('id', viewModeId())); if (!initialViewMode) { initialViewMode = RexRoleEditor.hierarchyView; } @@ -2486,7 +2515,7 @@ class RexRoleEditor { const coreCategory = RexCategory.fromJs(data.coreCategory, this); this.rootCategory.addSubcategory(coreCategory); const postTypeCategory = new RexPostTypeContainerCategory('Post Types', this, 'postTypes'); - this.postTypes = _.indexBy(data.postTypes, 'name'); + this.postTypes = _.keyBy(data.postTypes, 'name'); _.forEach(this.postTypes, (details, id) => { if (typeof id === 'undefined') { throw new Error('Undefined post type ID. This should never happen.'); @@ -2675,7 +2704,7 @@ class RexRoleEditor { const keywords = this.searchKeywords(), capabilityName = capability.name; if (keywords.length > 0) { const haystack = capabilityName.toLowerCase(); - const matchesKeywords = wsAmeLodash.all(keywords, function (keyword) { + const matchesKeywords = wsAmeLodash.every(keywords, function (keyword) { return haystack.indexOf(keyword) >= 0; }); if (!matchesKeywords) { @@ -2789,7 +2818,7 @@ class RexRoleEditor { return RexUser.fromAmeUserProperties(properties, this); } getRoles() { - return wsAmeLodash.indexBy(this.roles(), function (role) { + return wsAmeLodash.keyBy(this.roles(), function (role) { return role.name(); }); } @@ -2807,7 +2836,7 @@ class RexRoleEditor { return null; } getUsers() { - return wsAmeLodash.indexBy(this.users(), 'userLogin'); + return wsAmeLodash.keyBy(this.users(), 'userLogin'); } isInSelectedCategory(capabilityName) { let caps = this.capsInSelectedCategory(); @@ -2894,9 +2923,9 @@ class RexRoleEditor { this.isSaving(true); const _ = wsAmeLodash; let data = { - 'roles': _.invoke(this.roles(), 'toJs'), - 'users': _.invoke(this.users(), 'toJs'), - 'trashedRoles': _.invoke(this.trashedRoles(), 'toJs'), + 'roles': _.invokeMap(this.roles(), 'toJs'), + 'users': _.invokeMap(this.users(), 'toJs'), + 'trashedRoles': _.invokeMap(this.trashedRoles(), 'toJs'), 'userDefinedCaps': _.keys(this.userDefinedCapabilities), 'editableRoles': this.actorEditableRoles }; diff --git a/extras/modules/role-editor/role-editor.js.map b/extras/modules/role-editor/role-editor.js.map index f2eedeb..02263ed 100644 --- a/extras/modules/role-editor/role-editor.js.map +++ b/extras/modules/role-editor/role-editor.js.map @@ -1 +1 @@ -{"version":3,"file":"role-editor.js","sourceRoot":"","sources":["role-editor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"role-editor.js","sourceRoot":"","sources":["role-editor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/role-editor/role-editor.scss b/extras/modules/role-editor/role-editor.scss index fdc277b..0fe824f 100644 --- a/extras/modules/role-editor/role-editor.scss +++ b/extras/modules/role-editor/role-editor.scss @@ -34,7 +34,7 @@ $onePermissionHeight: 27px; } #rex-content-container, -#rex-action-sidebar { +#rex-main-buttons { @include ame-postbox; } @@ -52,14 +52,42 @@ $onePermissionHeight: 27px; flex-shrink: 0; align-self: flex-start; - margin-left: 15px; - padding: $boxPadding; + display: flex; + flex-direction: column; + + margin: 0 0 0 15px; + + &.metabox-holder { + padding-top: 0; + } .rex-action-separator { height: 10px; } } +#rex-main-buttons { + padding: $boxPadding; +} + +#rex-main-buttons, +#rex-related-widget { + min-width: unset; + margin: 0; +} + +#rex-related-widget { + margin-top: 15px; + + .hndle { + cursor: initial; + } + + .ws-ame-postbox-content { + margin-bottom: 0; + } +} + #rex-category-sidebar { width: 240px; flex-grow: 0; @@ -952,4 +980,5 @@ $editableRolesSectionBorder: #ccd0d4; .rex-user-role-option-list { margin-top: 0; } + //endregion \ No newline at end of file diff --git a/extras/modules/role-editor/role-editor.ts b/extras/modules/role-editor/role-editor.ts index f6758d0..56424d7 100644 --- a/extras/modules/role-editor/role-editor.ts +++ b/extras/modules/role-editor/role-editor.ts @@ -1,5 +1,7 @@ /// <reference path="../../../js/knockout.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> + +/// <reference types="@types/lodash" /> + /// <reference path="../../../js/common.d.ts" /> /// <reference path="../../../js/actor-manager.ts" /> /// <reference path="../../../js/jquery.d.ts" /> @@ -428,7 +430,7 @@ class RexUser extends RexBaseActor implements IAmeUser { toJs(): RexStorableUserData { const _ = wsAmeLodash; - let roles = _.invoke(this.roles(), 'name'); + let roles = _.invokeMap(this.roles(), 'name'); return { userId: this.userId, userLogin: this.userLogin, @@ -439,7 +441,7 @@ class RexUser extends RexBaseActor implements IAmeUser { } getRoleIds(): string[] { - return wsAmeLodash.map(this.roles(), 'name'); + return wsAmeLodash.invokeMap(this.roles(), 'name'); } } @@ -1136,10 +1138,9 @@ class RexPostTypeCategory extends RexContentTypeCategory { this.sortPermissions(); - type ActionMapItem = (typeof this.actions[string]); //The "create" capability is often the same as the "edit" capability. - const editPerm = _.get<ActionMapItem | null>(this.actions, 'edit_posts', null), - createPerm = _.get<ActionMapItem | null>(this.actions, 'create_posts', null); + const editPerm = _.get(this.actions, 'edit_posts', null), + createPerm = _.get(this.actions, 'create_posts', null); if (editPerm && createPerm && (createPerm.capability.name === editPerm.capability.name)) { createPerm.isRedundant = true; } @@ -1151,7 +1152,7 @@ class RexPostTypeCategory extends RexContentTypeCategory { } sortPermissions() { - this.permissions.sort((a, b)=> { + this.permissions.sort((a, b) => { if ((a instanceof RexPostTypePermission) && (b instanceof RexPostTypePermission)) { const priorityA = RexPostTypeCategory.desiredActionOrder.hasOwnProperty(a.action) ? RexPostTypeCategory.desiredActionOrder[a.action] : 1000; const priorityB = RexPostTypeCategory.desiredActionOrder.hasOwnProperty(b.action) ? RexPostTypeCategory.desiredActionOrder[b.action] : 1000; @@ -1466,8 +1467,8 @@ interface RexCapabilityData { menuItems: string[]; usedByComponents: string[]; - documentationUrl?: string|null; - permissions?: string[]|null; + documentationUrl?: string | null; + permissions?: string[] | null; readableName?: string; } @@ -1856,7 +1857,7 @@ class RexUserPreferences { initialPreferences = {}; } - this.preferenceObservables = _.mapValues(initialPreferences, ko.observable, ko); + this.preferenceObservables = _.mapValues(initialPreferences, value => ko.observable(value)); this.preferenceCount = ko.observable(_.size(this.preferenceObservables)); this.collapsedCategories = new RexCollapsedCategorySet(_.get(initialPreferences, 'collapsedCategories', [])); @@ -2013,6 +2014,8 @@ interface RexTaxonomyData extends RexBaseContentData { type RexEditableRoleStrategy = 'auto' | 'none' | 'user-defined-list'; +const EditableRoleDefaultStrategy: RexEditableRoleStrategy = 'auto'; + interface RexEditableRoleSettings { strategy: RexEditableRoleStrategy; userDefinedList: null | { [roleId: string]: true; }; @@ -2154,7 +2157,7 @@ class RexDeleteCapDialog extends RexBaseDialog { .filter(function (item) { return item.isSelected(); }) - .pluck<RexCapability>('capability') + .map('capability') .value(); //Note: We could remove confirmation if we get an "Undo" feature. @@ -2292,7 +2295,7 @@ class RexAddCapabilityDialog extends RexBaseDialog { return newCapabilityName(); }, write: (value) => { - value = _.trimRight(value); + value = _.trimEnd(value); //Validate and sanitize the capability name. let state = this.validationState, @@ -2576,12 +2579,14 @@ class RexDeleteRoleDialog extends RexBaseDialog { onConfirm() { const _ = wsAmeLodash; - let rolesToDelete = this.getSelectedRoles(); + let rolesToDelete: RexRole[] = this.getSelectedRoles(); //Warn about the dangers of deleting built-in roles. - let selectedBuiltInRoles = _.filter(rolesToDelete, _.method('isBuiltIn')); + let selectedBuiltInRoles: RexRole[] = _.filter(rolesToDelete, r => r.isBuiltIn()); if (selectedBuiltInRoles.length > 0) { - const warning = 'Caution: Deleting default roles like ' + _.first(selectedBuiltInRoles).displayName() + const firstRole = _.head(selectedBuiltInRoles); + + const warning = 'Caution: Deleting default roles like ' + (firstRole?.displayName() || '[none]') + ' can prevent you from using certain plugins. This is because some plugins look for specific' + ' role names to determine if a user is allowed to access the plugin.' + '\nDelete ' + selectedBuiltInRoles.length + ' default role(s)?'; @@ -2667,7 +2672,7 @@ class RexRenameRoleDialog extends RexBaseDialog { if (selectedActor && (selectedActor instanceof RexRole)) { this.selectedRole(selectedActor); } else { - this.selectedRole(_.first(this.editor.roles())); + this.selectedRole(_.head(this.editor.roles()) || null); } } @@ -2724,6 +2729,14 @@ class RexEagerObservableStringSet { return this.items[item]; } + public isEmpty(): boolean { + const _ = wsAmeLodash; + //Note: every() returns true for empty collections. + return _.every(this.items, (isInSet) => { + return !isInSet(); + }); + } + public getAsObject<T>(fillValue: T): Record<string, T> { const _ = wsAmeLodash; let output: Record<string, T> = {}; @@ -2741,7 +2754,7 @@ class RexObservableEditableRoleSettings { userDefinedList: RexEagerObservableStringSet; constructor() { - this.strategy = ko.observable<RexEditableRoleStrategy>('auto'); + this.strategy = ko.observable<RexEditableRoleStrategy>(EditableRoleDefaultStrategy); this.userDefinedList = new RexEagerObservableStringSet(); } @@ -2755,6 +2768,13 @@ class RexObservableEditableRoleSettings { userDefinedList: roleList }; } + + /** + * Are there any enabled items in the user-defined list? + */ + hasUserDefinedList(): boolean { + return !this.userDefinedList.isEmpty(); + } } class RexUserRoleModule { @@ -2901,6 +2921,12 @@ class RexEditableRolesDialog extends RexBaseDialog { isAutoStrategyAllowed: KnockoutComputed<boolean>; isListStrategyAllowed: KnockoutComputed<boolean>; + private readonly defaultStrategyByActor: Record<string, RexEditableRoleStrategy> = { + //Administrators are allowed to edit all roles by default, so set + //the strategy to "none" (leave unchanged). + 'role:administrator': 'none', + }; + constructor(editor: RexRoleEditor) { super(); this.editor = editor; @@ -2931,8 +2957,15 @@ class RexEditableRolesDialog extends RexBaseDialog { } const actorId = selectedActor.getId(); if (!this.actorSettings.hasOwnProperty(actorId)) { - //This should never happen; the dictionary should be initialized when opening the dialog. - this.actorSettings[actorId] = new RexObservableEditableRoleSettings(); + //This will happen when an actor doesn't have any custom settings. + const defaultSettings = new RexObservableEditableRoleSettings(); + + //Does this actor have a different default? + if (this.defaultStrategyByActor.hasOwnProperty(actorId)) { + defaultSettings.strategy(this.defaultStrategyByActor[actorId]); + } + + this.actorSettings[actorId] = defaultSettings; } return this.actorSettings[actorId]; }); @@ -2990,7 +3023,7 @@ class RexEditableRolesDialog extends RexBaseDialog { if (selectedActor) { this.selectedActor(selectedActor); } else { - this.selectedActor(_.first(this.editor.roles())); + this.selectedActor(_.head(this.editor.roles()) || null); } } @@ -3003,8 +3036,11 @@ class RexEditableRolesDialog extends RexBaseDialog { throw new Error('Actor ID is undefined. This should never happen.'); } - if (observableSettings.strategy() === 'auto') { - //"auto" is the default, so we don't need to store anything. + const strategy = observableSettings.strategy(); + const defaultStrategyForActor = this.defaultStrategyByActor[actorId] ?? EditableRoleDefaultStrategy; + if ((strategy === defaultStrategyForActor) && !observableSettings.hasUserDefinedList()) { + //This actor has the default strategy and the user hasn't selected any roles in + //the user-defined list, so we don't need to store anything. delete settings[actorId]; } else { settings[actorId] = observableSettings.toPlainObject(); @@ -3170,7 +3206,7 @@ class RexRoleEditor implements AmeActorManagerInterface { //Remember and restore the selected view mode. let viewModeId = preferences.getObservable('categoryVewMode', 'hierarchy'); - let initialViewMode = _.find(this.categoryViewOptions, 'id', viewModeId()); + let initialViewMode = _.find(this.categoryViewOptions, _.matchesProperty('id', viewModeId())); if (!initialViewMode) { initialViewMode = RexRoleEditor.hierarchyView; } @@ -3320,7 +3356,7 @@ class RexRoleEditor implements AmeActorManagerInterface { this.rootCategory.addSubcategory(coreCategory); const postTypeCategory = new RexPostTypeContainerCategory('Post Types', this, 'postTypes'); - this.postTypes = _.indexBy(data.postTypes, 'name'); + this.postTypes = _.keyBy(data.postTypes, 'name'); _.forEach(this.postTypes, (details: RexPostTypeData, id) => { if (typeof id === 'undefined') { throw new Error('Undefined post type ID. This should never happen.'); @@ -3544,7 +3580,7 @@ class RexRoleEditor implements AmeActorManagerInterface { capabilityName = capability.name; if (keywords.length > 0) { const haystack = capabilityName.toLowerCase(); - const matchesKeywords = wsAmeLodash.all( + const matchesKeywords = wsAmeLodash.every( keywords, function (keyword) { return haystack.indexOf(keyword) >= 0; @@ -3683,7 +3719,7 @@ class RexRoleEditor implements AmeActorManagerInterface { } getRoles(): AmeDictionary<RexRole> { - return wsAmeLodash.indexBy(this.roles(), function (role) { + return wsAmeLodash.keyBy(this.roles(), function (role) { return role.name(); }); } @@ -3704,7 +3740,7 @@ class RexRoleEditor implements AmeActorManagerInterface { } getUsers(): AmeDictionary<RexUser> { - return wsAmeLodash.indexBy(this.users(), 'userLogin'); + return wsAmeLodash.keyBy(this.users(), 'userLogin'); } isInSelectedCategory(capabilityName: string): boolean { @@ -3808,9 +3844,9 @@ class RexRoleEditor implements AmeActorManagerInterface { const _ = wsAmeLodash; let data = { - 'roles': _.invoke(this.roles(), 'toJs'), - 'users': _.invoke(this.users(), 'toJs'), - 'trashedRoles': _.invoke(this.trashedRoles(), 'toJs'), + 'roles': _.invokeMap(this.roles(), 'toJs'), + 'users': _.invokeMap(this.users(), 'toJs'), + 'trashedRoles': _.invokeMap(this.trashedRoles(), 'toJs'), 'userDefinedCaps': _.keys(this.userDefinedCapabilities), 'editableRoles': this.actorEditableRoles }; diff --git a/extras/modules/super-users/super-users.js b/extras/modules/super-users/super-users.js index fad071f..1084a06 100644 --- a/extras/modules/super-users/super-users.js +++ b/extras/modules/super-users/super-users.js @@ -2,7 +2,7 @@ /// <reference path="../../../js/knockout.d.ts" /> /// <reference path="../../../js/jquery.d.ts" /> /// <reference path="../../../js/jquery.biscuit.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../../modules/actor-selector/actor-selector.ts" /> class AmeSuperUsers { constructor(settings) { @@ -43,7 +43,7 @@ class AmeSuperUsers { selectHiddenUsers() { AmeSelectUsersDialog.open({ selectedUsers: AmeSuperUsers._.map(this.superUsers(), 'userLogin'), - users: AmeSuperUsers._.indexBy(this.superUsers(), 'userLogin'), + users: AmeSuperUsers._.keyBy(this.superUsers(), 'userLogin'), actorManager: AmeActors, currentUserLogin: this.currentUserLogin, alwaysIncludeCurrentUser: false, diff --git a/extras/modules/super-users/super-users.js.map b/extras/modules/super-users/super-users.js.map index ac3a1c6..612e8e0 100644 --- a/extras/modules/super-users/super-users.js.map +++ b/extras/modules/super-users/super-users.js.map @@ -1 +1 @@ -{"version":3,"file":"super-users.js","sourceRoot":"","sources":["super-users.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"super-users.js","sourceRoot":"","sources":["super-users.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/super-users/super-users.ts b/extras/modules/super-users/super-users.ts index 4b058f0..de5de06 100644 --- a/extras/modules/super-users/super-users.ts +++ b/extras/modules/super-users/super-users.ts @@ -1,7 +1,7 @@ /// <reference path="../../../js/knockout.d.ts" /> /// <reference path="../../../js/jquery.d.ts" /> /// <reference path="../../../js/jquery.biscuit.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../../modules/actor-selector/actor-selector.ts" /> declare var wsAmeSuperUserSettings: Object; @@ -62,7 +62,7 @@ class AmeSuperUsers { public selectHiddenUsers() { AmeSelectUsersDialog.open({ selectedUsers: AmeSuperUsers._.map(this.superUsers(), 'userLogin'), - users: AmeSuperUsers._.indexBy(this.superUsers(), 'userLogin'), + users: AmeSuperUsers._.keyBy(this.superUsers(), 'userLogin'), actorManager: AmeActors, currentUserLogin: this.currentUserLogin, diff --git a/extras/modules/tweaks/tweak-manager.js b/extras/modules/tweaks/tweak-manager.js index 59d9db5..5b50f95 100644 --- a/extras/modules/tweaks/tweak-manager.js +++ b/extras/modules/tweaks/tweak-manager.js @@ -1,7 +1,7 @@ "use strict"; /// <reference path="../../../js/knockout.d.ts" /> /// <reference path="../../../js/jquery.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../../modules/actor-selector/actor-selector.ts" /> /// <reference path="../../../js/jquery.biscuit.d.ts" /> /// <reference path="../../ko-extensions.ts" /> @@ -398,11 +398,26 @@ class AmeTweakItem extends AmeCompositeNode { } class AmeTweakSection { constructor(properties) { + this.description = ''; this.footerTemplateName = null; this.id = properties.id; this.label = properties.label; this.isOpen = ko.observable(true); this.tweaks = ko.observableArray([]); + if (properties.description) { + this.description = properties.description; + //Add <br> tags to line breaks. This will look better in the tooltip. + this.descriptionHtml = properties.description.replace(/\n/g, '<br>\n'); + } + else { + this.descriptionHtml = ''; + } + if (this.id.length > 0) { + this.htmlId = 'twm-section_' + this.id; + } + else { + this.htmlId = ''; + } } addTweak(tweak) { this.tweaks.push(tweak); @@ -446,7 +461,7 @@ class AmeTweakManagerModule { } }); //Sort sections by priority, then by label. - let sectionData = _.sortByAll(scriptData.sections, ['priority', 'label']); + let sectionData = _.sortBy(scriptData.sections, ['priority', 'label']); //Register sections. _.forEach(sectionData, (properties) => { let section = new AmeTweakSection(properties); @@ -489,7 +504,7 @@ class AmeTweakManagerModule { return result; }, write: (sectionIds) => { - const openSections = _.indexBy(sectionIds); + const openSections = _.keyBy(sectionIds); _.forEach(this.sections, section => { section.isOpen(openSections.hasOwnProperty(section.id)); }); @@ -508,7 +523,13 @@ class AmeTweakManagerModule { this.openSectionIds(initialState); } else { - this.openSectionIds([_.first(this.sections).id]); + const firstSection = _.head(this.sections); + if (firstSection) { + this.openSectionIds([firstSection.id]); + } + else { + this.openSectionIds([]); + } } this.openSectionIds.subscribe((sectionIds) => { jQuery.cookie(AmeTweakManagerModule.openSectionCookieName, ko.toJSON(sectionIds), { expires: 90 }); @@ -524,7 +545,7 @@ class AmeTweakManagerModule { this.isSaving(true); const _ = wsAmeLodash; let data = { - 'tweaks': _.indexBy(_.invoke(this.tweaksById, 'toJs'), 'id'), + 'tweaks': _.keyBy(_.invokeMap(this.tweaksById, 'toJs'), 'id'), 'lastUserTweakSuffix': this.lastUserTweakSuffix }; this.settingsData(ko.toJSON(data)); @@ -660,8 +681,34 @@ class AmeEditAdminCssDialog { this.isOpen(true); } } -jQuery(function () { - ameTweakManager = new AmeTweakManagerModule(wsTweakManagerData); - ko.applyBindings(ameTweakManager, document.getElementById('ame-tweak-manager')); -}); +{ + let isTwmInitialized = false; + function wsAmeInitTweakManager() { + if (isTwmInitialized) { + return; + } + const rootNode = document.getElementById('ame-tweak-manager'); + if (!rootNode) { + return; + } + ameTweakManager = new AmeTweakManagerModule(wsTweakManagerData); + ko.applyBindings(ameTweakManager, rootNode); + isTwmInitialized = true; + } + //Try to initialize the tweak manager as soon as possible so that tweak sections + //can be targeted by #hash links. + wsAmeInitTweakManager(); + jQuery(function () { + //Alternatively, we can wait until the document is ready. + wsAmeInitTweakManager(); + //Init tooltips. + if (typeof jQuery['qtip'] !== 'undefined') { + jQuery('#ame-tweak-manager .ws_tooltip_trigger').qtip({ + style: { + classes: 'qtip qtip-rounded ws_tooltip_node' + } + }); + } + }); +} //# sourceMappingURL=tweak-manager.js.map \ No newline at end of file diff --git a/extras/modules/tweaks/tweak-manager.js.map b/extras/modules/tweaks/tweak-manager.js.map index b82fca3..d402bfe 100644 --- a/extras/modules/tweaks/tweak-manager.js.map +++ b/extras/modules/tweaks/tweak-manager.js.map @@ -1 +1 @@ -{"version":3,"file":"tweak-manager.js","sourceRoot":"","sources":["tweak-manager.ts"],"names":[],"mappings":";AAAA,kDAAkD;AAClD,gDAAgD;AAChD,qDAAqD;AACrD,0EAA0E;AAC1E,wDAAwD;AACxD,+CAA+C;AAE/C,IAAI,eAAsC,CAAC;AAiB3C,MAAe,YAAY;IAK1B,YAAsB,UAAkC;QAFxD,WAAM,GAAW,EAAE,CAAC;QAGnB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;CACD;AAOD,SAAS,4BAA4B,CAAC,KAA6B;IAClE,MAAM,KAAK,GAAG,KAAmC,CAAC;IAClD,OAAO,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC;AAChD,CAAC;AAQD,SAAS,sBAAsB,CAAC,KAA6B;IAC5D,OAAO,CAAC,OAAQ,KAA8B,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,MAAe,UAAW,SAAQ,YAAY;IAQ7C,YAAsB,UAAgC,EAAE,KAAsB,EAAE,OAAiB,EAAE;QAClG,KAAK,CAAC,UAAU,CAAC,CAAC;QANnB,iEAAiE;QACjE,iBAAY,GAAW,EAAE,CAAC;QAMzB,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE;YACnD,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;SACvC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAEjF,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC;IACnE,CAAC;;AAjBgB,oBAAS,GAAG,CAAC,CAAC;AAwBhC,MAAM,gBAAiB,SAAQ,UAAU;IAGxC,YACC,UAAsC,EACtC,MAA6B,EAC7B,KAAsB,EACtB,OAAiB,EAAE;QAEnB,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QARhC,8BAAyB,GAAkB,IAAI,CAAC;QAS/C,IAAI,CAAC,YAAY,GAAG,mCAAmC,CAAC;QAExD,IAAI,UAAU,CAAC,kBAAkB,IAAI,MAAM,EAAE;YAC5C,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;SAC5F;IACF,CAAC;CACD;AAED,MAAM,eAAgB,SAAQ,UAAU;IACvC,YACC,UAAsC,EACtC,KAAsB,EACtB,OAAiB,EAAE;QAEnB,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,gCAAgC,CAAC;IACtD,CAAC;CACD;AAED,MAAM,iBAAkB,SAAQ,UAAU;IAGzC,YACC,UAAsC,EACtC,KAAsB,EACtB,OAAiB,EAAE;QAEnB,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAPzB,iBAAY,GAAW,kCAAkC,CAAC;QAShE,4CAA4C;QAC5C,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI,OAAO,cAAc,EAAE,KAAK,SAAS,EAAE;YAC1C,cAAc,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAU;YACtC,IAAI,EAAE;gBACL,OAAO,cAAc,EAAE,CAAC;YACzB,CAAC;YACD,KAAK,EAAE,UAAU,QAAQ;gBACxB,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;oBAClC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;iBACtB;gBACD,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,IAAI;SACX,CAAC,CAAC;IACJ,CAAC;CACD;AAQD,SAAS,2BAA2B,CAAC,KAA6B;IACjE,OAAO,CAAC,OAAQ,KAAmC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;AACjF,CAAC;AAID,MAAM,eAAe;IAKpB,YAAY,oBAAyC,EAAE;QAJ/C,yBAAoB,GAA4C,EAAE,CAAC;QACnE,eAAU,GAAiD,EAAE,CAAC;QAIrE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC5C,CAAC;IAED,qBAAqB,CAAI,IAAY,EAAE,YAAe,EAAE,OAA0B,EAAE;QACnF,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACvC;QAED,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAC7C,OAAO,UAAU,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,IAAY,EAAE,IAAuB;QAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB;QACD,IAAI,IAAI,KAAK,EAAE,EAAE;YAChB,IAAI,GAAG,IAAI,CAAC;SACZ;aAAM;YACN,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,cAAc;QACb,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,UAAU,EAAE,IAAI;YAC7D,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;gBAChC,OAAO;aACP;YACD,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,IAAI;YAC5C,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;gBAChC,OAAO;aACP;YAED,0FAA0F;YAC1F,yFAAyF;YACzF,0EAA0E;YAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,OAAO,GAA2B,EAAE,CAAC;YACzC,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,KAAK,IAAI,OAAO,IAAI,IAAI,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAClC,SAAS;iBACT;gBAED,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACnB,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,KAAK,YAAY,OAAO,EAAE;wBAC7B,SAAS;qBACT;iBACD;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;aACjC;YAED,IAAI,WAAW,EAAE;gBAChB,OAAO,GAAG,EAAE,CAAC;aACb;YAED,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,YAAY,CACX,IAAY,EACZ,OAA0B,EAAE,EAC5B,mBAAkD,IAAI;QAEtD,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAEpE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC;SAEhE;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACD;AAED,SAAS,cAAc,CAAC,KAAa;IACpC,MAAM,KAAK,GAAG,KAAwB,CAAC;IACvC,OAAO,CAAC,OAAO,KAAK,CAAC,qBAAqB,KAAK,WAAW,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,cAAc,KAAK,WAAW,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,gBAAiB,SAAQ,YAAY;IAM1C,YACC,UAAuC,EACvC,MAA6B,EAC7B,KAA+B,EAC/B,OAAiB,EAAE;QAEnB,KAAK,CAAC,UAAU,CAAC,CAAC;QAVnB,iBAAY,GAAa,EAAE,CAAC;QAC5B,gBAAW,GAA0B,IAAI,CAAC;QAC1C,eAAU,GAA2B,IAAI,CAAC;QASzC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAE9B,IAAI,KAAK,KAAK,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;aAClD;YACD,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;SACxB;QAED,IAAI,4BAA4B,CAAC,UAAU,CAAC,EAAE;YAC7C,IAAI,CAAC,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE;gBACtF,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACvD;iBAAM;gBACN,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;aACvB;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACnD;YAED,IAAI,QAAQ,GAAmB,EAAE,CAAC;YAClC,IAAI,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;gBAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACrC,IAAI,KAAK,CAAC;oBACV,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE;wBAClC,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBAChF;yBAAM;wBACN,KAAK,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBACtE;oBACD,IAAI,KAAK,EAAE;wBACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACrB;iBACD;aACD;YAED,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;SAC7C;aAAM;YACN,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,eAAe,CAAC,EAAoB,CAAC,CAAC;SACzD;QAED,IAAI,2BAA2B,CAAC,UAAU,CAAC,EAAE;YAC5C,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,aAAa,GAAG,CAAC,OAAO,UAAU,CAAC,gBAAgB,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;YAChH,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CACpC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAC7C,MAAM,EACN,IAAI,CAAC,QAAQ,CACb,CAAC;SACF;IACF,CAAC;IAED,MAAM,CAAC,aAAa,CACnB,UAAgC,EAChC,MAA6B,EAC7B,KAAsB,EACtB,OAAiB,EAAE;QAEnB,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QAEpF,QAAQ,SAAS,EAAE;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ;gBACZ,OAAO,IAAI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9D,KAAK,OAAO;gBACX,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrD,KAAK,SAAS;gBACb,OAAO,IAAI,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACvD;gBACC,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;oBAC7B,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC;iBAC5D;gBACD,OAAO,IAAI,CAAC;SACb;IACF,CAAC;CACD;AAED,MAAM,cAAc;IAMnB,YACC,aAA2C,EAC3C,MAA6B,EAC7B,WAAgD,IAAI;QAEpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;QAErC,IAAI,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAU,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,QAAQ,CAAU,GAAG,EAAE;YAChD,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;gBACpC,OAAO,KAAK,CAAC;aACb;YACD,OAAO,gBAAgB,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAU;YACrC,IAAI,EAAE,GAAG,EAAE;gBACV,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAElD,IAAI,aAAa,KAAK,IAAI,EAAE;oBAC3B,mDAAmD;oBACnD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;oBAC/D,IAAI,eAAe,GAAG,IAAI,EAAE,eAAe,GAAG,KAAK,CAAC;oBACpD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACtD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,EAAE;4BAC9D,eAAe,GAAG,IAAI,CAAC;yBACvB;6BAAM;4BACN,eAAe,GAAG,KAAK,CAAC;yBACxB;qBACD;oBAED,gBAAgB,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,CAAC;oBAEtD,OAAO,eAAe,CAAC;iBACvB;gBAED,8CAA8C;gBAC9C,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvE,IAAI,UAAU,KAAK,IAAI,EAAE;oBACxB,OAAO,UAAU,CAAC;iBAClB;gBAED,IAAI,aAAa,YAAY,OAAO,EAAE;oBACrC,gEAAgE;oBAChE,IAAI,aAAa,CAAC,YAAY,EAAE;wBAC/B,IAAI,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;wBACvF,IAAI,iBAAiB,KAAK,IAAI,EAAE;4BAC/B,OAAO,iBAAiB,CAAC;yBACzB;qBACD;oBAED,4CAA4C;oBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACpD,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACpF,IAAI,YAAY,KAAK,IAAI,EAAE;4BAC1B,OAAO,IAAI,CAAC;yBACZ;qBACD;iBACD;gBAED,sCAAsC;gBACtC,OAAO,KAAK,CAAC;YACd,CAAC;YACD,KAAK,EAAE,CAAC,OAAgB,EAAE,EAAE;gBAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAClD,IAAI,aAAa,KAAK,IAAI,EAAE;oBAC3B,2CAA2C;oBAC3C,IAAI,OAAO,KAAK,KAAK,EAAE;wBACtB,gFAAgF;wBAChF,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;qBAChC;yBAAM;wBACN,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;wBAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;yBACxD;qBACD;iBACD;qBAAM;oBACN,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;iBACzD;gBAED,yCAAyC;gBACzC,IAAI,QAAQ,EAAE;oBACb,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAC;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,CAAC,KAAK,YAAY,gBAAgB,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE;4BAC7D,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;yBACrC;qBACD;iBACD;YACF,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;CACD;AAmBD,MAAM,YAAa,SAAQ,gBAAgB;IAS1C,YAAY,UAA8B,EAAE,MAA6B;QACxE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QANlB,sBAAiB,GAAmC,IAAI,CAAC;QAElE,YAAO,GAA2B,IAAI,CAAC;QACvC,WAAM,GAAwB,IAAI,CAAC;QAK1C,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC;gBAC5B,OAAO,UAAU,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,CAAC;SACH;QAED,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI;QACH,IAAI,MAAM,GAA4B;YACrC,EAAE,EAAE,IAAI,CAAC,EAAE;SACX,CAAC;QAEF,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxB,OAAO,MAAM,CAAC;SACd;aAAM;YACN,IAAI,KAAK,GAAuB,MAA4B,CAAC;YAC7D,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACzC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAErD,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;gBACpC,KAAK,GAAG,CAAC,CAAC,QAAQ,CACjB,KAAK,EACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CACnE,CAAC;aACF;YACD,OAAO,KAAK,CAAC;SACb;IACF,CAAC;IAED,UAAU,CAAC,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS,CAAC,KAAmB;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,KAAmB;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,WAAW,CAAC,KAAmB;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,mBAAmB,CAAC,GAAW;QAC9B,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS;QACR,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACnD,OAAO,IAAI,CAAC;SACZ;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAuC,CAAC;QAChE,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE;YAC1E,OAAO,UAAU,CAAC,MAAM,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAQD,MAAM,eAAe;IAQpB,YAAY,UAAgC;QAF5C,uBAAkB,GAAkB,IAAI,CAAC;QAGxC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,CAAU,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,EAAoB,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,KAAmB;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,KAAmB;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;QACL,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,qBAAqB;IAsB1B,YAAY,UAAqC;QAdzC,eAAU,GAAmC,EAAE,CAAC;QAChD,iBAAY,GAAmC,EAAE,CAAC;QAC1D,aAAQ,GAAsB,EAAE,CAAC;QAQzB,wBAAmB,GAAW,CAAC,CAAC;QAKvC,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAElC,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAmB,GAAG,EAAE;YACvD,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAChB,OAAO,IAAI,CAAC;aACZ;YACD,OAAO,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE/C,kCAAkC;QAClC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,KAAK,CACpC,EAAE,EACF,UAAU,CAAC,yBAAyB,EACpC;YACC,YAAY,EAAE;gBACb,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI;gBACZ,mBAAmB,EAAE,IAAI;gBACzB,eAAe,EAAE,IAAI;aACrB;SACD,CACD,CAAC;QAEF,2CAA2C;QAC3C,IAAI,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,oBAAoB;QACpB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YACrC,IAAI,OAAO,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEtC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAElC,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC/E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACrD;iBAAM;gBACN,IAAI,YAAY,GAAG,YAAY,CAAC;gBAChC,IAAI,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBACnF,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;iBACvD;gBACD,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC7B;QACF,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,OAAO;YACxD,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,kBAAkB,GAAG,8BAA8B,CAAC;SACnF;QAED,2DAA2D;QAC3D,6EAA6E;QAC7E,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAW;YAC3C,IAAI,EAAE,GAAG,EAAE;gBACV,IAAI,MAAM,GAAa,EAAE,CAAC;gBAC1B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;oBAClC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE;wBACrB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;qBACxB;gBACF,CAAC,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YACf,CAAC;YACD,KAAK,EAAE,CAAC,UAAoB,EAAE,EAAE;gBAC/B,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;oBAClC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAC,SAAS,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAC,EAAC,CAAC,CAAC;QAE1F,IAAI,YAAY,GAAoB,IAAI,CAAC;QACzC,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5D,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,OAAO,CAAS,WAAW,CAAC,EAAE;gBACnC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC;aACtE;SACD;QAED,IAAI,YAAY,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SAClC;aAAM;YACN,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE;YAC5C,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC,CAAC;QAClG,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,mBAAmB,EAAE;YACnC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;SAC1D;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5D,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,UAAU,CAAS,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAU,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,WAAW,CAAC;QAEtB,IAAI,IAAI,GAAG;YACV,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;YAC5D,qBAAqB,EAAE,IAAI,CAAC,mBAAmB;SAC/C,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,GAAW;QAC1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,EAAE,EAAE;YAChB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SAClB;QAED,IAAI,KAAK,GAAuB;YAC/B,KAAK,EAAE,KAAK;YACZ,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC5C,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,IAAI;SAClB,CAAC;QACF,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAEnB,MAAM,QAAQ,GAA+B;YAC5C,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,UAAU;YACrB,kBAAkB,EAAE,KAAK;SACzB,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAa;QAC3B,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,KAAmB;QACpC,0CAA0C;QAC1C,QAAQ,KAAK,CAAC,SAAS,EAAE,EAAE;YAC1B,KAAK,WAAW;gBACf,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC;gBAChD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;gBACjC,MAAM;YACP;gBACC,KAAK,CAAC,wDAAwD,CAAC,CAAC;SACjE;IACF,CAAC;IAED,kBAAkB,CAAC,KAAmB;QACrC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;YAC3D,OAAO;SACP;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAES,WAAW,CAAC,KAAmB;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,EAAE;YACZ,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE;YACX,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,oBAAoB,CAAC,IAAY;QAChC,IAAI,IAAI,KAAK,KAAK,EAAE;YACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC;SACnC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;;AAhOM,uBAAC,GAAG,WAAW,CAAC;AACP,2CAAqB,GAAG,wBAAwB,CAAC;AAkOlE,MAAM,qBAAqB;IAmB1B,YAAY,OAA8B;QAlB1C,iBAAY,GAAkB,IAAI,CAAC;QAEnC,qBAAgB,GAAY,KAAK,CAAC;QAElC,YAAO,GAAuB;YAC7B,QAAQ,EAAE,GAAG;SACb,CAAC;QAQF,kBAAa,GAAwB,IAAI,CAAC;QAKzC,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAwB,EAAE,EAAO;QACvC,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACrC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/C;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACpC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;SACtC;IACF,CAAC;IAED,SAAS;QACR,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,4BAA4B;YAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,kBAAkB,KAAK,IAAI,EAAE;gBAChC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aACnC;SACD;aAAM;YACN,qBAAqB;YACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC5B,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,OAAO,EAAE,CACd,CAAC;SACF;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,OAAO;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,IAAI;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;CACD;AAED,MAAM,CAAC;IACN,eAAe,GAAG,IAAI,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"tweak-manager.js","sourceRoot":"","sources":["tweak-manager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/modules/tweaks/tweak-manager.ts b/extras/modules/tweaks/tweak-manager.ts index 4e897fe..0d7f578 100644 --- a/extras/modules/tweaks/tweak-manager.ts +++ b/extras/modules/tweaks/tweak-manager.ts @@ -1,6 +1,6 @@ /// <reference path="../../../js/knockout.d.ts" /> /// <reference path="../../../js/jquery.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../../modules/actor-selector/actor-selector.ts" /> /// <reference path="../../../js/jquery.biscuit.d.ts" /> /// <reference path="../../ko-extensions.ts" /> @@ -571,21 +571,40 @@ interface AmeSectionProperties { id: string; label: string; priority: number | null; + description?: string; } class AmeTweakSection { id: string; label: string; + description: string = ''; tweaks: KnockoutObservableArray<AmeTweakItem>; isOpen: KnockoutObservable<boolean>; footerTemplateName: string | null = null; + readonly descriptionHtml: string; + readonly htmlId: string; + constructor(properties: AmeSectionProperties) { this.id = properties.id; this.label = properties.label; this.isOpen = ko.observable<boolean>(true); this.tweaks = ko.observableArray([] as AmeTweakItem[]); + + if (properties.description) { + this.description = properties.description; + //Add <br> tags to line breaks. This will look better in the tooltip. + this.descriptionHtml = properties.description.replace(/\n/g, '<br>\n'); + } else { + this.descriptionHtml = ''; + } + + if (this.id.length > 0) { + this.htmlId = 'twm-section_' + this.id; + } else { + this.htmlId = ''; + } } addTweak(tweak: AmeTweakItem) { @@ -611,7 +630,7 @@ class AmeTweakManagerModule { static readonly openSectionCookieName = 'ame_tmce_open_sections'; readonly actorSelector: AmeActorSelector; - selectedActorId: KnockoutComputed<string|null>; + selectedActorId: KnockoutComputed<string | null>; selectedActor: KnockoutComputed<IAmeActor | null>; private tweaksById: { [id: string]: AmeTweakItem } = {}; @@ -659,7 +678,7 @@ class AmeTweakManagerModule { ); //Sort sections by priority, then by label. - let sectionData = _.sortByAll(scriptData.sections, ['priority', 'label']); + let sectionData = _.sortBy(scriptData.sections, ['priority', 'label']); //Register sections. _.forEach(sectionData, (properties) => { let section = new AmeTweakSection(properties); @@ -706,7 +725,7 @@ class AmeTweakManagerModule { return result; }, write: (sectionIds: string[]) => { - const openSections = _.indexBy(sectionIds); + const openSections = _.keyBy(sectionIds); _.forEach(this.sections, section => { section.isOpen(openSections.hasOwnProperty(section.id)); }); @@ -726,7 +745,12 @@ class AmeTweakManagerModule { if (initialState !== null) { this.openSectionIds(initialState); } else { - this.openSectionIds([_.first(this.sections).id]); + const firstSection = _.head(this.sections); + if (firstSection) { + this.openSectionIds([firstSection.id]); + } else { + this.openSectionIds([]); + } } this.openSectionIds.subscribe((sectionIds) => { @@ -748,7 +772,7 @@ class AmeTweakManagerModule { const _ = wsAmeLodash; let data = { - 'tweaks': _.indexBy(_.invoke(this.tweaksById, 'toJs'), 'id'), + 'tweaks': _.keyBy(_.invokeMap(this.tweaksById, 'toJs'), 'id'), 'lastUserTweakSuffix': this.lastUserTweakSuffix }; this.settingsData(ko.toJSON(data)); @@ -847,7 +871,7 @@ class AmeEditAdminCssDialog implements AmeKnockoutDialog { tweakLabel: KnockoutObservable<string>; cssCode: KnockoutObservable<string>; confirmButtonText: KnockoutObservable<string>; - title: KnockoutObservable<string|null>; + title: KnockoutObservable<string | null>; selectedTweak: AmeTweakItem | null = null; @@ -915,7 +939,42 @@ class AmeEditAdminCssDialog implements AmeKnockoutDialog { } } -jQuery(function () { - ameTweakManager = new AmeTweakManagerModule(wsTweakManagerData); - ko.applyBindings(ameTweakManager, document.getElementById('ame-tweak-manager')); -}); \ No newline at end of file +{ + let isTwmInitialized = false; + + function wsAmeInitTweakManager() { + if (isTwmInitialized) { + return; + } + const rootNode = document.getElementById('ame-tweak-manager'); + if (!rootNode) { + return; + } + + ameTweakManager = new AmeTweakManagerModule(wsTweakManagerData); + ko.applyBindings(ameTweakManager, rootNode); + + isTwmInitialized = true; + } + + //Try to initialize the tweak manager as soon as possible so that tweak sections + //can be targeted by #hash links. + wsAmeInitTweakManager(); + + jQuery(function () { + //Alternatively, we can wait until the document is ready. + wsAmeInitTweakManager(); + + //Init tooltips. + if (typeof (jQuery as any)['qtip'] !== 'undefined') { + jQuery('#ame-tweak-manager .ws_tooltip_trigger').qtip({ + style: { + classes: 'qtip qtip-rounded ws_tooltip_node' + } + }); + } + }); +} + + + diff --git a/extras/modules/tweaks/tweaks-template.php b/extras/modules/tweaks/tweaks-template.php index 3a7044f..d97b9a2 100644 --- a/extras/modules/tweaks/tweaks-template.php +++ b/extras/modules/tweaks/tweaks-template.php @@ -8,9 +8,17 @@ <?php require AME_ROOT_DIR . '/modules/actor-selector/actor-selector-template.php'; ?> <div data-bind="foreach: sections"> - <div class="ame-twm-section ws-ame-postbox" data-bind="css: { 'ws-ame-closed-postbox': !isOpen() }"> + <div class="ame-twm-section ws-ame-postbox" + data-bind="css: { 'ws-ame-closed-postbox': !isOpen() }, attr: { id: htmlId }"> <div class="ws-ame-postbox-header"> - <h3 data-bind="text: label"></h3> + <h3> + <span data-bind="text: label"></span> + <!-- ko if: description --> + <a data-bind="attr: {title: descriptionHtml}" class="ws_tooltip_trigger"> + <span class="dashicons dashicons-info"></span> + </a> + <!-- /ko --> + </h3> <button class="ws-ame-postbox-toggle" data-bind="click: toggle"></button> </div> <div class="ws-ame-postbox-content"> diff --git a/extras/modules/tweaks/tweaks.css b/extras/modules/tweaks/tweaks.css index ccd5a69..679c3b7 100644 --- a/extras/modules/tweaks/tweaks.css +++ b/extras/modules/tweaks/tweaks.css @@ -23,6 +23,10 @@ text-overflow: ellipsis; overflow: hidden; } +.ame-twm-section .ws-ame-postbox-header .ws_tooltip_trigger .dashicons { + height: 14px; + line-height: 14px; +} .ame-twm-section .ws-ame-postbox-toggle { color: #72777c; background: transparent; diff --git a/extras/modules/tweaks/tweaks.css.map b/extras/modules/tweaks/tweaks.css.map index 7106fe3..1ab9c0d 100644 --- a/extras/modules/tweaks/tweaks.css.map +++ b/extras/modules/tweaks/tweaks.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["tweaks.scss","../../../css/_boxes.scss","../../../css/_indeterminate-checkbox.scss"],"names":[],"mappings":";AAMA;ECCC;EACA,YAPkB;EAQlB,YAJmB;EAMnB;EAEA;EDAA;;ACEA;EACC;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA,OA7CwC;EA8CxC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAIF;EACC;EAEA,SA3EkE;;AA+ElE;EACC;;AAGD;EACC;;AAGD;EACC;;ADlFF;EACC;;;AAMF;EACC,aAbgB;;AAehB;EACC;;;AEnBD;EACC;EACA,OAH4C;EAU5C;EACA;EAMA;EACA;EACA;EACA;EACA;;AAGD;EACC;IAEC,QADU;IAEV,OAFU;IAGV,aAHU;IAIV;IAEA;IACA;IACA;;;;AFNH;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AASD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAIA;EACC;EACA;EACA;EAEA;EAGA;;AAID;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA","file":"tweaks.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["tweaks.scss","../../../css/_boxes.scss","../../../css/_indeterminate-checkbox.scss"],"names":[],"mappings":";AAMA;ECCC;EACA,YAPkB;EAQlB,YAJmB;EAMnB;EAEA;EDAA;;ACEA;EAGC;EACA,WAHiB;EAIjB;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACC,QArBe;EAsBf,aAtBe;;AA2BlB;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA,OAtDwC;EAuDxC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAIF;EACC;EAEA,SApFkE;;AAwFlE;EACC;;AAGD;EACC;;AAGD;EACC;;AD3FF;EACC;;;AAMF;EACC,aAbgB;;AAehB;EACC;;;AEnBD;EACC;EACA,OAH4C;EAU5C;EACA;EAMA;EACA;EACA;EACA;EACA;;AAGD;EACC;IAEC,QADU;IAEV,OAFU;IAGV,aAHU;IAIV;IAEA;IACA;IACA;;;;AFNH;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AASD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAIA;EACC;EACA;EACA;EAEA;EAGA;;AAID;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA","file":"tweaks.css"} \ No newline at end of file diff --git a/extras/modules/tweaks/tweaks.php b/extras/modules/tweaks/tweaks.php index 2866458..939b94e 100644 --- a/extras/modules/tweaks/tweaks.php +++ b/extras/modules/tweaks/tweaks.php @@ -392,6 +392,8 @@ public function addSection($id, $label, $priority = null) { $section->setPriority($priority); } $this->sections[$section->getId()] = $section; + + return $section; } protected function getTemplateVariables($templateName) { @@ -417,7 +419,8 @@ public function enqueueTabScripts() { 'ame-ko-extensions', ] ); - wp_enqueue_script('ame-tweak-manager'); + //Enqueue in the footer. + wp_enqueue_script('ame-tweak-manager', '', [], false, true); //Reselect the same actor. $query = $this->menuEditor->get_query_params(); @@ -430,6 +433,9 @@ public function enqueueTabScripts() { $scriptData['selectedActor'] = $selectedActor; $scriptData['defaultCodeEditorSettings'] = $codeEditorSettings; wp_localize_script('ame-tweak-manager', 'wsTweakManagerData', $scriptData); + + //Enqueue tooltip script. + wp_enqueue_script('jquery-qtip'); } protected function getScriptData() { @@ -445,11 +451,7 @@ protected function getScriptData() { $sectionData = []; foreach ($this->sections as $section) { - $sectionData[] = [ - 'id' => $section->getId(), - 'label' => $section->getLabel(), - 'priority' => $section->getPriority(), - ]; + $sectionData[] = $section->toArray(); } return [ @@ -543,6 +545,7 @@ public function registerHideableItems($store) { 'sidebar-widgets' => null, 'sidebars' => null, ]; + $enabledSections = apply_filters('admin_menu_editor-hideable_tweak_sections', $enabledSections); $postEditorCategory = $store->getOrCreateCategory('post-editor', 'Editor', null, false, 0, 0); $parentCategories = [ @@ -571,6 +574,11 @@ public function registerHideableItems($store) { 0 ); + $description = $section->getDescription(); + if ( !empty($description) ) { + $category->setTooltip($description); + } + $categoriesBySection[$sectionId] = $category; } @@ -671,9 +679,12 @@ class ameTweakSection { private $priority = 0; - public function __construct($id, $label) { + private $description = ''; + + public function __construct($id, $label, $description = '') { $this->id = $id; $this->label = $label; + $this->description = $description; } public function getId() { @@ -692,4 +703,27 @@ public function setPriority($priority) { $this->priority = $priority; return $this; } + + public function setDescription($description) { + $this->description = $description; + return $this; + } + + public function getDescription() { + return $this->description; + } + + public function toArray() { + $sectionData = [ + 'id' => $this->getId(), + 'label' => $this->getLabel(), + 'priority' => $this->getPriority(), + ]; + + if ( !empty($this->description) ) { + $sectionData['description'] = $this->getDescription(); + } + + return $sectionData; + } } diff --git a/extras/modules/visible-users/visible-users.js b/extras/modules/visible-users/visible-users.js index 1c22447..3c0a493 100644 --- a/extras/modules/visible-users/visible-users.js +++ b/extras/modules/visible-users/visible-users.js @@ -37,7 +37,7 @@ window.AmeSelectUsersDialog = (function($, _) { } //The list should stay sorted by username. - var index = _.sortedIndex(selectedUsers, user, 'userLogin'); + var index = _.sortedIndexBy(selectedUsers, user, 'userLogin'); selectedUsers.splice(index, 0, user); //Add a new row at the same index. @@ -106,7 +106,7 @@ window.AmeSelectUsersDialog = (function($, _) { if (_.has(response, 'users')) { //Add new results to loaded users. - var userIndex = _.indexBy(loadedUsers, 'userLogin'); + var userIndex = _.keyBy(loadedUsers, 'userLogin'); _.forEach(response.users, function(userDetails) { if (!userIndex.hasOwnProperty(userDetails.user_login)) { loadedUsers.push(actorManager.createUserFromProperties(userDetails)); @@ -125,11 +125,12 @@ window.AmeSelectUsersDialog = (function($, _) { function updateSearchResults() { loadedUsers = _(loadedUsers) - .forEach(function(user) { + .map(function(user) { //Update search score. user.searchScore = calculateSearchScore(user, searchQuery, searchKeywords); + return user; }) - .sortByOrder(['searchScore', 'userLogin'], ['desc', 'asc']) + .orderBy(['searchScore', 'userLogin'], ['desc', 'asc']) .take(maxLoadedUsers) //Conserve memory and keep searches fast. .value(); @@ -170,7 +171,7 @@ window.AmeSelectUsersDialog = (function($, _) { var haystack = user.userLogin.toLowerCase() + '\n' + user.getDisplayName().toLowerCase(); if (haystack.indexOf(query) >= 0) { return 2; - } else if (_.all(keywords, function(keyword) { return (haystack.indexOf(keyword) >= 0); })) { + } else if (_.every(keywords, function(keyword) { return (haystack.indexOf(keyword) >= 0); })) { return 1; } return 0; @@ -333,7 +334,7 @@ window.AmeSelectUsersDialog = (function($, _) { //The save button. $dialog.find('#ws_ame_save_visible_users').on('click', function() { if (saveCallback) { - saveCallback(selectedUsers, _.pluck(selectedUsers, 'userLogin')); + saveCallback(selectedUsers, _.map(selectedUsers, 'userLogin')); } $dialog.dialog('close'); }); @@ -346,7 +347,7 @@ window.AmeSelectUsersDialog = (function($, _) { return { /** - * @param {Object} options + * @param {{currentUserLogin: String, save: Function, visibleUsers: String[], users: Object<String, IAmeUser>, actorManager: AmeActorManagerInterface}} options * @param {String} options.currentUserLogin * @param {Boolean} [options.alwaysIncludeCurrentUser] * @param {Function} options.save @@ -413,7 +414,7 @@ window.AmeVisibleUserDialog = (function($, _) { * @param {String} options.currentUserLogin * @param {Function} options.save * @param {String[]} options.visibleUsers - * @param {Object.<String, IAmeUser>} options.users + * @param {Record<String, IAmeUser>} options.users * @param {AmeActorManagerInterface} options.actorManager */ open: function(options) { diff --git a/extras/pro-customizables/assets/customizable.js b/extras/pro-customizables/assets/customizable.js index d0c40f9..806daff 100644 --- a/extras/pro-customizables/assets/customizable.js +++ b/extras/pro-customizables/assets/customizable.js @@ -95,7 +95,7 @@ export var AmeCustomizable; return; } //Add the error(s) only if there is no existing error with the same code. - const existingCodes = _.indexBy(this.validationErrors(), 'code'); + const existingCodes = _.keyBy(this.validationErrors(), 'code'); for (const error of errors) { if ((typeof error.code === 'undefined') || !existingCodes.hasOwnProperty(error.code)) { this.validationErrors.push(error); diff --git a/extras/pro-customizables/assets/customizable.js.map b/extras/pro-customizables/assets/customizable.js.map index 65a60e5..f86d513 100644 --- a/extras/pro-customizables/assets/customizable.js.map +++ b/extras/pro-customizables/assets/customizable.js.map @@ -1 +1 @@ -{"version":3,"file":"customizable.js","sourceRoot":"","sources":["customizable.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"customizable.js","sourceRoot":"","sources":["customizable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extras/pro-customizables/assets/customizable.ts b/extras/pro-customizables/assets/customizable.ts index a5fd625..c7e756f 100644 --- a/extras/pro-customizables/assets/customizable.ts +++ b/extras/pro-customizables/assets/customizable.ts @@ -1,7 +1,7 @@ 'use strict'; /// <reference path="../../../js/common.d.ts" /> -/// <reference path="../../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> declare var wsAmeLodash: _.LoDashStatic; @@ -131,7 +131,7 @@ export namespace AmeCustomizable { } //Add the error(s) only if there is no existing error with the same code. - const existingCodes = _.indexBy(this.validationErrors(), 'code'); + const existingCodes = _.keyBy(this.validationErrors(), 'code'); for (const error of errors) { if ((typeof error.code === 'undefined') || !existingCodes.hasOwnProperty(error.code)) { this.validationErrors.push(error); diff --git a/includes/ame-utils.php b/includes/ame-utils.php index 1d2bebf..f69cb55 100644 --- a/includes/ame-utils.php +++ b/includes/ame-utils.php @@ -286,6 +286,47 @@ public static function sendCachingHeaders($lastModified, $cacheLifetime = 30 * 2 return $omitResponseBody; } + + /** + * Pass through the selected actor from the request to the new query parameters. + * + * @param array $outputQueryParams Array of query params, usually for a redirect URL. + * @param array|null $inputRequestParams Array of form fields from the current request. Defaults to $_POST. + * @param array|null $queryParameterName Name of the input field/parameter to use. + * @return array Modified $outputQueryParams. + */ + public static function withSelectedActor( + $outputQueryParams, + $inputRequestParams = null, + $queryParameterName = 'selected_actor' + ) { + if ( $inputRequestParams === null ) { + //This is a utility method; the caller is responsible for nonce verification. + //phpcs:ignore WordPress.Security.NonceVerification.Missing + $inputRequestParams = $_POST; + } + + if ( !isset($inputRequestParams[$queryParameterName]) ) { + return $outputQueryParams; + } + + $selectedActor = $inputRequestParams[$queryParameterName]; + + //Basic actor ID validation. + $isValid = + is_string($selectedActor) + && (strlen($selectedActor) <= 200) + && ( + ($selectedActor === 'special:super_admin') + || preg_match('/^(role|user):[a-z0-9_]+$/i', $selectedActor) + ); + + if ( $isValid ) { + $outputQueryParams['selected_actor'] = $selectedActor; + } + + return $outputQueryParams; + } } /** diff --git a/includes/basic-dependencies.php b/includes/basic-dependencies.php index e14b5ce..b18baeb 100644 --- a/includes/basic-dependencies.php +++ b/includes/basic-dependencies.php @@ -10,6 +10,10 @@ define('WS_AME_USE_BUNDLES', true); } +if ( !defined('WS_AME_INTERNAL_VERSION') ) { + define('WS_AME_INTERNAL_VERSION', 2024.001); +} + $thisDirectory = dirname(__FILE__); require_once $thisDirectory . '/shadow_plugin_framework.php'; require_once $thisDirectory . '/role-utils.php'; @@ -18,7 +22,17 @@ require_once $thisDirectory . '/menu-item.php'; require_once $thisDirectory . '/menu.php'; require_once $thisDirectory . '/auto-versioning.php'; -require_once $thisDirectory . '/../ajax-wrapper/AjaxWrapper.php'; + +//The AJAX wrapper could be independent or installed as a Composer dependency. +if ( file_exists($thisDirectory . '/../ajax-wrapper/AjaxWrapper.php') ) { + require_once $thisDirectory . '/../ajax-wrapper/AjaxWrapper.php'; +} + +//Composer autoloader. +if ( file_exists($thisDirectory . '/../vendor/autoload.php') ) { + require_once $thisDirectory . '/../vendor/autoload.php'; +} + require_once $thisDirectory . '/AmeAutoloader.php'; //Customizable library. diff --git a/includes/menu-editor-core.php b/includes/menu-editor-core.php index 05585bb..bea9f77 100644 --- a/includes/menu-editor-core.php +++ b/includes/menu-editor-core.php @@ -917,7 +917,7 @@ public function register_safe_js_libraries() { $isDone = true; //Lodash library - wp_register_auto_versioned_script('ame-lodash', plugins_url('js/lodash.min.js', $this->plugin_file)); + wp_register_auto_versioned_script('ame-lodash', plugins_url('js/lodash4.min.js', $this->plugin_file)); //Make sure Lodash doesn't conflict with the copy of Underscore that's bundled with WordPress. //Revert the "_" variable to its original value and store Lodash in "wsAmeLodash" instead. wp_add_inline_script('ame-lodash', 'window.wsAmeLodash = _.noConflict();'); @@ -1260,6 +1260,7 @@ function enqueue_scripts() { 'taxonomies' => $this->get_taxonomy_details(), 'showHints' => $this->get_hint_visibility(), + 'hideHintNonce' => wp_create_nonce('ws_ame_hide_hint'), 'dashboardHidingConfirmationEnabled' => $this->options['dashboard_hiding_confirmation_enabled'], 'disableDashboardConfirmationNonce' => wp_create_nonce('ws_ame_disable_dashboard_hiding_confirmation'), @@ -3149,7 +3150,7 @@ public function display_editor_tabs() { foreach($this->tabs as $slug => $title) { printf( '<a href="%s" id="%s" class="nav-tab%s">%s</a>', - esc_attr(add_query_arg('sub_section', $slug, self_admin_url($this->settings_link))), + esc_attr($this->get_tab_url($slug)), esc_attr('ws_ame_' . $slug . '_tab'), $slug === $this->current_tab ? ' nav-tab-active' : '', esc_html($title) @@ -3229,6 +3230,21 @@ public function is_tab_open($tab_slug) { && isset($this->get['page']) && ($this->get['page'] == 'menu_editor'); } + public function is_tab_registered($tab_slug) { + return isset($this->tabs[$tab_slug]); + } + + /** + * @param string $tab_slug + * @return string|null + */ + public function get_tab_url($tab_slug) { + if ( !$this->is_tab_registered($tab_slug) ) { + return null; + } + return add_query_arg('sub_section', $tab_slug, self_admin_url($this->settings_link)); + } + /** * Get the list of virtual capabilities. * @@ -3410,12 +3426,18 @@ function ajax_save_screen_options(){ } public function ajax_hide_hint() { - if ( !isset($this->post['hint']) || !$this->current_user_can_edit_menu() ){ + check_ajax_referer('ws_ame_hide_hint'); + + if ( + !isset($this->post['hint']) + || !is_string($this->post['hint']) + || !$this->current_user_can_edit_menu() + ){ die("You're not allowed to do that!"); } $show_hints = $this->get_hint_visibility(); - $show_hints[strval($this->post['hint'])] = false; + $show_hints[$this->post['hint']] = false; $this->set_hint_visibility($show_hints); die("OK"); diff --git a/js/actor-manager.js b/js/actor-manager.js index 1d65f29..00d503d 100644 --- a/js/actor-manager.js +++ b/js/actor-manager.js @@ -1,5 +1,5 @@ "use strict"; -/// <reference path="lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="knockout.d.ts" /> /// <reference path="common.d.ts" /> // noinspection ES6ConvertVarToLetConst -- Intentionally global variable @@ -454,7 +454,7 @@ class AmeActorManager { deprecatedCaps.push('edit_files'); let findDiscriminant = (caps, includeRoles, excludeRoles) => { let getEnabledCaps = (role) => { - return _.keys(_.pick(role.capabilities, _.identity)); + return _.keys(_.pickBy(role.capabilities, _.identity)); }; //Find caps that all the includeRoles have and excludeRoles don't. let includeCaps = _.intersection(..._.map(includeRoles, getEnabledCaps)), excludeCaps = _.union(..._.map(excludeRoles, getEnabledCaps)), possibleCaps = _.without(includeCaps, ...excludeCaps, ...deprecatedCaps); diff --git a/js/actor-manager.js.map b/js/actor-manager.js.map index 12dfced..4dc9b14 100644 --- a/js/actor-manager.js.map +++ b/js/actor-manager.js.map @@ -1 +1 @@ -{"version":3,"file":"actor-manager.js","sourceRoot":"","sources":["actor-manager.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"actor-manager.js","sourceRoot":"","sources":["actor-manager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/js/actor-manager.ts b/js/actor-manager.ts index fa620a5..a87a9d4 100644 --- a/js/actor-manager.ts +++ b/js/actor-manager.ts @@ -1,4 +1,5 @@ -/// <reference path="lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> + /// <reference path="knockout.d.ts" /> /// <reference path="common.d.ts" /> @@ -660,7 +661,7 @@ class AmeActorManager implements AmeActorManagerInterface { let findDiscriminant = (caps: string[], includeRoles: AmeRole[], excludeRoles: AmeRole[]): string => { let getEnabledCaps = (role: AmeRole): string[] => { - return _.keys(_.pick(role.capabilities, _.identity)); + return _.keys(_.pickBy(role.capabilities, _.identity)); }; //Find caps that all the includeRoles have and excludeRoles don't. diff --git a/js/common.d.ts b/js/common.d.ts index 9906ad4..3f77c46 100644 --- a/js/common.d.ts +++ b/js/common.d.ts @@ -1,8 +1,6 @@ ///<reference path="knockout.d.ts"/> -interface AmeDictionary<T> { - [mapKey: string]: T; -} +type AmeDictionary<T> = Record<string, T>; // noinspection JSUnusedGlobalSymbols type KeysMatchingType<T, V> = { [K in keyof T]: T[K] extends V ? K : never }[keyof T]; diff --git a/js/lodash4.min.js b/js/lodash4.min.js new file mode 100644 index 0000000..13ec307 --- /dev/null +++ b/js/lodash4.min.js @@ -0,0 +1,137 @@ +/** + * @license + * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + */ +;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false; +return true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n); +return r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){ +--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r; +}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return"\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]; +}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&"__lodash_placeholder__"!==o||(n[r]="__lodash_placeholder__",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split(""); +}var T,$=1/0,F=NaN,N=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],P=/\b__p\+='';/g,Z=/\b(__p\+=)''\+/g,q=/(__e\(.*?\)|\b__t\))\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nn=/^\w*$/,tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,en=RegExp(rn.source),un=/^\s+|\s+$/g,on=/^\s+/,fn=/\s+$/,cn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,ln=/,? & /,sn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,hn=/\\(\\)?/g,pn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\d*)$/,xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,jn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,mn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",An="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+mn,En="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",kn=RegExp("['\u2019]","g"),Sn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),On=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+En+mn,"g"),In=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",An].join("|"),"g"),Rn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Bn={}; +Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=true,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=false; +var Ln={};Ln["[object Arguments]"]=Ln["[object Array]"]=Ln["[object ArrayBuffer]"]=Ln["[object DataView]"]=Ln["[object Boolean]"]=Ln["[object Date]"]=Ln["[object Float32Array]"]=Ln["[object Float64Array]"]=Ln["[object Int8Array]"]=Ln["[object Int16Array]"]=Ln["[object Int32Array]"]=Ln["[object Map]"]=Ln["[object Number]"]=Ln["[object Object]"]=Ln["[object RegExp]"]=Ln["[object Set]"]=Ln["[object String]"]=Ln["[object Symbol]"]=Ln["[object Uint8Array]"]=Ln["[object Uint8ClampedArray]"]=Ln["[object Uint16Array]"]=Ln["[object Uint32Array]"]=true, +Ln["[object Error]"]=Ln["[object Function]"]=Ln["[object WeakMap]"]=false;var Un={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Cn=parseFloat,Dn=parseInt,Mn=typeof global=="object"&&global&&global.Object===Object&&global,Tn=typeof self=="object"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function("return this")(),Fn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){ +try{var n=Nn&&Nn.f&&Nn.f("util").types;return n?n:Zn&&Zn.binding&&Zn.binding("util")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b("length"),Xn=x({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I", +"\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C", +"\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i", +"\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r", +"\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij", +"\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),nt=x({"&":"&","<":"<",">":">",'"':""","'":"'"}),tt=x({"&":"&","<":"<",">":">",""":'"',"'":"'"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(oi.call(n,"__wrapped__"))return Fe(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n, +this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]); +}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=ff(n),u=!e&&of(n),i=!e&&!u&&af(n),o=!e&&!u&&!i&&_f(n),u=(e=e||u||i||o)?A(n.length,ni):[],f=u.length;for(r in n)!t&&!oi.call(n,r)||e&&("length"==r||i&&("offset"==r||"parent"==r)||o&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return De(Ur(n),pt(t,0,n.length))}function ut(n){return De(Ur(n))}function it(n,t,r){(r===T||lu(n[t],r))&&(r!==T||t in n)||st(n,t,r); +}function ot(n,t,r){var e=n[t];oi.call(n,t)&&lu(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(lu(n[r][0],t))return r;return-1}function ct(n,t,r,e){return uo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,Wu(t),n)}function lt(n,t){return n&&Cr(t,Bu(t),n)}function st(n,t,r){"__proto__"==t&&Ai?Ai(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Ku(e),i=null==n;++r<e;)u[r]=i?T:Ru(n,t[r]);return u; +}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=vo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(af(n))return Ir(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn), +i=o.get(n))return i;o.set(n,f),pf(n)?n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}):sf(n)&&n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))});var a=l?a?ve:_e:a?Bu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!="function")throw new ti("Expected a function"); +return bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return uo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!wu(o):r(o,f)))var f=o,c=i; +}return c}function jt(n,t){var r=[];return uo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&oo(n,t,Wu)}function At(n,t){return n&&fo(n,t,Wu)}function Et(n,t){return i(t,function(t){return _u(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Me(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n), +ff(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?"[object Undefined]":"[object Null]";else if(mi&&mi in Qu(n)){var t=oi.call(n,mi),r=n[mi];try{n[mi]=T;var e=true}catch(n){}var u=ai.call(n);e&&(t?n[mi]=r:delete n[mi]),n=u}else n=ai.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ci(p.length,s), +l[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Ut(n){return yu(n)&&"[object Arguments]"==Ot(n)}function Ct(n){ +return yu(n)&&"[object ArrayBuffer]"==Ot(n)}function Dt(n){return yu(n)&&"[object Date]"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!yu(n)&&!yu(t))t=n!==n&&t!==t;else n:{var i=ff(n),o=ff(t),f=i?"[object Array]":vo(n),c=o?"[object Array]":vo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{ +if(!(1&r)&&(i=a&&oi.call(n,"__wrapped__"),f=o&&oi.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l); +}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return yu(n)&&"[object Map]"==vo(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Qu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false; +}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!du(n)||ci&&ci in n)&&(_u(n)?hi:dn).test(Te(n))}function Nt(n){return yu(n)&&"[object RegExp]"==Ot(n)}function Pt(n){return yu(n)&&"[object Set]"==vo(n)}function Zt(n){return yu(n)&&gu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n=="function"?n:null==n?$u:typeof n=="object"?ff(n)?Jt(n[0],n[1]):Ht(n):Zu(n)}function Vt(n){if(!ze(n))return Li(n);var t,r=[];for(t in Qu(n))oi.call(n,t)&&"constructor"!=t&&r.push(t); +return r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=su(n)?Ku(n.length):[];return uo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!du(t)?We(Me(n),t):function(r){var e=Ru(r,n);return e===T&&e===t?zu(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&oo(t,function(i,o){if(u||(u=new Zn),du(i)){var f=u,c=Le(n,o),a=Le(t,o),l=f.get(a);if(l)it(n,o,l);else{ +var l=e?e(c,a,o+"",n,t,f):T,s=l===T;if(s){var h=ff(a),p=!h&&af(a),_=!h&&!p&&_f(a),l=a;h||p||_?ff(c)?l=c:hu(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:xu(a)||of(a)?(l=c,of(c)?l=Ou(c):du(c)&&!_u(c)||(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e(Le(n,o),i,o+"",n,t,u):T,f===T&&(f=i),it(n,o,f)},Bu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],k(ye())),n=Gt(n,function(n){return{ +a:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;for(n===t&&(t=Ur(t)), +r&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&xi.call(f,a,1),xi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?xi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Ii(Ti()*(t-n+1))}function or(n,t){var r="";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Ii(t/2))&&(n+=n);while(t);return r}function fr(n,t){return xo(Be(n,t,$u),n+"")}function cr(n){return Qn(Uu(n))}function ar(n,t){var r=Uu(n); +return De(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!du(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=Me(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=du(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return De(Uu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ku(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return uo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r} +function _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t=="number"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,$u,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=wu(t),a=t===T;u<i;){var l=Ii((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=wu(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ci(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){ +var o=n[r],f=t?t(o):o;if(!r||!lu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n=="number"?n:wu(n)?F:+n}function yr(n){if(typeof n=="string")return n;if(ff(n))return c(n,yr)+"";if(wu(n))return ro?ro.call(n):"";var t=n+"";return"0"==t&&1/n==-$?"-0":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:so(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n; +t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r)); +return br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return hu(n)?n:[]}function kr(n){return typeof n=="function"?n:$u}function Sr(n,t){return ff(n)?n:Ie(n,t)?[n]:jo(Iu(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)), +t}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Ui(i-o,0),l=Ku(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++]; +return l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Ui(i-f,0),s=Ku(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Ku(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,po(n),t)}function Mr(n,t){return Cr(n,_o(n),t); +}function Tr(n,r){return function(e,u){var i=ff(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i=="function"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Qu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!su(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Qu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){ +var u=-1,i=Qu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Iu(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(""):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Mu(Du(t).replace(kn,"")),n,"")}}function Vr(n){return function(){var t=arguments;switch(t.length){ +case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eo(n.prototype),t=n.apply(r,t);return du(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Ku(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a), +o-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Qu(t);if(!su(t)){var i=ye(r,3);t=Wu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!="function")throw new ti("Expected a function");if(u&&!o&&"wrapper"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f="wrapper"==u?ho(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i); +return function(){var n=arguments,e=n[0];if(o&&1==n.length&&ff(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Ku(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ci(f.length,x),m=Ur(y);w--;){ +var A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r=="string"||typeof e=="string"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){ +return r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?" ":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(""):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){ +e&&typeof e!="number"&&Oe(t,r,e)&&(r=e=T),t=Au(t),r===T?(r=t,t=0):r=Au(r),e=e===T?t<r?1:-1:Au(e);var u=-1;r=Ui(Oi((r-t)/(e||1)),0);for(var i=Ku(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t=="string"&&typeof r=="string"||(t=Su(t),r=Su(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&yo(r,u),r.placeholder=e,Ue(r,n,t)}function ie(n){ +var t=Yu[n];return function(n,r){if(n=Su(n),(r=null==r?0:Ci(Eu(r),292))&&Wi(n)){var e=(Iu(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(Iu(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=vo(t);return"[object Map]"==r?W(t):"[object Set]"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!="function")throw new ti("Expected a function");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Ui(Eu(o),0),f=f===T?f:Eu(f),a-=u?u.length:0, +64&t){var l=e,s=u;e=u=T}var h=c?T:ho(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0], +t=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Ui(i[9]-a,0),!f&&24&t&&(t&=-25),Ue((h?co:yo)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t; +var c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case"[object DataView]":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case"[object ArrayBuffer]": +if(n.byteLength!=t.byteLength||!i(new vi(n),new vi(t)))break;return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return lu(+n,+t);case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var f=W;case"[object Set]":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case"[object Symbol]":if(to)return to.call(n)==to.call(t)} +return false}function pe(n){return xo(Be(n,T,Ze),n+"")}function _e(n){return St(n,Wu,po)}function ve(n){return St(n,Bu,_o)}function ge(n){for(var t=n.name+"",r=Gi[t],e=oi.call(Gi,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(oi.call(An,"placeholder")?An:n).placeholder}function ye(){var n=An.iteratee||Fu,n=n===Fu?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t)?r[typeof t=="string"?"string":"hash"]:r.map; +}function xe(n){for(var t=Wu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!du(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=Me(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&gu(u)&&Se(o,u)&&(ff(n)||of(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&oi.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ae(n){ +return typeof n.constructor!="function"||ze(n)?{}:eo(di(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case"[object ArrayBuffer]":return Rr(n);case"[object Boolean]":case"[object Date]":return new e(+n);case"[object DataView]":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]": +case"[object Uint16Array]":case"[object Uint32Array]":return zr(n,r);case"[object Map]":return new e;case"[object Number]":case"[object String]":return new e(n);case"[object RegExp]":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case"[object Set]":return new e;case"[object Symbol]":return to?Qu(to.call(n)):{}}}function ke(n){return ff(n)||of(n)||!!(ji&&n&&n[ji])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&("number"==r||"symbol"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t; +}function Oe(n,t,r){if(!du(r))return false;var e=typeof t;return!!("number"==e?su(r)&&Se(t,r.length):"string"==e&&t in r)&&lu(r[t],n)}function Ie(n,t){if(ff(n))return false;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!wu(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Qu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r=="function"&&t in Un.prototype&&(n===r||(t=ho(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||ei)}function We(n,t){ +return function(r){return null!=r&&(r[n]===t&&(t!==T||n in Qu(r)))}}function Be(t,r,e){return r=Ui(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Ui(u.length-r,0),f=Ku(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Ku(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t){if(("constructor"!==t||"function"!=typeof n[t])&&"__proto__"!=t)return n[t]}function Ue(n,t,r){var e=t+"";t=xo;var u,i=$e;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?"& ":"")+r[u], +r=r.join(2<i?", ":" "),e=e.replace(cn,"{\n/* [wrapped with "+r+"] */\n")),t(n,e)}function Ce(n){var t=0,r=0;return function(){var e=Di(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function De(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function Me(n){if(typeof n=="string"||wu(n))return n;var t=n+"";return"0"==t&&1/n==-$?"-0":t}function Te(n){if(null!=n){try{return ii.call(n)}catch(n){} +return n+""}return""}function $e(n,t){return r(N,function(r){var e="_."+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function Fe(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ne(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Eu(r),u=0>r?Ui(e+u,0):Ci(u,e-1)), +_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[]}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Ui(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){ +return n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!="function")throw new ti("Expected a function");return n=Eu(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T), +r}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments, +a=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return lo(h),h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ti("Expected a function");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Ui(Su(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache; +return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ti("Expected a function");return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!="function")throw new ti("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t; +}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;var t=Ot(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function vu(n){return typeof n=="number"&&n==Eu(n)}function gu(n){return typeof n=="number"&&-1<n&&0==n%1&&9007199254740991>=n; +}function du(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function yu(n){return null!=n&&typeof n=="object"}function bu(n){return typeof n=="number"||yu(n)&&"[object Number]"==Ot(n)}function xu(n){return!(!yu(n)||"[object Object]"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n=="string"||!ff(n)&&yu(n)&&"[object String]"==Ot(n)}function wu(n){return typeof n=="symbol"||yu(n)&&"[object Symbol]"==Ot(n); +}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Ur(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=vo(n),("[object Map]"==t?W:"[object Set]"==t?U:Uu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Eu(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function ku(n){return n?pt(Eu(n),0,4294967295):0}function Su(n){if(typeof n=="number")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n, +n=du(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(un,"");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Ou(n){return Cr(n,Bu(n))}function Iu(n){return null==n?"":yr(n)}function Ru(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Bu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)("constructor"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[], +null!=n)for(r in Qu(n))t.push(r);n=t}return n}function Lu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Uu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,"")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n; +}function Fu(n){return qt(typeof n=="function"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=Et(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,Wu(t)));var o=!(du(e)&&"chain"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){} +function Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn["__core-js_shared__"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){var n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu("^"+ii.call(oi).replace(rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.g:T,di=B(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){ +try{var n=je(Qu,"defineProperty");return n({},"",{}),n}catch(n){}}(),Ei=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,ki=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Bi=ri.join,Li=B(Qu.keys,Qu),Ui=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,"DataView"),Ni=je(mn,"Map"),Pi=je(mn,"Promise"),Zi=je(mn,"Set"),qi=je(mn,"WeakMap"),Vi=je(Qu,"create"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){ +function n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:"",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=eo(En.prototype),On.prototype.constructor=On,Un.prototype=eo(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n], +this.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],"__lodash_hash_undefined__"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?"__lodash_hash_undefined__":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1), +--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n); +},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){ +return this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,"toString",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=Ei||function(n){ +return $n.clearTimeout(n)},so=Zi&&1/U(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&"[object DataView]"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&"[object Map]"!=vo(new Ni)||Pi&&"[object Promise]"!=vo(Pi.resolve())||Zi&&"[object Set]"!=vo(new Zi)||qi&&"[object WeakMap]"!=vo(new qi))&&(vo=function(n){ +var t=Ot(n);if(n=(n="[object Object]"==t?n.constructor:T)?Te(n):"")switch(n){case Hi:return"[object DataView]";case Ji:return"[object Map]";case Yi:return"[object Promise]";case Qi:return"[object Set]";case Xi:return"[object WeakMap]"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(tn,function(n,r,e,u){ +t.push(e?u.replace(hn,"$1"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),Eo=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),ko=fr(function(n){var t=Ve(n),r=c(n,Er);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,Er);return(t=typeof t=="function"?t:T)&&r.pop(), +r.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t=="function"?t:T;return br(wt(n,1,hu,true),T,t)}),Bo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Lo=fr(function(n){return mr(i(n,hu))}),Uo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T), +mr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t=="function"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t=="function"?(n.pop(),t):T;return Je(n,t)}),To=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T), +n})):this.thru(t)}),$o=Tr(function(n,t,r){oi.call(n,r)?++n[r]:st(n,r,1)}),Fo=Gr(Ne),No=Gr(Pe),Po=Tr(function(n,t,r){oi.call(n,r)?n[r].push(t):st(n,r,[t])}),Zo=fr(function(t,r,e){var u=-1,i=typeof r=="function",o=su(t)?Ku(t.length):[];return uo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),qo=Tr(function(n,t,r){st(n,r,t)}),Vo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ko=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]), +Xt(n,wt(t,1),[])}),Go=ki||function(){return $n.Date.now()},Ho=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(n,e,t,r,u)}),Jo=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Jo)),e=32|e;return fe(t,e,n,r,u)}),Yo=fr(function(n,t){return dt(n,1,t)}),Qo=fr(function(n,t,r){return dt(n,Su(t)||0,r)});cu.Cache=Fn;var Xo=fr(function(t,r){r=1==r.length&&ff(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ci(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]); +return n(t,this,u)})}),nf=fr(function(n,t){return fe(n,32,T,t,L(t,de(nf)))}),tf=fr(function(n,t){return fe(n,64,T,t,L(t,de(tf)))}),rf=pe(function(n,t){return fe(n,256,T,T,T,t)}),ef=ee(It),uf=ee(function(n,t){return n>=t}),of=Ut(function(){return arguments}())?Ut:function(n){return yu(n)&&oi.call(n,"callee")&&!bi.call(n,"callee")},ff=Ku.isArray,cf=Vn?k(Vn):Ct,af=zi||Vu,lf=Kn?k(Kn):Dt,sf=Gn?k(Gn):Tt,hf=Hn?k(Hn):Nt,pf=Jn?k(Jn):Pt,_f=Yn?k(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){ +if(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Bu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Bu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Bu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||lu(a,ei[c])&&!oi.call(n,c))&&(n[c]=u[c])}return n}),mf=fr(function(t){return t.push(T,ae),n(Of,T,t)}),Af=Yr(function(n,t,r){ +null!=t&&typeof t.toString!="function"&&(t=ai.call(t)),n[t]=r},Tu($u)),Ef=Yr(function(n,t,r){null!=t&&typeof t.toString!="function"&&(t=ai.call(t)),oi.call(n,t)?n[t].push(r):n[t]=[r]},ye),kf=fr(Lt),Sf=$r(function(n,t,r){Yt(n,t,r)}),Of=$r(function(n,t,r,e){Yt(n,t,r,e)}),If=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),Rf=pe(function(n,t){return null==n?{}:nr(n,t); +}),zf=oe(Wu),Wf=oe(Bu),Bf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Cu(t):t)}),Lf=qr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Uf=qr(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Cf=Zr("toLowerCase"),Df=qr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Mf=qr(function(n,t,r){return n+(r?" ":"")+$f(t)}),Tf=qr(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),$f=Zr("toUpperCase"),Ff=fr(function(t,r){try{return n(t,T,r)}catch(n){return pu(n)?n:new Hu(n)}}),Nf=pe(function(n,t){ +return r(t,function(t){t=Me(t),st(n,t,Ho(n[t],n))}),n}),Pf=Hr(),Zf=Hr(true),qf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),Vf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Kf=Xr(c),Gf=Xr(u),Hf=Xr(h),Jf=re(),Yf=re(true),Qf=Qr(function(n,t){return n+t},0),Xf=ie("ceil"),nc=Qr(function(n,t){return n/t},1),tc=ie("floor"),rc=Qr(function(n,t){return n*t},1),ec=ie("round"),uc=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!="function")throw new ti("Expected a function"); +return n=Eu(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Ui(Eu(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){ +var i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Ku(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(ff(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new ti("Expected a function");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Tu, +An.countBy=$o,An.create=function(n,t){var r=eo(n);return null==t?r:at(r,t)},An.curry=iu,An.curryRight=ou,An.debounce=fu,An.defaults=wf,An.defaultsDeep=mf,An.defer=Yo,An.delay=Qo,An.difference=wo,An.differenceBy=mo,An.differenceWith=Ao,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[]; +},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Eu(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Eu(e),0>e&&(e+=u),e=r>e?0:ku(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(ff(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(ru(n,t),1)},An.flatMapDeep=function(n,t){return wt(ru(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Eu(r), +wt(ru(n,t),r)},An.flatten=Ze,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Eu(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Pf,An.flowRight=Zf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,Wu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Bu(n))},An.groupBy=Po,An.initial=function(n){ +return(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Eo,An.intersectionBy=ko,An.intersectionWith=So,An.invert=Af,An.invertBy=Ef,An.invokeMap=Zo,An.iteratee=Fu,An.keyBy=qo,An.keys=Wu,An.keysIn=Bu,An.map=ru,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=cu, +An.merge=Sf,An.mergeWith=Of,An.method=qf,An.methodOf=Vf,An.mixin=Nu,An.negate=au,An.nthArg=function(n){return n=Eu(n),fr(function(t){return Qt(t,n)})},An.omit=If,An.omitBy=function(n,t){return Lu(n,au(ye(t)))},An.once=function(n){return uu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(ff(t)||(t=null==t?[]:[t]),r=e?T:r,ff(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Kf,An.overArgs=Xo,An.overEvery=Gf,An.overSome=Hf,An.partial=nf,An.partialRight=tf,An.partition=Vo,An.pick=Rf,An.pickBy=Lu,An.property=Zu, +An.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=Oo,An.pullAll=Ke,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Io,An.range=Jf,An.rangeRight=Yf,An.rearg=rf,An.reject=function(n,t){return(ff(n)?i:jt)(n,au(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o), +u.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!="function")throw new ti("Expected a function");return t=t===T?t:Eu(t),fr(n,t)},An.reverse=Ge,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),(ff(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e=="function"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(ff(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!="number"&&Oe(n,t,r)?(t=0, +r=e):(t=null==t?0:Eu(t),r=r===T?e:Eu(r)),hr(n,t,r)):[]},An.sortBy=Ko,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!="number"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Iu(n))&&(typeof t=="string"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!="function")throw new ti("Expected a function");return r=null==r?0:Ui(Eu(r),0), +fr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Eu(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n), +n},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ti("Expected a function");return du(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Ur(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{}; +}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t=="function"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){ +return e=typeof e=="function"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Uu,An.valuesIn=function(n){return null==n?[]:S(n,Bu(n))},An.without=Bo,An.words=Mu,An.wrap=function(n,t){return nf(kr(t),n)},An.xor=Lo,An.xorBy=Uo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Bf,An.capitalize=Cu, +An.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){ +n=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Eu(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,"\\$&"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At); +},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Bu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Bu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Uu(n),r=r&&!e?Eu(r):0,e=n.length,0>r&&(r=Ui(e+r,0)),ju(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r); +},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n<Ui(t,r)},An.invoke=kf,An.isArguments=of,An.isArray=ff,An.isArrayBuffer=cf,An.isArrayLike=su,An.isArrayLikeObject=hu,An.isBoolean=function(n){return true===n||false===n||yu(n)&&"[object Boolean]"==Ot(n)},An.isBuffer=af,An.isDate=lf,An.isElement=function(n){return yu(n)&&1===n.nodeType&&!xu(n)},An.isEmpty=function(n){ +if(null==n)return true;if(su(n)&&(ff(n)||typeof n=="string"||typeof n.splice=="function"||af(n)||_f(n)||of(n)))return!n.length;var t=vo(n);if("[object Map]"==t||"[object Set]"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(oi.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=pu,An.isFinite=function(n){return typeof n=="number"&&Wi(n)},An.isFunction=_u, +An.isInteger=vu,An.isLength=gu,An.isMap=sf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return bu(n)&&n!=+n},An.isNative=function(n){if(go(n))throw new Hu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=bu,An.isObject=du,An.isObjectLike=yu,An.isPlainObject=xu,An.isRegExp=hf, +An.isSafeInteger=function(n){return vu(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&"[object WeakMap]"==vo(n)},An.isWeakSet=function(n){return yu(n)&&"[object WeakSet]"==Ot(n)},An.join=function(n,t){return null==n?"":Bi.call(n,t)},An.kebabCase=Lf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Eu(r),u=0>u?Ui(e+u,0):Ci(u,e-1)), +t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Uf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){return{}},An.stubString=function(){ +return""},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,Eu(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){ +return r||null==t?t=0:t&&(t=+t),Mi(Iu(n).replace(on,""),t||0)},An.random=function(n,t,r){if(r&&typeof r!="boolean"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t=="boolean"?(r=t,t=T):typeof n=="boolean"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=Au(n),t===T?(t=n,n=0):t=Au(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn("1e-"+((r+"").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){var e=ff(n)?s:j,u=3>arguments.length; +return e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[Me(t[e])];i===T&&(e=u,i=r),n=_u(i)?i.call(n):i}return n},An.round=ec,An.runInContext=x,An.sample=function(n){return(ff(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(su(n))return ju(n)?D(n):n.length; +var t=vo(n);return"[object Map]"==t||"[object Set]"==t?n.size:Vt(n).length},An.snakeCase=Df,An.some=function(n,t,r){var e=ff(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&lu(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true); +},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(lu(n[r],t))return r}return-1},An.startCase=Mf,An.startsWith=function(n,t,r){return n=Iu(n),r=null==r?0:pt(Eu(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=uc,An.sum=function(n){return n&&n.length?m(n,$u):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Iu(n),t=bf({},t,e,ce),r=bf({},t.imports,e.imports,ce);var u,i,o=Wu(r),f=S(r,o),c=0; +r=t.interpolate||jn;var a="__p+='";r=Xu((t.escape||jn).source+"|"+r.source+"|"+(r===Q?pn:jn).source+"|"+(t.evaluate||jn).source+"|$","g");var l=oi.call(t,"sourceURL")?"//# sourceURL="+(t.sourceURL+"").replace(/[\r\n]/g," ")+"\n":"";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+="'+__e("+r+")+'"),f&&(i=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=oi.call(t,"variable")&&t.variable)||(a="with(obj){"+a+"}"), +a=(i?a.replace(P,""):a).replace(Z,"$1").replace(q,"$1;"),a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=Ff(function(){return Ju(o,l+"return "+a).apply(T,f)}),t.source=a,pu(t))throw t;return t},An.times=function(n,t){if(n=Eu(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ci(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=Au, +An.toInteger=Eu,An.toLength=ku,An.toLower=function(n){return Iu(n).toLowerCase()},An.toNumber=Su,An.toSafeInteger=function(n){return n?pt(Eu(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Iu,An.toUpper=function(n){return Iu(n).toUpperCase()},An.trim=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(un,""):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join("")):n},An.trimEnd=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(fn,""):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1, +Or(n,0,t).join("")):n},An.trimStart=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(on,""):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join("")):n},An.truncate=function(n,t){var r=30,e="...";if(du(t))var u="separator"in t?t.separator:u,r="length"in t?Eu(t.length):r,e="omission"in t?yr(t.omission):e;n=Iu(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(""):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){ +var f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Iu(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++fi;return Iu(n)+t},An.upperCase=Tf,An.upperFirst=$f,An.each=nu,An.eachRight=tu,An.first=qe,Nu(An,function(){var n={};return mt(An,function(t,r){oi.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false +}),An.VERSION="4.17.15",r("bind bindKey curry curryRight partial partialRight".split(" "),function(n){An[n].placeholder=An}),r(["drop","take"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Ui(Eu(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ci(r,e.__takeCount__):e.__views__.push({size:Ci(r,4294967295),type:n+(0>e.__dir__?"Right":"")}),e},Un.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){ +var r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){var r="take"+(t?"Right":"");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter($u)},Un.prototype.find=function(n){ +return this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n)},Un.prototype.invokeMap=fr(function(n,t){return typeof n=="function"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(au(ye(n)))},Un.prototype.slice=function(n,t){n=Eu(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Eu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){ +return this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295)},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||ff(o);s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p; +return!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r("pop push shift sort splice unshift".split(" "),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)}); +}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+"";oi.call(Gi,e)||(Gi[e]=[]),Gi[e].push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:"wrapper",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this); +n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Ci(n,f+s);break;case"takeRight":f=Ui(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ci(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__); +e=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=To,An.prototype.chain=function(){return Ye(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=mu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){ +for(var t,r=this;r instanceof En;){var e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head, +wi&&(An.prototype[wi]=Xe),An}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this); \ No newline at end of file diff --git a/js/menu-editor.js b/js/menu-editor.js index 0270a3a..6d1845d 100644 --- a/js/menu-editor.js +++ b/js/menu-editor.js @@ -20,7 +20,9 @@ * @property {boolean} wsEditorData.showExtraIcons * @property {boolean} wsEditorData.dashiconsAvailable * @property {string} wsEditorData.submenuIconsEnabled - * @property {Object} wsEditorData.showHints + * + * @property {Object} wsEditorData.showHints + * @property {string} wsEditorData.hideHintNonce * * @property {string} wsEditorData.hideAdvancedSettingsNonce * @property {string} wsEditorData.getPagesNonce @@ -4171,7 +4173,7 @@ function ameOnDomReady() { function hideRecursively(containerNode, exceptActor) { var otherActors = _(actorSelectorWidget.getVisibleActors()) - .pluck('id') + .map('id') .without(exceptActor) .value(); @@ -5434,8 +5436,9 @@ function ameOnDomReady() { $.post( wsEditorData.adminAjaxUrl, { - 'action' : 'ws_ame_hide_hint', - 'hint' : hint.attr('id') + 'action': 'ws_ame_hide_hint', + '_ajax_nonce': wsEditorData.hideHintNonce, + 'hint': hint.attr('id') } ); }); @@ -5675,6 +5678,48 @@ function ameOnDomReady() { //... and make the UI visible now that it's fully rendered. menuEditorNode.css('visibility', 'visible'); + + //Add an extra class to the editor toolbars when their "position: sticky" triggers. + //This is useful for adding a bottom border and other styles. + if (IntersectionObserver) { + /* + This assumes that the toolbars stick below the admin bar. If that changes, + this code will need to be updated. + + How do we detect that? + - We could use IntersectionObserver to detect when the toolbar leaves the viewport, + but since it's sticky, it usually won't. + - We can get around that by using negative root margins. Negative margins effectively shrink + the bounding box of the viewport. If we set the top margin to "-1px", the effective top of + the viewport will be 1px lower, so the observer will fire just *before* the toolbar would + leave the viewport. + - The admin bar is always at the top of the viewport. + - So we can detect when the toolbar is right below the admin bar by using a negative top + margin that is equal to the height of the admin bar + 1px. + */ + let observerRootMargin = '-33px'; //Default admin bar height is 32px. + const adminBarHeight = $('#wpadminbar').outerHeight(); + if (adminBarHeight > 0) { + observerRootMargin = (-1 * adminBarHeight - 1) + 'px'; + } + + const observer = new IntersectionObserver( + (entries) => { + for (const e of entries) { + e.target.classList.toggle('ws_is_sticky_toolbar', e.intersectionRatio < 1); + } + }, + { + threshold: [1], + rootMargin: observerRootMargin + ' 0px 0px 0px' + } + ); + + const editorToolbars = document.querySelectorAll('.ws_main_container .ws_toolbar'); + for (const toolbar of editorToolbars) { + observer.observe(toolbar); + } + } } $(document).ready(ameOnDomReady); diff --git a/license-manager/BasicPluginLicensingUi.php b/license-manager/BasicPluginLicensingUi.php index 7d5ee30..63b0843 100644 --- a/license-manager/BasicPluginLicensingUi.php +++ b/license-manager/BasicPluginLicensingUi.php @@ -546,6 +546,7 @@ public function printPluginRowNotice() { $renewalUrl = $license->get('renewal_url'); return true; + $messages = array( 'no_license_yet' => "License is not set yet. Please enter your license key to enable automatic updates.", 'expired' => sprintf( diff --git a/license-manager/LicenseServer.php b/license-manager/LicenseServer.php index e2fba24..78e8abe 100644 --- a/license-manager/LicenseServer.php +++ b/license-manager/LicenseServer.php @@ -353,6 +353,10 @@ public function loadLicense($licenseKeyOrId, $token = null, $alwaysTreatAsKey = return $license; } + /** + * @param string $licenseKey + * @return Wslm_ProductLicense|null + */ public function loadLicenseByKey($licenseKey) { return $this->loadLicense($licenseKey, null, true); } diff --git a/menu-editor.php b/menu-editor.php index b9d5fc4..bff268e 100644 --- a/menu-editor.php +++ b/menu-editor.php @@ -3,7 +3,7 @@ Plugin Name: Admin Menu Editor Pro Plugin URI: http://adminmenueditor.com/ Description: Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more. -Version: 2.22.1 +Version: 2.23.3 Author: Janis Elsts Author URI: http://w-shadow.com/ Requires PHP: 5.6 diff --git a/modules/actor-selector/actor-selector.js b/modules/actor-selector/actor-selector.js index 643dac3..c0d8613 100644 --- a/modules/actor-selector/actor-selector.js +++ b/modules/actor-selector/actor-selector.js @@ -162,7 +162,13 @@ class AmeActorSelector { } else { const availableActors = this.getVisibleActors(); - this.setSelectedActor(AmeActorSelector._.first(availableActors).getId()); + const firstActor = AmeActorSelector._.head(availableActors); + if (firstActor) { + this.setSelectedActor(firstActor.getId()); + } + else { + this.setSelectedActor(null); + } } } this.highlightSelectedActor(); @@ -201,8 +207,7 @@ class AmeActorSelector { if (user) { actors.push(user); } - }) - .value(); + }); this.cachedVisibleActors = actors; return actors; } @@ -272,6 +277,22 @@ class AmeActorSelector { }); return publicObservable; } + /** + * Select an actor based on the "selected_actor" URL parameter. + * + * Does nothing if the parameter is not set or the actor ID is invalid. + */ + setSelectedActorFromUrl() { + if (!URLSearchParams) { + return; + } + //Select an actor based on the "selected_actor" URL parameter. + const urlParams = new URLSearchParams(window.location.search); + const selectedActor = urlParams.get('selected_actor'); + if (selectedActor !== null) { + this.setSelectedActor(selectedActor); + } + } } AmeActorSelector._ = wsAmeLodash; //# sourceMappingURL=actor-selector.js.map \ No newline at end of file diff --git a/modules/actor-selector/actor-selector.js.map b/modules/actor-selector/actor-selector.js.map index 026337a..d35c3ed 100644 --- a/modules/actor-selector/actor-selector.js.map +++ b/modules/actor-selector/actor-selector.js.map @@ -1 +1 @@ -{"version":3,"file":"actor-selector.js","sourceRoot":"","sources":["actor-selector.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"actor-selector.js","sourceRoot":"","sources":["actor-selector.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/actor-selector/actor-selector.ts b/modules/actor-selector/actor-selector.ts index 6a926b7..40b48d3 100644 --- a/modules/actor-selector/actor-selector.ts +++ b/modules/actor-selector/actor-selector.ts @@ -232,7 +232,12 @@ class AmeActorSelector { this.setSelectedActor(null); } else { const availableActors = this.getVisibleActors(); - this.setSelectedActor(AmeActorSelector._.first(availableActors).getId()); + const firstActor = AmeActorSelector._.head(availableActors); + if (firstActor) { + this.setSelectedActor(firstActor.getId()); + } else { + this.setSelectedActor(null); + } } } @@ -254,7 +259,7 @@ class AmeActorSelector { //Include all roles. //Idea: Sort roles either alphabetically or by typical privilege level (admin, editor, author, ...). - _.forEach(this.actorManager.getRoles(), function (role) { + _.forEach(this.actorManager.getRoles(), function (role: IAmeActor) { actors.push(role); }); //Include the Super Admin (multisite only). @@ -277,8 +282,7 @@ class AmeActorSelector { if (user) { actors.push(user); } - }) - .value(); + }); this.cachedVisibleActors = actors; return actors; @@ -361,4 +365,22 @@ class AmeActorSelector { }); return publicObservable; } + + /** + * Select an actor based on the "selected_actor" URL parameter. + * + * Does nothing if the parameter is not set or the actor ID is invalid. + */ + setSelectedActorFromUrl() { + if (!URLSearchParams) { + return; + } + + //Select an actor based on the "selected_actor" URL parameter. + const urlParams = new URLSearchParams(window.location.search); + const selectedActor = urlParams.get('selected_actor'); + if (selectedActor !== null) { + this.setSelectedActor(selectedActor); + } + } } \ No newline at end of file diff --git a/modules/plugin-visibility/plugin-visibility.js b/modules/plugin-visibility/plugin-visibility.js index 20423aa..30420c1 100644 --- a/modules/plugin-visibility/plugin-visibility.js +++ b/modules/plugin-visibility/plugin-visibility.js @@ -2,9 +2,9 @@ /// <reference path="../../js/knockout.d.ts" /> /// <reference path="../../js/jquery.d.ts" /> /// <reference path="../../js/jqueryui.d.ts" /> -/// <reference path="../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../modules/actor-selector/actor-selector.ts" /> -/// <reference path="../../ajax-wrapper/ajax-action-wrapper.d.ts" /> +/// <reference path="../../vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts" /> let amePluginVisibility; class AmePluginVisibilityModule { constructor(scriptData) { @@ -29,7 +29,7 @@ class AmePluginVisibilityModule { this.isMultisite = scriptData.isMultisite; this.grantAccessByDefault = {}; _.forEach(this.actorSelector.getVisibleActors(), (actor) => { - this.grantAccessByDefault[actor.id] = ko.observable(_.get(scriptData.settings.grantAccessByDefault, actor.id, this.canManagePlugins(actor))); + this.grantAccessByDefault[actor.getId()] = ko.observable(_.get(scriptData.settings.grantAccessByDefault, actor.getId(), this.canManagePlugins(actor))); }); this.plugins = _.map(scriptData.installedPlugins, (plugin) => { return new AmePlugin(plugin, _.get(scriptData.settings.plugins, plugin.fileName, {}), this); @@ -118,7 +118,7 @@ class AmePluginVisibilityModule { //However, don't enable plugins for roles that can't access the "Plugins" page in the first place. const _ = AmePluginVisibilityModule._; _.forEach(this.actorSelector.getVisibleActors(), (actor) => { - let allowAccess = plugin.getGrantObservable(actor.id, isVisible); + let allowAccess = plugin.getGrantObservable(actor.getId(), isVisible); if (!this.canManagePlugins(actor)) { allowAccess(false); } @@ -180,7 +180,7 @@ class AmePluginVisibilityModule { //Filter out grants that match the default settings. const grantAccess = result.plugins[plugin.fileName].grantAccess; if (typeof grantAccess !== 'undefined') { - result.plugins[plugin.fileName].grantAccess = _.pick(grantAccess, (allowed, actorId) => { + result.plugins[plugin.fileName].grantAccess = _.pickBy(grantAccess, (allowed, actorId) => { if (typeof actorId === 'undefined') { return false; } @@ -209,14 +209,14 @@ class AmePluginVisibilityModule { saveChanges() { const settings = this.getSettings(); //Remove settings associated with roles and users that no longer exist or are not visible. - const _ = AmePluginVisibilityModule._, visibleActorIds = _.pluck(this.actorSelector.getVisibleActors(), 'id'); + const _ = AmePluginVisibilityModule._, visibleActorIds = _.invokeMap(this.actorSelector.getVisibleActors(), 'getId'); _.forEach(settings.plugins, (plugin) => { if (plugin.grantAccess) { plugin.grantAccess = _.pick(plugin.grantAccess, visibleActorIds); } }); //Remove plugins that don't have any custom settings. - settings.plugins = _.pick(settings.plugins, (value) => { + settings.plugins = _.pickBy(settings.plugins, (value) => { return !_.isEmpty(value); }); //Populate form field(s). diff --git a/modules/plugin-visibility/plugin-visibility.js.map b/modules/plugin-visibility/plugin-visibility.js.map index 6461ba2..4b177cf 100644 --- a/modules/plugin-visibility/plugin-visibility.js.map +++ b/modules/plugin-visibility/plugin-visibility.js.map @@ -1 +1 @@ -{"version":3,"file":"plugin-visibility.js","sourceRoot":"","sources":["plugin-visibility.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,6CAA6C;AAC7C,+CAA+C;AAC/C,kDAAkD;AAClD,uEAAuE;AACvE,oEAAoE;AAEpE,IAAI,mBAA8C,CAAC;AA0CnD,MAAM,yBAAyB;IAqB9B,YAAY,UAAsC;QACjD,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QAE9E,wFAAwF;QACxF,IAAI,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAC;YAChC,IAAI,EAAE;gBACL,OAAO,cAAc,EAAE,CAAC;YACzB,CAAC;YACD,KAAK,EAAE,CAAC,QAAgB,EAAE,EAAE;gBAC3B,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;SACD,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,gBAA6B,EAAE,EAAE;YAC7D,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE7C,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAE1C,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAmB,EAAE,EAAE;YACxE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAClD,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CACvF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5D,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QACH,0GAA0G;QAC1G,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAC7D,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;SACtD;QAED,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,QAAQ,CAAC;YACvC,IAAI,EAAE,GAAG,EAAE;gBACV,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,aAAa,KAAK,IAAI,EAAE;oBAC3B,IAAI,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;oBACzE,OAAO,sBAAsB,EAAE,CAAC;iBAChC;gBAED,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAmB,EAAE,EAAE;oBAC7E,8CAA8C;oBAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;wBAClC,OAAO,IAAI,CAAC;qBACZ;oBACD,IAAI,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBACzE,OAAO,sBAAsB,EAAE,CAAC;gBACjC,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE;gBACpB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,aAAa,KAAK,IAAI,EAAE;oBAC3B,IAAI,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;oBACzE,sBAAsB,CAAC,SAAS,CAAC,CAAC;oBAClC,OAAO;iBACP;gBAED,0DAA0D;gBAC1D,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAmB,EAAE,EAAE;oBACxE,IAAI,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC5D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;wBAClC,SAAS,CAAC,KAAK,CAAC,CAAC;qBACjB;yBAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE;wBACpD,SAAS,CAAC,IAAI,CAAC,CAAC;qBAChB;yBAAM;wBACN,SAAS,CAAC,SAAS,CAAC,CAAC;qBACrB;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,QAAQ,CAAC;YACvC,IAAI,EAAE,GAAG,EAAE;gBACV,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;oBACvC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnC,CAAC;YACD,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE;gBACpB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBACrC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;oBAClC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACJ,CAAC;SACA,CAAC,CAAC;QAEJ,wDAAwD;QACxD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,eAAe,CAAC,MAAiB;QAChC,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,OAAO,KAAK,IAAI,EAAE;YACrB,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;SACnC;aAAM;YACN,IAAI,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EACjE,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,sBAAsB,EAAE,CAAC,CAAC;YACzG,OAAO,SAAS,EAAE,CAAC;SACnB;IACF,CAAC;IAED,mBAAmB,CAAC,MAAiB,EAAE,SAAkB;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,IAAI,aAAa,KAAK,IAAI,EAAE;YAC3B,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAErC,kEAAkE;YAClE,kGAAkG;YAClG,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAmB,EAAE,EAAE;gBACxE,IAAI,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;oBAClC,WAAW,CAAC,KAAK,CAAC,CAAC;iBACnB;qBAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE;oBACpD,WAAW,CAAC,IAAI,CAAC,CAAC;iBAClB;qBAAM;oBACN,WAAW,CAAC,SAAS,CAAC,CAAC;iBACvB;YACF,CAAC,CAAC,CAAC;SACH;aAAM;YACN,2CAA2C;YAC3C,IAAI,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACtE,WAAW,CAAC,SAAS,CAAC,CAAC;SACvB;IACF,CAAC;IAEO,gBAAgB,CAAC,KAAwB;QAChD,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YAC/E,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7C;QACD,IAAI,KAAK,YAAY,aAAa,EAAE;YACnC,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,KAAK,YAAY,OAAO,EAAE;YAC7B,6CAA6C;YAC7C,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBACjC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;oBACpD,MAAM,GAAG,IAAI,CAAC;oBACd,OAAO,KAAK,CAAC;iBACb;YACF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACtE;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,uBAAuB,CAAC,OAAe;QAC9C,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YACvD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACvG;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEO,WAAW;QAClB,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,GAAuD,EAAE,CAAC;QAEpE,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAW,EAAE;YACvF,OAAO,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAiB,EAAE,EAAE;YAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;gBACjC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBAC/C,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,EAAW,EAAE;oBAC/D,OAAO,KAAK,EAAE,CAAC;gBAChB,CAAC,CAAC;aACF,CAAC;YAEF,oDAAoD;YACpD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;YAChE,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;gBACvC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CACnD,WAAW,EACX,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oBACpB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;wBACnC,OAAO,KAAK,CAAC;qBACb;oBAED,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAC5F,OAAO,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC;gBACnC,CAAC,CACD,CAAC;aACF;YAED,kDAAkD;YAClD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE;gBAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;aACnD;YAED,4FAA4F;YAC5F,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE;gBACvD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC;aAC1D;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChE,IAAI,GAAG,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC3C,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAC/D,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,IAAI,KAAK,KAAK,EAAE,EAAE;oBAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC;iBACrF;aACD;QACF,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,WAAW;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,0FAA0F;QAC1F,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,EACpC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,WAAW,EAAE;gBACvB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAiC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;aACjG;QACF,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACb,CAAC;;AA9QM,2BAAC,GAAG,WAAW,CAAC;AAqRxB,MAAM,SAAS;IAkBd,YAAY,OAAqB,EAAE,QAAgB,EAAE,MAAiC;QAVtF,sBAAiB,GAA2B,EAAE,CAAC;QAC/C,qBAAgB,GAA2B,EAAE,CAAC;QAC9C,uBAAkB,GAA2B,EAAE,CAAC;QAS/C,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChE,IAAI,GAAG,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC3C,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5E;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,KAAK,KAAK,EAAE,EAAE;gBACjB,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;aACzC;YACD,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;YACnC,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,IAAI,KAAK,KAAK,EAAE,EAAE;gBACjB,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;aAChD;YACD,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;QAErF,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE;YACxF,OAAO,EAAE,CAAC,UAAU,CAAU,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAU;YACrC,IAAI,EAAE,GAAG,EAAE;gBACV,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,KAAK,EAAE,CAAC,SAAkB,EAAE,EAAE;gBAC7B,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,OAAe,EAAE,eAAwB,IAAI;QAC/D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAU,YAAY,CAAC,CAAC;SACjE;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,yDAAyD;IACzD,gBAAgB;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChE,IAAI,GAAG,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC3C,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;SAC/F;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,yDAAyD;IACzD,UAAU;QACT,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,WAAW;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChE,IAAI,GAAG,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC3C,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,WAAW,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE;gBAClD,WAAW,GAAG,EAAE,CAAC;aACjB;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,uBAAuB;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChE,IAAI,GAAG,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAa;QAChC,kDAAkD;QAClD,MAAM,IAAI,GAAG,gCAAgC,EAC5C,kBAAkB,GAAG,0CAA0C,CAAC;QACjE,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;;AA/Ge,+BAAqB,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAkHjG,MAAM,CAAC,UAAU,CAAC;IACjB,mBAAmB,GAAG,IAAI,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;IAC5E,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,QAAQ,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAE/F,8CAA8C;IAC9C,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE;QAC7D,MAAM,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"plugin-visibility.js","sourceRoot":"","sources":["plugin-visibility.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/plugin-visibility/plugin-visibility.ts b/modules/plugin-visibility/plugin-visibility.ts index 47e9f5a..0482977 100644 --- a/modules/plugin-visibility/plugin-visibility.ts +++ b/modules/plugin-visibility/plugin-visibility.ts @@ -1,9 +1,9 @@ /// <reference path="../../js/knockout.d.ts" /> /// <reference path="../../js/jquery.d.ts" /> /// <reference path="../../js/jqueryui.d.ts" /> -/// <reference path="../../js/lodash-3.10.d.ts" /> +/// <reference types="@types/lodash" /> /// <reference path="../../modules/actor-selector/actor-selector.ts" /> -/// <reference path="../../ajax-wrapper/ajax-action-wrapper.d.ts" /> +/// <reference path="../../vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts" /> let amePluginVisibility: AmePluginVisibilityModule; declare const wsPluginVisibilityData: PluginVisibilityScriptData; @@ -94,9 +94,9 @@ class AmePluginVisibilityModule { this.isMultisite = scriptData.isMultisite; this.grantAccessByDefault = {}; - _.forEach(this.actorSelector.getVisibleActors(), (actor: AmeBaseActor) => { - this.grantAccessByDefault[actor.id] = ko.observable<boolean>( - _.get(scriptData.settings.grantAccessByDefault, actor.id, this.canManagePlugins(actor)) + _.forEach(this.actorSelector.getVisibleActors(), (actor: IAmeActor) => { + this.grantAccessByDefault[actor.getId()] = ko.observable<boolean>( + _.get(scriptData.settings.grantAccessByDefault, actor.getId(), this.canManagePlugins(actor)) ); }); @@ -143,7 +143,7 @@ class AmePluginVisibilityModule { } //Update everyone except the current user and Super Admin. - _.forEach(this.actorSelector.getVisibleActors(), (actor: AmeBaseActor) => { + _.forEach(this.actorSelector.getVisibleActors(), (actor: IAmeActor) => { let isAllowed = this.getGrantAccessByDefault(actor.getId()); if (!this.canManagePlugins(actor)) { isAllowed(false); @@ -193,8 +193,8 @@ class AmePluginVisibilityModule { //Show/hide from everyone except the current user and Super Admin. //However, don't enable plugins for roles that can't access the "Plugins" page in the first place. const _ = AmePluginVisibilityModule._; - _.forEach(this.actorSelector.getVisibleActors(), (actor: AmeBaseActor) => { - let allowAccess = plugin.getGrantObservable(actor.id, isVisible); + _.forEach(this.actorSelector.getVisibleActors(), (actor: IAmeActor) => { + let allowAccess = plugin.getGrantObservable(actor.getId(), isVisible); if (!this.canManagePlugins(actor)) { allowAccess(false); } else if (_.includes(this.privilegedActors, actor)) { @@ -210,7 +210,7 @@ class AmePluginVisibilityModule { } } - private canManagePlugins(actor: AmeBaseActor|null): boolean { + private canManagePlugins(actor: IAmeActor|null): boolean { const _ = AmePluginVisibilityModule._; if ((actor instanceof AmeRole) && _.has(this.canRoleManagePlugins, actor.name)) { return this.canRoleManagePlugins[actor.name]; @@ -260,7 +260,7 @@ class AmePluginVisibilityModule { //Filter out grants that match the default settings. const grantAccess = result.plugins[plugin.fileName].grantAccess; if (typeof grantAccess !== 'undefined') { - result.plugins[plugin.fileName].grantAccess = _.pick( + result.plugins[plugin.fileName].grantAccess = _.pickBy( grantAccess, (allowed, actorId) => { if (typeof actorId === 'undefined') { @@ -302,15 +302,15 @@ class AmePluginVisibilityModule { //Remove settings associated with roles and users that no longer exist or are not visible. const _ = AmePluginVisibilityModule._, - visibleActorIds = _.pluck(this.actorSelector.getVisibleActors(), 'id'); + visibleActorIds: string[] = _.invokeMap(this.actorSelector.getVisibleActors(), 'getId'); _.forEach(settings.plugins, (plugin) => { if (plugin.grantAccess) { - plugin.grantAccess = _.pick<GrantAccessMap, GrantAccessMap>(plugin.grantAccess, visibleActorIds); + plugin.grantAccess = _.pick(plugin.grantAccess, visibleActorIds); } }); //Remove plugins that don't have any custom settings. - settings.plugins = _.pick(settings.plugins, (value) => { + settings.plugins = _.pickBy(settings.plugins, (value) => { return !_.isEmpty(value); }); diff --git a/modules/redirector/redirector-ui.js b/modules/redirector/redirector-ui.js index d496840..314fa0a 100644 --- a/modules/redirector/redirector-ui.js +++ b/modules/redirector/redirector-ui.js @@ -5,7 +5,7 @@ /// <reference path="../../js/actor-manager.ts" /> /// <reference path="../actor-selector/actor-selector.ts" /> /// <reference path="../../js/common.d.ts" /> -/// <reference path="../../ajax-wrapper/ajax-action-wrapper.d.ts" /> +/// <reference path="../../vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts" /> var AmeRedirectorUi; (function (AmeRedirectorUi) { const AllKnownTriggers = { @@ -627,7 +627,7 @@ var AmeRedirectorUi; } filterUserAutocompleteResults(results) { //Filter out users that are already in the current list. - const usedLogins = _.indexBy(this.currentTriggerView().users(), (redirect) => { + const usedLogins = _.keyBy(this.currentTriggerView().users(), (redirect) => { return redirect.actor.userLogin; }); return _.filter(results, function (props) { diff --git a/modules/redirector/redirector-ui.js.map b/modules/redirector/redirector-ui.js.map index 3ab6b89..ff8204c 100644 --- a/modules/redirector/redirector-ui.js.map +++ b/modules/redirector/redirector-ui.js.map @@ -1 +1 @@ -{"version":3,"file":"redirector-ui.js","sourceRoot":"","sources":["redirector-ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"redirector-ui.js","sourceRoot":"","sources":["redirector-ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/redirector/redirector-ui.ts b/modules/redirector/redirector-ui.ts index 93bab1d..eb016be 100644 --- a/modules/redirector/redirector-ui.ts +++ b/modules/redirector/redirector-ui.ts @@ -4,7 +4,7 @@ /// <reference path="../../js/actor-manager.ts" /> /// <reference path="../actor-selector/actor-selector.ts" /> /// <reference path="../../js/common.d.ts" /> -/// <reference path="../../ajax-wrapper/ajax-action-wrapper.d.ts" /> +/// <reference path="../../vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts" /> declare var wsAmeRedirectorSettings: AmeRedirectorUi.ScriptData; declare var wsAmeLodash: _.LoDashStatic; @@ -853,7 +853,7 @@ namespace AmeRedirectorUi { filterUserAutocompleteResults(results: MinimalUserProperties[]): MinimalUserProperties[] { //Filter out users that are already in the current list. - const usedLogins = _.indexBy( + const usedLogins = _.keyBy( this.currentTriggerView().users(), (redirect) => { return (redirect.actor as IAmeUser).userLogin; diff --git a/modules/redirector/redirector.css b/modules/redirector/redirector.css index cac08fe..23025f6 100644 --- a/modules/redirector/redirector.css +++ b/modules/redirector/redirector.css @@ -317,6 +317,10 @@ text-overflow: ellipsis; overflow: hidden; } +#ame-rui-main-actions .ws-ame-postbox-header .ws_tooltip_trigger .dashicons { + height: 14px; + line-height: 14px; +} #ame-rui-main-actions .ws-ame-postbox-toggle { color: #72777c; background: transparent; diff --git a/modules/redirector/redirector.css.map b/modules/redirector/redirector.css.map index c7d8076..e3a0397 100644 --- a/modules/redirector/redirector.css.map +++ b/modules/redirector/redirector.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["redirector.scss","../../css/_boxes.scss"],"names":[],"mappings":"AAYA;EACC;EACA;EAEA;;;AAGD;EACC;EACA;EAEA,YAnBgB;EAoBhB;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;EAEA;;;AAGD;EACC,cAxCsB;EA0CtB;EACA;;;AAGD;EACC;EACA;EAEA,cAlDsB;EAmDtB;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;;AAIF;EAGC;EACA;EACA,OA/DsB;EAgEtB,QALgB;EAOhB,KAnEkB;EAoElB,OApEkB;EAqElB;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAIA;EACC;EACA;EACA,aAzBc;EA0Bd;;;AAKH;EACC;EAEA;EACA;EACA,YAjGa;EAkGb;EAGA,aADa;EAGb;EACA;EACA;;AAEA;EACC;EACA,aATY;;AAYb;EACC;EACA;;;AAIF;EACC;EACA;EAEA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EAEA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;;AAEA;EACC,cA7JY;;;AAiKd;EACC;;;AAOA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;;AAKH;EAOC;EACA;EACA;;AAGA;EACC;EACA;EACA,YAboB;EAcpB;EACA;;AAEA;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;;AAEA;EACC;;AAKH;EACC,YAnCqB;EAoCrB;EACA;;AAEA;EACC,OAtCc;;AAwCd;EACC,OAzCa;;;AA+CjB;EASC;EACA;EACA;EAEA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA,OA9BU;EA+BV;EACA;;AAEA;EACC,OA/Bc;EAgCd,qBA9BgB;;AAoClB;EACC,qBA1CY;;AA6Cb;EACC,OA/CU;EAgDV,qBA/CY;;;AAoDf;EACC;EACA;;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;;AAKD;EACC;EACA;;;AAMF;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EChYC;EACA,YAPkB;EAQlB,YAJmB;EAMnB;EAEA;ED4XA;EACA;EACA;;AC5XA;EACC;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA,OA7CwC;EA8CxC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAIF;EACC;EAEA,SA3EkE;;AA+ElE;EACC;;AAGD;EACC;;AAGD;EACC;;ADkTF;EACC;EACA;;;AAIF;EACC;IACC;;;EAGD;IACC;;;AAIF;EACC;IACC;;;EAIA;IACC;;;AAKH;EAGC;IACC,aAHY;;;EAMb;IACC;;EAEA;IACC,aAVW;IAWX;;;EAIF;IACC,aAhBY;;EAkBZ;IACC;IACA,aApBW","file":"redirector.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["redirector.scss","../../css/_boxes.scss"],"names":[],"mappings":"AAYA;EACC;EACA;EAEA;;;AAGD;EACC;EACA;EAEA,YAnBgB;EAoBhB;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;EAEA;;;AAGD;EACC,cAxCsB;EA0CtB;EACA;;;AAGD;EACC;EACA;EAEA,cAlDsB;EAmDtB;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;;AAIF;EAGC;EACA;EACA,OA/DsB;EAgEtB,QALgB;EAOhB,KAnEkB;EAoElB,OApEkB;EAqElB;EACA;EAEA;EACA;EAEA;;AAEA;EACC;;AAIA;EACC;EACA;EACA,aAzBc;EA0Bd;;;AAKH;EACC;EAEA;EACA;EACA,YAjGa;EAkGb;EAGA,aADa;EAGb;EACA;EACA;;AAEA;EACC;EACA,aATY;;AAYb;EACC;EACA;;;AAIF;EACC;EACA;EAEA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EAEA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;;AAEA;EACC,cA7JY;;;AAiKd;EACC;;;AAOA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;;AAKH;EAOC;EACA;EACA;;AAGA;EACC;EACA;EACA,YAboB;EAcpB;EACA;;AAEA;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;;AAEA;EACC;;AAKH;EACC,YAnCqB;EAoCrB;EACA;;AAEA;EACC,OAtCc;;AAwCd;EACC,OAzCa;;;AA+CjB;EASC;EACA;EACA;EAEA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA,OA9BU;EA+BV;EACA;;AAEA;EACC,OA/Bc;EAgCd,qBA9BgB;;AAoClB;EACC,qBA1CY;;AA6Cb;EACC,OA/CU;EAgDV,qBA/CY;;;AAoDf;EACC;EACA;;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;;AAKD;EACC;EACA;;;AAMF;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EChYC;EACA,YAPkB;EAQlB,YAJmB;EAMnB;EAEA;ED4XA;EACA;EACA;;AC5XA;EAGC;EACA,WAHiB;EAIjB;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACC,QArBe;EAsBf,aAtBe;;AA2BlB;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA,OAtDwC;EAuDxC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAIF;EACC;EAEA,SApFkE;;AAwFlE;EACC;;AAGD;EACC;;AAGD;EACC;;ADySF;EACC;EACA;;;AAIF;EACC;IACC;;;EAGD;IACC;;;AAIF;EACC;IACC;;;EAIA;IACC;;;AAKH;EAGC;IACC,aAHY;;;EAMb;IACC;;EAEA;IACC,aAVW;IAWX;;;EAIF;IACC,aAhBY;;EAkBZ;IACC;IACA,aApBW","file":"redirector.css"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index fd1f9da..2122a4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,12 @@ "packages": { "": { "hasInstallScript": true, + "dependencies": { + "@types/lodash": "^4.14.202" + }, "devDependencies": { "@types/nightwatch": "^2.3.23", - "chromedriver": "^117.0.3", + "chromedriver": "^120.0.1", "nightwatch": "^3.2.0", "ts-loader": "^9.4.2", "ts-node": "^10.9.1", @@ -23,18 +26,196 @@ "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", "dev": true }, - "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "regenerator-runtime": "^0.14.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -68,35 +249,39 @@ } }, "node_modules/@cucumber/ci-environment": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.1.0.tgz", - "integrity": "sha512-jdnF6APXP3GawMue8kdMxhu6TBhyRUO4KDRxTowf06NtclLjIw2Ybpo9IcIOMvE8kHukvJyM00uxWX+CfS7JgQ==", - "dev": true + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-10.0.0.tgz", + "integrity": "sha512-lRkiehckosIOdc7p1L44nZsttO5dVHFjpwKKWZ07x8SeoAdV/sPuGe1PISe0AmAowFGza62nMOgG4KaroGzwFQ==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/@cucumber/cucumber": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.11.1.tgz", - "integrity": "sha512-C+wdypoSzHA48GCRorJCAZYuxXo1RSESukAmoz/JhGV7KB4pIlg9Y2aWeZKx6bJQkq8yq4+S4jg9f8FGCdc3jQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-10.1.0.tgz", + "integrity": "sha512-9itQdAccTqJAe9VfdmovinOlUPLroC2KbB+CeQty8BKXpLB6hKO32k9S9FhnuXinFqh+E5znUrPtbUxS948bwQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@cucumber/ci-environment": "9.1.0", - "@cucumber/cucumber-expressions": "16.1.1", - "@cucumber/gherkin": "26.0.3", + "@cucumber/ci-environment": "10.0.0", + "@cucumber/cucumber-expressions": "17.0.1", + "@cucumber/gherkin": "27.0.0", "@cucumber/gherkin-streams": "5.0.1", - "@cucumber/gherkin-utils": "8.0.2", - "@cucumber/html-formatter": "20.2.1", + "@cucumber/gherkin-utils": "8.0.5", + "@cucumber/html-formatter": "21.2.0", "@cucumber/message-streams": "4.0.1", - "@cucumber/messages": "21.0.1", - "@cucumber/tag-expressions": "5.0.1", + "@cucumber/messages": "24.0.1", + "@cucumber/tag-expressions": "6.0.0", "assertion-error-formatter": "^3.0.0", "capital-case": "^1.0.4", "chalk": "^4.1.2", "cli-table3": "0.6.3", - "commander": "^9.0.0", + "commander": "^10.0.0", "debug": "^4.3.4", "error-stack-parser": "^2.1.4", "figures": "^3.2.0", - "glob": "^7.1.6", + "glob": "^10.3.10", "has-ansi": "^4.0.1", "indent-string": "^4.0.0", "is-installed-globally": "^0.4.0", @@ -105,50 +290,140 @@ "lodash.merge": "^4.6.2", "lodash.mergewith": "^4.6.2", "luxon": "3.2.1", + "mkdirp": "^2.1.5", "mz": "^2.7.0", "progress": "^2.0.3", + "read-pkg-up": "^7.0.1", "resolve-pkg": "^2.0.0", - "semver": "7.3.8", - "string-argv": "^0.3.1", + "semver": "7.5.3", + "string-argv": "0.3.1", "strip-ansi": "6.0.1", "supports-color": "^8.1.1", "tmp": "^0.2.1", + "type-fest": "^4.8.3", "util-arity": "^1.1.0", - "verror": "^1.10.0", "xmlbuilder": "^15.1.1", - "yaml": "1.10.2", - "yup": "^0.32.11" + "yaml": "^2.2.2", + "yup": "1.2.0" }, "bin": { "cucumber-js": "bin/cucumber.js" }, "engines": { - "node": "12 || 14 || >=16" + "node": "18 || >=20" } }, "node_modules/@cucumber/cucumber-expressions": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.1.tgz", - "integrity": "sha512-Ugsb9qxfgrgfUKsGvbx0awVk+69NIFjWfxNT+dnm62YrF2gdTHYxAOzOLuPgvE0yqYTh+3otrFLDDfkHGThM1g==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-17.0.1.tgz", + "integrity": "sha512-reR7/sNRmDWgdz8BtFuHEwpksPnAkHty7gxUC2n0iaUPmckv9G5I5i+Vonc6xwUHDb/hmHPz/DyUL+Iv4Ao96w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "regexp-match-indices": "1.0.2" } }, + "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-24.0.1.tgz", + "integrity": "sha512-dKfNkvgc6stSQIyeHk7p/221iqEZe1BP+e/Js8XKtSmc0sS8khKMvbSBwYVeonn/67/vYKiAyo6Eo0SzXd5Plw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/uuid": "9.0.7", + "class-transformer": "0.5.1", + "reflect-metadata": "0.2.1", + "uuid": "9.0.1" + } + }, + "node_modules/@cucumber/cucumber/node_modules/@types/uuid": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@cucumber/cucumber/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@cucumber/cucumber/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "optional": true, + "peer": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, + "node_modules/@cucumber/cucumber/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/reflect-metadata": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/@cucumber/cucumber/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -159,13 +434,44 @@ "node": ">=10" } }, + "node_modules/@cucumber/cucumber/node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@cucumber/cucumber/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@cucumber/gherkin": { - "version": "26.0.3", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.0.3.tgz", - "integrity": "sha512-xwJHi//bLFEU1drIyw2yswwUHnnVWO4XcyVBbCTDs6DkSh262GkogFI/IWwChZqJfOXnPglzLGxR1DibcZsILA==", + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-27.0.0.tgz", + "integrity": "sha512-j5rCsjqzRiC3iVTier3sa0kzyNbkcAmF7xr7jKnyO7qDeK3Z8Ye1P3KSVpeQRMY+KCDJ3WbTDdyxH0FwfA/fIw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@cucumber/messages": "19.1.4 - 21" + "@cucumber/messages": ">=19.1.4 <=22" } }, "node_modules/@cucumber/gherkin-streams": { @@ -173,6 +479,8 @@ "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "commander": "9.1.0", "source-map-support": "0.5.21" @@ -191,20 +499,24 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/@cucumber/gherkin-utils": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz", - "integrity": "sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.5.tgz", + "integrity": "sha512-kxM1OCDjYddF26VKc892PF0GokW4wUIl1PUz3TIXsPZgS39ExM1pF8oww8mlGFD2B0+4op/cSE3SSIME5H3aNw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@cucumber/gherkin": "^25.0.0", - "@cucumber/messages": "^19.1.4", - "@teppeis/multimaps": "2.0.0", - "commander": "9.4.1", + "@cucumber/gherkin": "^26.0.0", + "@cucumber/messages": "^22.0.0", + "@teppeis/multimaps": "3.0.0", + "commander": "10.0.1", "source-map-support": "^0.5.21" }, "bin": { @@ -212,49 +524,34 @@ } }, "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/gherkin": { - "version": "25.0.2", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-25.0.2.tgz", - "integrity": "sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==", + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.2.0.tgz", + "integrity": "sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@cucumber/messages": "^19.1.4" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", - "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", - "dev": true, - "dependencies": { - "@types/uuid": "8.3.4", - "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" + "@cucumber/messages": ">=19.1.4 <=22" } }, "node_modules/@cucumber/gherkin-utils/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "optional": true, + "peer": true, "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=14" } }, "node_modules/@cucumber/html-formatter": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.2.1.tgz", - "integrity": "sha512-bwwyr1WjlOJ5dEFOLGbtYWbUprloB2eymqXBmmTC10s0xapZXkFn4VfHgMshaH91XiCIY/MoabWNAau3AeMHkQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.2.0.tgz", + "integrity": "sha512-4OcSa12Y0v5e4ySDl67+QFTxCG/Y9fxGSkFqvm98ggpTvS7b75whwzupu+lM2lMBw+h3H6P8ZURQr0xQIAwE2A==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "@cucumber/messages": ">=18" } @@ -264,17 +561,21 @@ "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "@cucumber/messages": ">=17.1.1" } }, "node_modules/@cucumber/messages": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-21.0.1.tgz", - "integrity": "sha512-pGR7iURM4SF9Qp1IIpNiVQ77J9kfxMkPOEbyy+zRmGABnWWCsqMpJdfHeh9Mb3VskemVw85++e15JT0PYdcR3g==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@types/uuid": "8.3.4", + "@types/uuid": "9.0.1", "class-transformer": "0.5.1", "reflect-metadata": "0.1.13", "uuid": "9.0.0" @@ -285,15 +586,19 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "dev": true, + "optional": true, + "peer": true, "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@cucumber/tag-expressions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-5.0.1.tgz", - "integrity": "sha512-N43uWud8ZXuVjza423T9ZCIJsaZhFekmakt7S9bvogTxqdVGbRobjR663s0+uW0Rz9e+Pa8I6jUuWtoBLQD2Mw==", - "dev": true + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.0.0.tgz", + "integrity": "sha512-JbNb/254Wn6b8cfrIJoqR0NekHXvoB/eMvSY4RK11H8k+YZfm7mZesu/3yVX67nkW+Y+PGjZFcgTMcfjwFRsRw==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", @@ -304,6 +609,116 @@ "node": ">=10.0.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -395,13 +810,26 @@ "archiver": "^5.3.1" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@teppeis/multimaps": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-2.0.0.tgz", - "integrity": "sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-3.0.0.tgz", + "integrity": "sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==", "dev": true, + "optional": true, + "peer": true, "engines": { - "node": ">=10.17" + "node": ">=14" } }, "node_modules/@testim/chrome-version": { @@ -482,10 +910,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", - "dev": true + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" }, "node_modules/@types/nightwatch": { "version": "2.3.23", @@ -504,6 +931,14 @@ "integrity": "sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==", "dev": true }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/@types/selenium-webdriver": { "version": "4.1.14", "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.14.tgz", @@ -514,10 +949,12 @@ } }, "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/ws": { "version": "8.5.4", @@ -846,6 +1283,8 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -884,7 +1323,9 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/anymatch": { "version": "3.1.3", @@ -981,21 +1422,25 @@ "dev": true }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, - "node_modules/assert-plus": { + "node_modules/array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "engines": { - "node": ">=0.8" + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/assertion-error": { @@ -1012,6 +1457,8 @@ "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "diff": "^4.0.1", "pad-right": "^0.2.2", @@ -1030,6 +1477,18 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axe-core": { "version": "4.8.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", @@ -1040,9 +1499,9 @@ } }, "node_modules/axios": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", - "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -1213,6 +1672,20 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -1246,6 +1719,8 @@ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -1338,19 +1813,19 @@ } }, "node_modules/chromedriver": { - "version": "117.0.3", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-117.0.3.tgz", - "integrity": "sha512-c2rk2eGK5zZFBJMdviUlAJfQEBuPNIKfal4+rTFVYAmrWbMPYAqPozB+rIkc1lDP/Ryw44lPiqKglrI01ILhTQ==", + "version": "120.0.1", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-120.0.1.tgz", + "integrity": "sha512-ETTJlkibcAmvoKsaEoq2TFqEsJw18N0O9gOQZX6Uv/XoEiOV8p+IZdidMeIRYELWJIgCZESvlOx5d1QVnB4v0w==", "dev": true, "hasInstallScript": true, "dependencies": { - "@testim/chrome-version": "^1.1.3", - "axios": "^1.4.0", - "compare-versions": "^6.0.0", + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.0", + "compare-versions": "^6.1.0", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.1" + "tcp-port-used": "^1.0.2" }, "bin": { "chromedriver": "bin/chromedriver" @@ -1369,7 +1844,9 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/cli-boxes": { "version": "2.2.1", @@ -1525,25 +2002,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "dev": true, - "dependencies": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "bin": { - "copyfiles": "copyfiles", - "copyup": "copyfiles" - } - }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1668,6 +2126,44 @@ "node": ">=6" } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1686,6 +2182,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -1695,6 +2205,23 @@ "node": ">=8" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1704,15 +2231,6 @@ "node": ">=0.4.0" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/devtools-protocol": { "version": "0.0.1025565", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1025565.tgz", @@ -1747,14 +2265,25 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/ejs": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", @@ -1814,9 +2343,9 @@ } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -1825,15 +2354,54 @@ "node": ">=4" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/error-stack-parser": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "stackframe": "^1.3.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/es-module-lexer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", @@ -1854,6 +2422,8 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.8.0" } @@ -1988,15 +2558,6 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2032,6 +2593,8 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -2118,12 +2681,53 @@ } ], "engines": { - "node": ">=4.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/form-data": { @@ -2146,20 +2750,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2181,10 +2771,22 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-caller-file": { "version": "2.0.5", @@ -2204,6 +2806,21 @@ "node": "*" } }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -2262,6 +2879,8 @@ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ini": "2.0.0" }, @@ -2272,6 +2891,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -2295,6 +2926,8 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-4.0.1.tgz", "integrity": "sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -2302,6 +2935,15 @@ "node": ">=8" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2311,6 +2953,69 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hdr-histogram-js": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", @@ -2337,6 +3042,14 @@ "he": "bin/he" } }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -2438,6 +3151,8 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -2463,10 +3178,26 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=10" } }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -2485,6 +3216,56 @@ "node": ">=8" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2497,6 +3278,34 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -2509,6 +3318,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -2559,6 +3383,8 @@ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -2579,6 +3405,15 @@ "node": ">=8" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2588,52 +3423,153 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-unicode-supported": { @@ -2654,6 +3590,28 @@ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -2701,6 +3659,26 @@ "node": ">=0.10.0" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -2733,6 +3711,14 @@ "node": ">= 10.13.0" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2802,18 +3788,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -2870,6 +3844,8 @@ "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", "integrity": "sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "seed-random": "~2.2.0" } @@ -2925,6 +3901,14 @@ "immediate": "~3.0.5" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -2946,18 +3930,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, "node_modules/lodash._arraycopy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", @@ -3104,7 +4076,9 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/lodash.pick": { "version": "4.4.0", @@ -3148,6 +4122,8 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "tslib": "^2.0.3" } @@ -3169,6 +4145,8 @@ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=12" } @@ -3246,16 +4224,32 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", "dev": true, + "optional": true, + "peer": true, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha": { @@ -3459,18 +4453,14 @@ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, - "node_modules/nanoclone": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", - "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", - "dev": true - }, "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -3505,34 +4495,30 @@ } }, "node_modules/nightwatch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-3.2.0.tgz", - "integrity": "sha512-2j7ZWMgvbfFVuCiF8gt5yd+spQaVquxH6mBFHvUol23ytQ5SwuvHU2TWneHn7o5gBTmt0rFdENqs+hIMmURJbg==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-3.3.5.tgz", + "integrity": "sha512-TxhW6DIn/W9hiXGaHPe+REQXi5/EkW/6jI17Js+lcVNCACs1XKqUrLDK1AheXoXZ38MSREzMMg/buaybsxUhOA==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@cucumber/cucumber": "^8.2.1", "@nightwatch/chai": "5.0.2", "@nightwatch/html-reporter-template": "0.2.1", "@nightwatch/nightwatch-inspector": "^1.0.1", "@types/chai": "^4.3.5", "@types/selenium-webdriver": "^4.1.14", "ansi-to-html": "0.7.2", - "aria-query": "^5.1.3", + "aria-query": "5.1.3", "assertion-error": "1.1.0", "boxen": "5.1.2", - "chai-nightwatch": "0.5.3", + "chai-nightwatch": "^0.5.3", "chalk": "^4.1.2", "ci-info": "3.3.0", "cli-table3": "^0.6.3", - "copyfiles": "^2.4.1", "devtools-protocol": "^0.0.1140464", - "didyoumean": "1.2.2", - "dotenv": "10.0.0", + "didyoumean": "^1.2.2", + "dotenv": "16.3.1", "ejs": "3.1.8", - "envinfo": "7.8.1", - "fs-extra": "^10.1.0", - "glob": "^7.2.3", + "envinfo": "7.11.0", + "glob": "7.2.3", "jsdom": "21.1.2", "lodash.clone": "3.0.3", "lodash.defaultsdeep": "4.6.1", @@ -3543,15 +4529,14 @@ "minimist": "1.2.6", "mocha": "10.2.0", "nightwatch-axe-verbose": "^2.2.2", - "open": "8.4.0", + "open": "8.4.2", "ora": "5.4.1", - "piscina": "^3.2.0", - "selenium-webdriver": "~4.13.0", - "semver": "7.5.2", + "piscina": "3.2.0", + "selenium-webdriver": "4.14.0", + "semver": "7.5.4", "stacktrace-parser": "0.1.10", "strip-ansi": "6.0.1", - "typescript": "^4.9.5", - "untildify": "^4.0.0", + "untildify": "4.0.0", "uuid": "8.3.2" }, "bin": { @@ -3590,26 +4575,13 @@ "integrity": "sha512-I1jXnjpQh/6TBFyQ0A9dB2kXXk6DprpPFZoI8pUsxHtlNuOTQEdv9fUqYBsFtf8tOJCbdsZZyQrWeXu6GfK+Bw==", "dev": true }, - "node_modules/nightwatch/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -3640,40 +4612,31 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, - "node_modules/noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/noms/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/noms/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/noms/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3694,10 +4657,64 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3723,9 +4740,9 @@ } }, "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", @@ -3803,6 +4820,8 @@ "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", "integrity": "sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "repeat-string": "^1.5.2" }, @@ -3816,6 +4835,26 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -3873,6 +4912,35 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -3943,15 +5011,19 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.4.0" } }, "node_modules/property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/proxy-from-env": { "version": "1.1.0", @@ -3975,28 +5047,86 @@ "once": "^1.3.1" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "optional": true, + "peer": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" + "optional": true, + "peer": true, + "engines": { + "node": ">=8" } }, "node_modules/readable-stream": { @@ -4071,19 +5201,17 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/regexp-match-indices": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz", "integrity": "sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "regexp-tree": "^0.1.11" } @@ -4093,15 +5221,36 @@ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, + "optional": true, + "peer": true, "bin": { "regexp-tree": "bin/regexp-tree" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10" } @@ -4164,6 +5313,8 @@ "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "resolve-from": "^5.0.0" }, @@ -4265,17 +5416,19 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/selenium-webdriver": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.13.0.tgz", - "integrity": "sha512-8JS0h5E0Sq7gNfbGg8LVaQ+Eqek97tvOONn3Jmy+NiWfb12WYpftz4VTC4D2JT4wakdG6VUzGKpA8cFGg0IjkA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.14.0.tgz", + "integrity": "sha512-637rs8anqMKHbWxcBZpyG3Gcs+rBUtAUiqk0O/knUqH4Paj3MFUZrz88/pVGOLNryEVy2z92fZomT8p1ENl1gA==", "dev": true, "dependencies": { "jszip": "^3.10.1", "tmp": "^0.2.1", - "ws": ">=8.13.0" + "ws": ">=8.14.2" }, "engines": { "node": ">= 14.20.0" @@ -4305,6 +5458,35 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -4344,6 +5526,20 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -4375,11 +5571,53 @@ "source-map": "^0.6.0" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/stacktrace-parser": { "version": "0.1.10", @@ -4402,6 +5640,18 @@ "node": ">=8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -4412,10 +5662,12 @@ } }, "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.6.19" } @@ -4434,6 +5686,23 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4446,6 +5715,32 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi/node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -4609,6 +5904,8 @@ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "any-promise": "^1.0.0" } @@ -4618,6 +5915,8 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -4625,45 +5924,13 @@ "node": ">=0.8" } }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } + "optional": true, + "peer": true }, "node_modules/tmp": { "version": "0.2.1", @@ -4693,7 +5960,9 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/tough-cookie": { "version": "4.1.3", @@ -4797,7 +6066,9 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/type-detect": { "version": "4.0.8", @@ -4833,15 +6104,6 @@ "node": ">=4.2.0" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -4882,6 +6144,8 @@ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "tslib": "^2.0.3" } @@ -4909,7 +6173,9 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz", "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/util-deprecate": { "version": "1.0.2", @@ -4932,18 +6198,16 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, - "node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "node_modules/w3c-xmlserializer": { @@ -5190,6 +6454,56 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -5231,6 +6545,26 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5272,6 +6606,8 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8.0" } @@ -5282,15 +6618,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -5307,12 +6634,14 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, + "optional": true, + "peer": true, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { @@ -5389,21 +6718,31 @@ } }, "node_modules/yup": { - "version": "0.32.11", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", - "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", + "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/lodash": "^4.14.175", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "nanoclone": "^0.2.1", - "property-expr": "^2.0.4", - "toposort": "^2.0.2" - }, + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/yup/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "optional": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zip-stream": { diff --git a/package.json b/package.json index c8e1a3c..d5aa52c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "type": "module", "devDependencies": { "@types/nightwatch": "^2.3.23", - "chromedriver": "^117.0.3", + "chromedriver": "^120.0.1", "nightwatch": "^3.2.0", "ts-loader": "^9.4.2", "ts-node": "^10.9.1", @@ -15,5 +15,8 @@ "build": "webpack --config webpack.config.js", "package": "npm run build && pwsh -File build/package-plugin.ps1", "postinstall": "del /q /s /f node_modules\\.cache\\webpack" + }, + "dependencies": { + "@types/lodash": "^4.14.202" } } diff --git a/readme.txt b/readme.txt index aa905af..c85eea0 100644 --- a/readme.txt +++ b/readme.txt @@ -2,8 +2,8 @@ Contributors: whiteshadow Tags: admin, dashboard, menu, security, wpmu Requires at least: 4.7 -Tested up to: 6.4.1 -Stable tag: 2.22.1 +Tested up to: 6.4 +Stable tag: 2.23.3 Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more. @@ -83,6 +83,29 @@ Here are some usage tips and other things that can be good to know when using th [Get the latest version here.](http://adminmenueditor.com/updates/) += 2.23.3 (2024-01-21) = +* Hiding the "Author" meta box now also hides the corresponding section of the "Summary" panel in the Gutenberg block editor. +* Updated the "Meta Boxes" tab to automatically reselect the previously selected role after saving changes. +* Fixed dashboard widget visibility not being saved. + += 2.23.2 (2024-01-20) = +* Fixed meta box visibility not being saved. This problem was likely related to the recent Lodash 4 migration. + += 2.23.1 (2024-01-19) = +* Hotfix: Fixed users that have the Administrator role and one or more additional roles unexpectedly losing the ability to edit or assign certain roles. This was caused by a preexisting but previously unknown bug that was exposed by the 2.23 update changing the default "Editable roles" setting for the Administrator role to "Leave unchanged". Users who have manually set it to "Automatic" or "Custom" are likely unaffected. + += 2.23 (2024-01-17) = +##### Added +* Added way to hide posts created by other users. It's a group of new settings in the "Tweaks" tab. It works with posts, pages, media, and custom post types that use the default admin UI. + * Limitations: This feature only affects post tables like the one shown under "Posts -> All Posts". Hiding other users' posts from someone doesn't prevent them from opening those posts by following a direct link, and they can still edit the posts if they have the necessary capabilities (e.g. `edit_others_posts`). +* Made the Gutenberg panel "Revisions" hideable by hiding the corresponding meta box. + +##### Changed +* Made menu editor toolbars "sticky". They will now stay below the admin bar when scrolling down, which can be useful when editing very long menus. +* Changed the default "editable roles" setting for the Administrator role from "Automatic" to "Leave unchanged". This means that users with the Administrator role will now be able to edit any user, even if the user being edited has more capabilities than the Administrator role (which can only happen with custom/modified roles). Of course, you can still configure this by clicking "Editable roles" in the "Roles" tab. +* Restored the "custom permissions" and "custom item" indicators for the "Modern" editor color scheme. Previously, they were not visible in the menu editor when using that color scheme. +* Migrated to Lodash 4. + = 2.22.1 (2023-11-09) = * Fixed a conflict with Query Monitor that had the potential to cause a fatal error in some rare situations (no errors actually reported by users so far). * Tested with WP 6.4.1. diff --git a/vendor/autoload.php b/vendor/autoload.php new file mode 100644 index 0000000..84e92b2 --- /dev/null +++ b/vendor/autoload.php @@ -0,0 +1,25 @@ +<?php + +// autoload.php @generated by Composer + +if (PHP_VERSION_ID < 50600) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, $err); + } elseif (!headers_sent()) { + echo $err; + } + } + trigger_error( + $err, + E_USER_ERROR + ); +} + +require_once __DIR__ . '/composer/autoload_real.php'; + +return ComposerAutoloaderInit2eceea941320ca1663329be0014d49fe::getLoader(); diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php new file mode 100644 index 0000000..afef3fa --- /dev/null +++ b/vendor/composer/ClassLoader.php @@ -0,0 +1,572 @@ +<?php + +/* + * This file is part of Composer. + * + * (c) Nils Adermann <naderman@naderman.de> + * Jordi Boggiano <j.boggiano@seld.be> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier <fabien@symfony.com> + * @author Jordi Boggiano <j.boggiano@seld.be> + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array<string, array<string, int>> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array<string, array<int, string>> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array<string, string> + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array<string, array<string, string[]>> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array<string, string> + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array<string, string> + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array<string, bool> + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array<string, array<int, string>> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array<string, string> + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array<string, string> + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array<string, string> + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array<string, string> $classMap + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private + */ +function includeFile($file) +{ + include $file; +} diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..c6b54af --- /dev/null +++ b/vendor/composer/InstalledVersions.php @@ -0,0 +1,352 @@ +<?php + +/* + * This file is part of Composer. + * + * (c) Nils Adermann <naderman@naderman.de> + * Jordi Boggiano <j.boggiano@seld.be> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list<string> + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list<string> + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..0fb0a2c --- /dev/null +++ b/vendor/composer/autoload_classmap.php @@ -0,0 +1,10 @@ +<?php + +// autoload_classmap.php @generated by Composer + +$vendorDir = dirname(__DIR__); +$baseDir = dirname($vendorDir); + +return array( + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', +); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php new file mode 100644 index 0000000..1d3880f --- /dev/null +++ b/vendor/composer/autoload_files.php @@ -0,0 +1,11 @@ +<?php + +// autoload_files.php @generated by Composer + +$vendorDir = dirname(__DIR__); +$baseDir = dirname($vendorDir); + +return array( + '925634b8b72383129427b0beaf838866' => $vendorDir . '/yahnis-elsts/ajax-wrapper/AjaxWrapper.php', + '45a16669595eb3c0a9e2994e57fc3188' => $vendorDir . '/yahnis-elsts/plugin-update-checker/load-v5p3.php', +); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..15a2ff3 --- /dev/null +++ b/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ +<?php + +// autoload_namespaces.php @generated by Composer + +$vendorDir = dirname(__DIR__); +$baseDir = dirname($vendorDir); + +return array( +); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php new file mode 100644 index 0000000..3890ddc --- /dev/null +++ b/vendor/composer/autoload_psr4.php @@ -0,0 +1,9 @@ +<?php + +// autoload_psr4.php @generated by Composer + +$vendorDir = dirname(__DIR__); +$baseDir = dirname($vendorDir); + +return array( +); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php new file mode 100644 index 0000000..3a9ddde --- /dev/null +++ b/vendor/composer/autoload_real.php @@ -0,0 +1,57 @@ +<?php + +// autoload_real.php @generated by Composer + +class ComposerAutoloaderInit2eceea941320ca1663329be0014d49fe +{ + private static $loader; + + public static function loadClassLoader($class) + { + if ('Composer\Autoload\ClassLoader' === $class) { + require __DIR__ . '/ClassLoader.php'; + } + } + + /** + * @return \Composer\Autoload\ClassLoader + */ + public static function getLoader() + { + if (null !== self::$loader) { + return self::$loader; + } + + require __DIR__ . '/platform_check.php'; + + spl_autoload_register(array('ComposerAutoloaderInit2eceea941320ca1663329be0014d49fe', 'loadClassLoader'), true, true); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); + spl_autoload_unregister(array('ComposerAutoloaderInit2eceea941320ca1663329be0014d49fe', 'loadClassLoader')); + + require __DIR__ . '/autoload_static.php'; + call_user_func(\Composer\Autoload\ComposerStaticInit2eceea941320ca1663329be0014d49fe::getInitializer($loader)); + + $loader->register(true); + + $includeFiles = \Composer\Autoload\ComposerStaticInit2eceea941320ca1663329be0014d49fe::$files; + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire2eceea941320ca1663329be0014d49fe($fileIdentifier, $file); + } + + return $loader; + } +} + +/** + * @param string $fileIdentifier + * @param string $file + * @return void + */ +function composerRequire2eceea941320ca1663329be0014d49fe($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } +} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php new file mode 100644 index 0000000..f9e1ede --- /dev/null +++ b/vendor/composer/autoload_static.php @@ -0,0 +1,25 @@ +<?php + +// autoload_static.php @generated by Composer + +namespace Composer\Autoload; + +class ComposerStaticInit2eceea941320ca1663329be0014d49fe +{ + public static $files = array ( + '925634b8b72383129427b0beaf838866' => __DIR__ . '/..' . '/yahnis-elsts/ajax-wrapper/AjaxWrapper.php', + '45a16669595eb3c0a9e2994e57fc3188' => __DIR__ . '/..' . '/yahnis-elsts/plugin-update-checker/load-v5p3.php', + ); + + public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->classMap = ComposerStaticInit2eceea941320ca1663329be0014d49fe::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json new file mode 100644 index 0000000..59bc35f --- /dev/null +++ b/vendor/composer/installed.json @@ -0,0 +1,101 @@ +{ + "packages": [ + { + "name": "yahnis-elsts/ajax-wrapper", + "version": "dev-master", + "version_normalized": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/YahnisElsts/ajax-wrapper.git", + "reference": "55dc60fbb579d781f3375748ddc6aa2b45772a34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/YahnisElsts/ajax-wrapper/zipball/55dc60fbb579d781f3375748ddc6aa2b45772a34", + "reference": "55dc60fbb579d781f3375748ddc6aa2b45772a34", + "shasum": "" + }, + "time": "2024-01-11T14:53:43+00:00", + "default-branch": true, + "type": "library", + "installation-source": "source", + "autoload": { + "files": [ + "AjaxWrapper.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com" + } + ], + "description": "AJAX action wrapper for WordPress", + "support": { + "issues": "https://github.com/YahnisElsts/ajax-wrapper/issues", + "source": "https://github.com/YahnisElsts/ajax-wrapper/tree/master" + }, + "install-path": "../yahnis-elsts/ajax-wrapper" + }, + { + "name": "yahnis-elsts/plugin-update-checker", + "version": "dev-master", + "version_normalized": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/YahnisElsts/plugin-update-checker.git", + "reference": "0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/YahnisElsts/plugin-update-checker/zipball/0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee", + "reference": "0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.6.20" + }, + "time": "2024-01-19T13:40:36+00:00", + "default-branch": true, + "type": "library", + "installation-source": "source", + "autoload": { + "files": [ + "load-v5p3.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com", + "homepage": "https://w-shadow.com/", + "role": "Developer" + } + ], + "description": "A custom update checker for WordPress plugins and themes. Useful if you can't host your plugin in the official WP repository but still want it to support automatic updates.", + "homepage": "https://github.com/YahnisElsts/plugin-update-checker/", + "keywords": [ + "automatic updates", + "plugin updates", + "theme updates", + "wordpress" + ], + "support": { + "issues": "https://github.com/YahnisElsts/plugin-update-checker/issues", + "source": "https://github.com/YahnisElsts/plugin-update-checker/tree/master" + }, + "install-path": "../yahnis-elsts/plugin-update-checker" + } + ], + "dev": true, + "dev-package-names": [] +} diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php new file mode 100644 index 0000000..fb996af --- /dev/null +++ b/vendor/composer/installed.php @@ -0,0 +1,45 @@ +<?php return array( + 'root' => array( + 'name' => 'yahnis-elsts/admin-menu-editor-pro', + 'pretty_version' => 'trunk', + 'version' => 'dev-trunk', + 'reference' => NULL, + 'type' => 'project', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => true, + ), + 'versions' => array( + 'yahnis-elsts/admin-menu-editor-pro' => array( + 'pretty_version' => 'trunk', + 'version' => 'dev-trunk', + 'reference' => NULL, + 'type' => 'project', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'yahnis-elsts/ajax-wrapper' => array( + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => '55dc60fbb579d781f3375748ddc6aa2b45772a34', + 'type' => 'library', + 'install_path' => __DIR__ . '/../yahnis-elsts/ajax-wrapper', + 'aliases' => array( + 0 => '9999999-dev', + ), + 'dev_requirement' => false, + ), + 'yahnis-elsts/plugin-update-checker' => array( + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => '0a8fd4ad3a79f95f4bbadaa7eba6c815a72c60ee', + 'type' => 'library', + 'install_path' => __DIR__ . '/../yahnis-elsts/plugin-update-checker', + 'aliases' => array( + 0 => '9999999-dev', + ), + 'dev_requirement' => false, + ), + ), +); diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php new file mode 100644 index 0000000..12f8be9 --- /dev/null +++ b/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ +<?php + +// platform_check.php @generated by Composer + +$issues = array(); + +if (!(PHP_VERSION_ID >= 50620)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 5.6.20". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/vendor/yahnis-elsts/ajax-wrapper/.gitignore b/vendor/yahnis-elsts/ajax-wrapper/.gitignore new file mode 100644 index 0000000..86a14c2 --- /dev/null +++ b/vendor/yahnis-elsts/ajax-wrapper/.gitignore @@ -0,0 +1,2 @@ +/vendor/ +/.idea/* \ No newline at end of file diff --git a/vendor/yahnis-elsts/ajax-wrapper/AjaxWrapper.php b/vendor/yahnis-elsts/ajax-wrapper/AjaxWrapper.php new file mode 100644 index 0000000..79c730f --- /dev/null +++ b/vendor/yahnis-elsts/ajax-wrapper/AjaxWrapper.php @@ -0,0 +1,457 @@ +<?php +if (!class_exists('Ajaw_v1_ActionBuilder', false)): + + class Ajaw_v1_ActionBuilder { + private $action; + private $callback = '__return_null'; + private $params = array(); + private $httpMethod = null; + + private $capability = null; + private $permissionCheckCallback = null; + + private $mustBeLoggedIn = true; + private $checkNonce = true; + + public function __construct($action) { + $this->action = $action; + } + + /** + * @param callable $callback + * @return $this + */ + public function handler($callback) { + $this->callback = $callback; + return $this; + } + + public function requiredParam($name, $type = null, $validateCallback = null) { + return $this->addParameter($name, $type, true, null, $validateCallback); + } + + public function optionalParam($name, $defaultValue = null, $type = null, $validateCallback = null) { + return $this->addParameter($name, $type, false, $defaultValue, $validateCallback); + } + + private function addParameter($name, $type, $required, $defaultValue, $validateCallback) { + if (isset($type) && !isset(Ajaw_v1_Action::$defaultValidators[$type])) { + throw new LogicException(sprintf( + 'Unknown parameter type "%s". Supported types are: %s.', + $type, + implode(', ', array_keys(Ajaw_v1_Action::$defaultValidators[$type])) + )); + } + + $this->params[$name] = array( + 'required' => $required, + 'defaultValue' => $defaultValue, + 'type' => $type, + 'validateCallback' => $validateCallback, + ); + return $this; + } + + public function method($httpMethod) { + $this->httpMethod = strtoupper($httpMethod); + return $this; + } + + public function requiredCap($capability) { + $this->capability = $capability; + return $this; + } + + public function permissionCallback($callback) { + $this->permissionCheckCallback = $callback; + return $this; + } + + public function allowUnprivilegedUsers() { + $this->mustBeLoggedIn = false; + return $this; + } + + public function withoutNonce() { + $this->checkNonce = false; + return $this; + } + + public function build() { + $instance = new Ajaw_v1_Action($this->action, $this->callback, $this->params); + + $instance->mustBeLoggedIn = $this->mustBeLoggedIn; + $instance->requiredCap = $this->capability; + $instance->nonceCheckEnabled = $this->checkNonce; + $instance->method = $this->httpMethod; + $instance->permissionCallback = $this->permissionCheckCallback; + + return $instance; + } + + public function register() { + $instance = $this->build(); + $instance->register(); + return $instance; + } + } + +endif; + +if (!class_exists('Ajaw_v1_Action', false)): + + class Ajaw_v1_Action { + public $action; + public $callback; + public $params = array(); + public $method = null; + + public $requiredCap = null; + public $mustBeLoggedIn = false; + public $nonceCheckEnabled = true; + public $permissionCallback = null; + + private $isScriptRegistered = false; + + public static $defaultValidators = array( + 'int' => array(__CLASS__, 'validateInt'), + 'float' => array(__CLASS__, 'validateFloat'), + 'boolean' => array(__CLASS__, 'validateBoolean'), + 'string' => array(__CLASS__, 'validateString'), + ); + + public function __construct($action, $callback, $params) { + $this->action = $action; + $this->callback = $callback; + $this->params = $params; + + if (empty($this->action)) { + throw new LogicException(sprintf( + 'AJAX action name is missing. You must either pass it to the %1$s constructor ' + . 'or give the %1$s::$action property a valid default value.', + get_class($this) + )); + } + } + + /** + * Set up hooks for AJAX and helper scripts. + */ + public function register() { + //Register the AJAX handler(s). + $hookNames = array('wp_ajax_' . $this->action); + if (!$this->mustBeLoggedIn) { + $hookNames[] = 'wp_ajax_nopriv_' . $this->action; + } + + foreach($hookNames as $hook) { + if (has_action($hook)) { + throw new RuntimeException(sprintf('The action name "%s" is already in use.', $this->action)); + } + add_action($hook, array($this, 'processAjaxRequest')); + } + + //Register the utility JS library after WP is fully loaded. + if (did_action('wp_loaded')) { + $this->registerScript(); + } else { + add_action('wp_loaded', array($this, 'registerScript'), 2); + } + } + + /** + * @access protected + */ + public function processAjaxRequest() { + $result = $this->handleAction(); + + if (is_wp_error($result)) { + $statusCode = $result->get_error_data(); + if (isset($statusCode) && is_int($statusCode) ) { + status_header($statusCode); + } + + $errorResponse = array( + 'error' => array( + 'message' => $result->get_error_message(), + 'code' => $result->get_error_code() + ) + ); + + $result = $errorResponse; + } + + if (isset($result)) { + $this->outputJSON($result); + } + exit; + } + + protected function handleAction() { + $method = $this->getRequestMethod(); + if (isset($this->method) && ($method !== $this->method)) { + return new WP_Error( + 'http_method_not_allowed', + 'The HTTP method is not supported by the request handler.', + 405 + ); + } + + $isAuthorized = $this->checkAuthorization(); + if ($isAuthorized !== true) { + return $isAuthorized; + } + + $params = $this->parseParameters(); + if ($params instanceof WP_Error) { + return $params; + } + + //Call the user-specified action handler. + if (is_callable($this->callback)) { + return call_user_func($this->callback, $params); + } else { + return new WP_Error( + 'missing_ajax_handler', + sprintf( + 'There is no request handler assigned to the "%1$s" action. ' + . 'Either pass a valid callback to $builder->request() or override the %2$s::%3$s method.', + $this->action, + __CLASS__, + __METHOD__ + ), + 500 + ); + } + } + + /** + * Check if the current user is authorized to perform this action. + * + * @return bool|WP_Error + */ + protected function checkAuthorization() { + if ($this->mustBeLoggedIn && !is_user_logged_in()) { + return new WP_Error('login_required', 'You must be logged in to perform this action.', 403); + } + + if (isset($this->requiredCap) && !current_user_can($this->requiredCap)) { + return new WP_Error('capability_missing', 'You don\'t have permission to perform this action.', 403); + } + + if ($this->nonceCheckEnabled && !check_ajax_referer($this->action, false, false)) { + return new WP_Error('nonce_check_failed', 'Invalid or missing nonce.', 403); + } + + if (isset($this->permissionCallback)) { + $result = call_user_func($this->permissionCallback); + if ($result === false) { + return new WP_Error( + 'permission_callback_failed', + 'You don\'t have permission to perform this action.', + 403 + ); + } else if (is_wp_error($result)) { + return $result; + } + } + + return true; + } + + protected function getRequestMethod() { + return strtoupper(filter_input( + INPUT_SERVER, + 'REQUEST_METHOD', + FILTER_VALIDATE_REGEXP, + array('options' => array('regexp' => '/^[a-z]{3,20}$/i')) + )); + } + + protected function parseParameters() { + $method = $this->getRequestMethod(); + + // phpcs:disable WordPress.Security.NonceVerification -- checkAuthorization() is where nonce verification happens. + //Retrieve request parameters. + if ($method === 'GET') { + $rawParams = $_GET; + } else if ($method === 'POST') { + $rawParams = $_POST; + } else { + $rawParams = $_REQUEST; + } + // phpcs:enable + + //Remove magic quotes. WordPress applies them in wp-settings.php. + //There's no hook for wp_magic_quotes, so we use one that's closest in execution order. + if (did_action('sanitize_comment_cookies') && function_exists('wp_magic_quotes')) { + $rawParams = wp_unslash($rawParams); + } + + //Validate all parameters. + $inputParams = $rawParams; + foreach($this->params as $name => $settings) { + //Verify that all the required parameters are present. + //Empty strings are treated as missing parameters. + if (isset($inputParams[$name]) && ($inputParams[$name] !== '')) { + $value = $this->validateParameter($settings, $inputParams[$name], $name); + if (is_wp_error($value)) { + return $value; + } else { + $inputParams[$name] = $value; + } + } else if (empty($settings['required'])) { + //It's an optional parameter. Use the default value. + $inputParams[$name] = $settings['defaultValue']; + } else { + return new WP_Error( + 'missing_required_parameter', + sprintf('Required parameter is missing or empty: "%s".', $name), + 400 + ); + } + } + + return $inputParams; + } + + protected function validateParameter($settings, $value, $name) { + if (isset($settings['type'])) { + $value = call_user_func(self::$defaultValidators[$settings['type']], $value, $name); + if (is_wp_error($value)) { + return $value; + } + } + if (isset($settings['validateCallback'])) { + $success = call_user_func($settings['validateCallback'], $value); + if (is_wp_error($success)) { + return $success; + } else if ($success === false) { + return new WP_Error( + 'invalid_parameter_value', + sprintf('The value of the parameter "%s" is invalid.', $name), + 400 + ); + } + } + return $value; + } + + private static function validateInt($value, $name) { + $result = filter_var($value, FILTER_VALIDATE_INT); + if ($result === false) { + return new WP_Error( + 'invalid_parameter_value', + sprintf('The value of the parameter "%s" is invalid. It must be an integer.', $name), + 400 + ); + } + return $result; + } + + private static function validateFloat($value, $name) { + $result = filter_var($value, FILTER_VALIDATE_FLOAT); + if ($result === false) { + return new WP_Error( + 'invalid_parameter_value', + sprintf('The value of the parameter "%s" is invalid. It must be a float.', $name), + 400 + ); + } + return $result; + } + + private static function validateBoolean($value, $name) { + $result = filter_var($value, FILTER_VALIDATE_BOOLEAN, array('flags' => FILTER_NULL_ON_FAILURE)); + if ($result === null) { + return new WP_Error( + 'invalid_parameter_value', + sprintf('The value of the parameter "%s" is invalid. It must be a boolean.', $name), + 400 + ); + } + return $result; + } + + private static function validateString($value, $name) { + if (!is_string($value)) { + return new WP_Error( + 'invalid_parameter_value', + sprintf('The value of the parameter "%s" is invalid. It must be a string.', $name), + 400 + ); + } + return $value; + } + + protected function outputJSON($response) { + @header('Content-Type: application/json; charset=' . get_option('blog_charset')); + echo wp_json_encode($response); + } + + public function registerScript() { + if ($this->isScriptRegistered) { + return; + } + $this->isScriptRegistered = true; + + //There could be multiple instances of this class, but we only need to register the script once. + $handle = $this->getScriptHandle(); + if (!wp_script_is($handle, 'registered')) { + wp_register_script( + $handle, + plugins_url('ajax-action-wrapper.js', __FILE__), + array('jquery'), + '20161105' + ); + } + + //Pass the action to the script. + if (function_exists('wp_add_inline_script')) { + wp_add_inline_script($handle, $this->generateActionJs(), 'after'); //WP 4.5+ + } else { + add_filter('script_loader_tag', array($this, 'addRegistrationScript'), 10, 2); //WP 4.1+ + } + } + + /** + * Backwards compatibility for older versions of WP that don't have wp_add_inline_script(). + * @internal + * + * @param string $tag + * @param string $handle + * @return string + */ + public function addRegistrationScript($tag, $handle) { + if ($handle === $this->getScriptHandle()) { + $tag .= '<script type="text/javascript">' . $this->generateActionJs() . '</script>'; + } + return $tag; + } + + protected function generateActionJs() { + $properties = array( + 'ajaxUrl' => admin_url('admin-ajax.php'), + 'method' => $this->method, + 'nonce' => $this->nonceCheckEnabled ? wp_create_nonce($this->action) : null, + ); + + return sprintf( + 'AjawV1.actionRegistry.add("%s", %s);' . "\n", + esc_js($this->action), + wp_json_encode($properties) + ); + } + + public function getScriptHandle() { + return 'ajaw-v1-ajax-action-wrapper'; + } + } + +endif; + +if (!function_exists('ajaw_v1_CreateAction')) { + function ajaw_v1_CreateAction($action) { + return new Ajaw_v1_ActionBuilder($action); + } +} diff --git a/vendor/yahnis-elsts/ajax-wrapper/README.md b/vendor/yahnis-elsts/ajax-wrapper/README.md new file mode 100644 index 0000000..da187b7 --- /dev/null +++ b/vendor/yahnis-elsts/ajax-wrapper/README.md @@ -0,0 +1,74 @@ +# AJAX Action Wrapper + +This helper library makes it easier to handle AJAX requests in WordPress plugins. Mainly for personal use. + +### Example +Define action: +```php +$exampleAction = ajaw_v1_CreateAction('ws_do_something') + ->handler(array($this, 'myAjaxCallback')) + ->requiredCap('manage_options') + ->method('post') + ->requiredParam('foo') + ->optionalParam('bar', 'default value') + ->register(); +``` + +Call from JavaScript: +```javascript +AjawV1.getAction('ws_do_something').post( + { + 'foo': '...' + }, + function(response) { + console.log(response); + } +); +``` + +### Features +- Automate common, boring stuff. + - [x] Automatically pass the `admin-ajax.php` URL and nonce to JS. + - [x] Define required parameters. + ```php + $builder->requiredParam('foo', 'int') + ``` + - [x] Define optional parameters with default values. + ```php + $builder->optionalParam('meaningOfLife', 42, 'int') + ``` + - [x] Automatically remove "magic quotes" that WordPress adds to `$_GET`, `$_POST` and `$_REQUEST`. + - [x] Encode return values as JSON. +- Security should be the default. + - [x] Generate and verify nonces. Nonce verification is on by default, but can be disabled. + ```php + $builder->withoutNonce() + ``` + - [x] Check capabilities. + ```php + $builder->requiredCap('manage_options'); + ``` + - [x] Verify that all required parameters are set. + - [x] Validate parameter values. + ```php + $builder->optionalParam('things', 1, 'int', function($value) { + if ($value > 10) { + return new WP_Error( + 'excessive_things', + 'Too many things!', + 400 //HTTP status code + ); + } + }) + ``` + - [x] Set the required HTTP method. + ```php + $builder->method('post') + ``` +- Resilience. + - [ ] Lenient response parsing to work around bugs in other plugins. For example, deal with extraneous whitespace and PHP notices in AJAX responses. + - [x] Multiple versions of the library can coexist on the same site. + +### Why not use the REST API instead? + +Backwards compatibility. In theory, this library should be compatible with WP 4.1+. \ No newline at end of file diff --git a/vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts b/vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts new file mode 100644 index 0000000..c5d7b42 --- /dev/null +++ b/vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.d.ts @@ -0,0 +1,15 @@ +// Basic type definitions for the Ajaw AJAX wrapper library 1.0 + +declare namespace AjawV1 { + interface RequestParams { [name: string]: any } + interface SuccessCallback { (data, textStatus: string, jqXHR): void } + interface ErrorCallback { (data, textStatus: string, jqXHR, errorThrown): void } + + class AjawAjaxAction { + get(params?: RequestParams, success?: SuccessCallback, error?: ErrorCallback): void; + post(params?: RequestParams, success?: SuccessCallback, error?: ErrorCallback): void; + request(params?: RequestParams, success?: SuccessCallback, error?: ErrorCallback, method?: string): void; + } + + function getAction(action: string): AjawAjaxAction; +} \ No newline at end of file diff --git a/vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.js b/vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.js new file mode 100644 index 0000000..23a5d1e --- /dev/null +++ b/vendor/yahnis-elsts/ajax-wrapper/ajax-action-wrapper.js @@ -0,0 +1,139 @@ +var AjawV1 = window.AjawV1 || {}; + +AjawV1.AjaxAction = (function () { + "use strict"; + + function AjawAjaxAction(action, properties) { + this.action = action; + this.ajaxUrl = properties['ajaxUrl']; + this.nonce = properties['nonce']; + this.requiredMethod = (typeof properties['method'] !== 'undefined') ? properties['method'] : null; + } + + /** + * Send a POST request. + * + * @param {Object} params + * @param {Function} success + * @param {Function} [error] + */ + AjawAjaxAction.prototype.post = function (params, success, error) { + return this.request(params, success, error, 'POST'); + }; + + /** + * Send a GET request. + * + * @param {Object} params + * @param {Function} success + * @param {Function} [error] + */ + AjawAjaxAction.prototype.get = function(params, success, error) { + return this.request(params, success, error, 'GET'); + }; + + /** + * Send an AJAX request using the specified HTTP method. + * + * @param {Object} params + * @param {Function} success + * @param {Function} [error] + * @param {String} [method] + */ + AjawAjaxAction.prototype.request = function(params, success, error, method) { + if (typeof params === 'function') { + //It looks like "params" was omitted and the first argument is actually the success callback. + //Shift all arguments left one step. The reverse order is due to argument binding shenanigans. + method = arguments[2]; + error = arguments[1]; + success = arguments[0]; + params = {}; + } + + if (typeof params === 'undefined') { + params = {}; + } else if (typeof params !== 'object') { + //While jQuery accepts request data in object and string form, this library only supports objects. + throw 'Data that\'s to be sent to the server must be an object, not ' + (typeof params); + } + + if (typeof method === 'undefined') { + method = this.requiredMethod || 'POST'; + } + if (this.requiredMethod && (method !== this.requiredMethod)) { + throw 'Wrong HTTP method. This action requires ' + this.requiredMethod; + } + + //noinspection JSUnusedGlobalSymbols + return jQuery.ajax( + this.ajaxUrl, + { + method: method, + data: this.prepareRequestParams(params), + success: function(data, textStatus, jqXHR) { + if (success) { + success(data, textStatus, jqXHR); + } + }, + error: function(jqXHR, textStatus, errorThrown) { + var data = jqXHR.responseText; + if (typeof jqXHR['responseJSON'] !== 'undefined') { + data = jqXHR['responseJSON']; + } else if (typeof jqXHR['responseXML'] !== 'undefined') { + data = jqXHR['responseXML']; + } + + if (error) { + error(data, textStatus, jqXHR, errorThrown); + } + } + } + ); + }; + + AjawAjaxAction.prototype.prepareRequestParams = function(params) { + if (params === null) { + params = {}; + } + + params['action'] = this.action; + if (this.nonce !== null) { + params['_ajax_nonce'] = this.nonce; + } + return params; + }; + + return AjawAjaxAction; +}()); + +AjawV1.actionRegistry = (function() { + var actions = {}; + + return { + /** + * + * @param {String} actionName + * @return {AjawAjaxAction} + */ + get: function(actionName) { + if (actions.hasOwnProperty(actionName)) { + return actions[actionName]; + } + return null; + }, + + add: function(actionName, properties) { + actions[actionName] = new AjawV1.AjaxAction(actionName, properties); + } + } +})(); + +/** + * Get a registered action wrapper. + * + * @param {string} action + * @return {AjawAjaxAction|null} + */ +AjawV1.getAction = function(action) { + return this.actionRegistry.get(action); +}; \ No newline at end of file diff --git a/vendor/yahnis-elsts/ajax-wrapper/composer.json b/vendor/yahnis-elsts/ajax-wrapper/composer.json new file mode 100644 index 0000000..484e579 --- /dev/null +++ b/vendor/yahnis-elsts/ajax-wrapper/composer.json @@ -0,0 +1,16 @@ +{ + "name": "yahnis-elsts/ajax-wrapper", + "description": "AJAX action wrapper for WordPress", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com" + } + ], + "require": {}, + "autoload": { + "files": ["AjaxWrapper.php"] + } +} diff --git a/vendor/yahnis-elsts/plugin-update-checker/.editorconfig b/vendor/yahnis-elsts/plugin-update-checker/.editorconfig new file mode 100644 index 0000000..1b51cad --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/.editorconfig @@ -0,0 +1,15 @@ +[*] +charset=utf-8 +end_of_line=lf +insert_final_newline=false +indent_style=tab +tab_width=4 + +[{phpunit.xml.dist,*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}] +indent_style=space +indent_size=4 + +[*.svg] +indent_style=space +indent_size=4 + diff --git a/vendor/yahnis-elsts/plugin-update-checker/.gitattributes b/vendor/yahnis-elsts/plugin-update-checker/.gitattributes new file mode 100644 index 0000000..a5faba5 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/.gitattributes @@ -0,0 +1,6 @@ +/.editorconfig export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore +/build/ export-ignore +/examples/ export-ignore +/phpcs.xml export-ignore diff --git a/vendor/yahnis-elsts/plugin-update-checker/.gitignore b/vendor/yahnis-elsts/plugin-update-checker/.gitignore new file mode 100644 index 0000000..7126070 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/.gitignore @@ -0,0 +1,40 @@ +# Created by .ignore support plugin (hsz.mobi) +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# The entire IDEA/PhpStorm directory +.idea/ + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5/PucFactory.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5/PucFactory.php new file mode 100644 index 0000000..a2ec2d2 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5/PucFactory.php @@ -0,0 +1,10 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5; + +if ( !class_exists(PucFactory::class, false) ): + + class PucFactory extends \YahnisElsts\PluginUpdateChecker\v5p3\PucFactory { + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Autoloader.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Autoloader.php new file mode 100644 index 0000000..5074ab2 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Autoloader.php @@ -0,0 +1,86 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(Autoloader::class, false) ): + + class Autoloader { + const DEFAULT_NS_PREFIX = 'YahnisElsts\\PluginUpdateChecker\\'; + + private $prefix; + private $rootDir; + private $libraryDir; + + private $staticMap; + + public function __construct() { + $this->rootDir = dirname(__FILE__) . '/'; + + $namespaceWithSlash = __NAMESPACE__ . '\\'; + $this->prefix = $namespaceWithSlash; + + $this->libraryDir = $this->rootDir . '../..'; + if ( !self::isPhar() ) { + $this->libraryDir = realpath($this->libraryDir); + } + $this->libraryDir = $this->libraryDir . '/'; + + //Usually, dependencies like Parsedown are in the global namespace, + //but if someone adds a custom namespace to the entire library, they + //will be in the same namespace as this class. + $isCustomNamespace = ( + substr($namespaceWithSlash, 0, strlen(self::DEFAULT_NS_PREFIX)) !== self::DEFAULT_NS_PREFIX + ); + $libraryPrefix = $isCustomNamespace ? $namespaceWithSlash : ''; + + $this->staticMap = array( + $libraryPrefix . 'PucReadmeParser' => 'vendor/PucReadmeParser.php', + $libraryPrefix . 'Parsedown' => 'vendor/Parsedown.php', + ); + + //Add the generic, major-version-only factory class to the static map. + $versionSeparatorPos = strrpos(__NAMESPACE__, '\\v'); + if ( $versionSeparatorPos !== false ) { + $versionSegment = substr(__NAMESPACE__, $versionSeparatorPos + 1); + $pointPos = strpos($versionSegment, 'p'); + if ( ($pointPos !== false) && ($pointPos > 1) ) { + $majorVersionSegment = substr($versionSegment, 0, $pointPos); + $majorVersionNs = __NAMESPACE__ . '\\' . $majorVersionSegment; + $this->staticMap[$majorVersionNs . '\\PucFactory'] = + 'Puc/' . $majorVersionSegment . '/Factory.php'; + } + } + + spl_autoload_register(array($this, 'autoload')); + } + + /** + * Determine if this file is running as part of a Phar archive. + * + * @return bool + */ + private static function isPhar() { + //Check if the current file path starts with "phar://". + static $pharProtocol = 'phar://'; + return (substr(__FILE__, 0, strlen($pharProtocol)) === $pharProtocol); + } + + public function autoload($className) { + if ( isset($this->staticMap[$className]) && file_exists($this->libraryDir . $this->staticMap[$className]) ) { + include($this->libraryDir . $this->staticMap[$className]); + return; + } + + if ( strpos($className, $this->prefix) === 0 ) { + $path = substr($className, strlen($this->prefix)); + $path = str_replace(array('_', '\\'), '/', $path); + $path = $this->rootDir . $path . '.php'; + + if ( file_exists($path) ) { + include $path; + } + } + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Extension.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Extension.php new file mode 100644 index 0000000..df4a493 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Extension.php @@ -0,0 +1,199 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +use YahnisElsts\PluginUpdateChecker\v5p3\PucFactory; +use YahnisElsts\PluginUpdateChecker\v5p3\UpdateChecker; + +if ( !class_exists(Extension::class, false) ): + + class Extension { + const RESPONSE_BODY_LENGTH_LIMIT = 4000; + + /** @var UpdateChecker */ + protected $updateChecker; + protected $panelClass = Panel::class; + + public function __construct($updateChecker, $panelClass = null) { + $this->updateChecker = $updateChecker; + if ( isset($panelClass) ) { + $this->panelClass = $panelClass; + } + + if ( (strpos($this->panelClass, '\\') === false) ) { + $this->panelClass = __NAMESPACE__ . '\\' . $this->panelClass; + } + + add_filter('debug_bar_panels', array($this, 'addDebugBarPanel')); + add_action('debug_bar_enqueue_scripts', array($this, 'enqueuePanelDependencies')); + + add_action('wp_ajax_puc_v5_debug_check_now', array($this, 'ajaxCheckNow')); + } + + /** + * Register the PUC Debug Bar panel. + * + * @param array $panels + * @return array + */ + public function addDebugBarPanel($panels) { + if ( $this->updateChecker->userCanInstallUpdates() ) { + $panels[] = new $this->panelClass($this->updateChecker); + } + return $panels; + } + + /** + * Enqueue our Debug Bar scripts and styles. + */ + public function enqueuePanelDependencies() { + wp_enqueue_style( + 'puc-debug-bar-style-v5', + $this->getLibraryUrl("/css/puc-debug-bar.css"), + array('debug-bar'), + '20221008' + ); + + wp_enqueue_script( + 'puc-debug-bar-js-v5', + $this->getLibraryUrl("/js/debug-bar.js"), + array('jquery'), + '20221008' + ); + } + + /** + * Run an update check and output the result. Useful for making sure that + * the update checking process works as expected. + */ + public function ajaxCheckNow() { + //phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce is checked in preAjaxRequest(). + if ( !isset($_POST['uid']) || ($_POST['uid'] !== $this->updateChecker->getUniqueName('uid')) ) { + return; + } + $this->preAjaxRequest(); + $update = $this->updateChecker->checkForUpdates(); + if ( $update !== null ) { + echo "An update is available:"; + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r -- For debugging output. + echo '<pre>', esc_html(print_r($update, true)), '</pre>'; + } else { + echo 'No updates found.'; + } + + $errors = $this->updateChecker->getLastRequestApiErrors(); + if ( !empty($errors) ) { + printf('<p>The update checker encountered %d API error%s.</p>', count($errors), (count($errors) > 1) ? 's' : ''); + + foreach (array_values($errors) as $num => $item) { + $wpError = $item['error']; + /** @var \WP_Error $wpError */ + printf('<h4>%d) %s</h4>', intval($num + 1), esc_html($wpError->get_error_message())); + + echo '<dl>'; + printf('<dt>Error code:</dt><dd><code>%s</code></dd>', esc_html($wpError->get_error_code())); + + if ( isset($item['url']) ) { + printf('<dt>Requested URL:</dt><dd><code>%s</code></dd>', esc_html($item['url'])); + } + + if ( isset($item['httpResponse']) ) { + if ( is_wp_error($item['httpResponse']) ) { + $httpError = $item['httpResponse']; + /** @var \WP_Error $httpError */ + printf( + '<dt>WordPress HTTP API error:</dt><dd>%s (<code>%s</code>)</dd>', + esc_html($httpError->get_error_message()), + esc_html($httpError->get_error_code()) + ); + } else { + //Status code. + printf( + '<dt>HTTP status:</dt><dd><code>%d %s</code></dd>', + esc_html(wp_remote_retrieve_response_code($item['httpResponse'])), + esc_html(wp_remote_retrieve_response_message($item['httpResponse'])) + ); + + //Headers. + echo '<dt>Response headers:</dt><dd><pre>'; + foreach (wp_remote_retrieve_headers($item['httpResponse']) as $name => $value) { + printf("%s: %s\n", esc_html($name), esc_html($value)); + } + echo '</pre></dd>'; + + //Body. + $body = wp_remote_retrieve_body($item['httpResponse']); + if ( $body === '' ) { + $body = '(Empty response.)'; + } else if ( strlen($body) > self::RESPONSE_BODY_LENGTH_LIMIT ) { + $length = strlen($body); + $body = substr($body, 0, self::RESPONSE_BODY_LENGTH_LIMIT) + . sprintf("\n(Long string truncated. Total length: %d bytes.)", $length); + } + + printf('<dt>Response body:</dt><dd><pre>%s</pre></dd>', esc_html($body)); + } + } + echo '<dl>'; + } + } + + exit; + } + + /** + * Check access permissions and enable error display (for debugging). + */ + protected function preAjaxRequest() { + if ( !$this->updateChecker->userCanInstallUpdates() ) { + die('Access denied'); + } + check_ajax_referer('puc-ajax'); + + //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.runtime_configuration_error_reporting -- Part of a debugging feature. + error_reporting(E_ALL); + //phpcs:ignore WordPress.PHP.IniSet.display_errors_Blacklisted + @ini_set('display_errors', 'On'); + } + + /** + * Remove hooks that were added by this extension. + */ + public function removeHooks() { + remove_filter('debug_bar_panels', array($this, 'addDebugBarPanel')); + remove_action('debug_bar_enqueue_scripts', array($this, 'enqueuePanelDependencies')); + remove_action('wp_ajax_puc_v5_debug_check_now', array($this, 'ajaxCheckNow')); + } + + /** + * @param string $filePath + * @return string + */ + private function getLibraryUrl($filePath) { + $absolutePath = realpath(dirname(__FILE__) . '/../../../' . ltrim($filePath, '/')); + + //Where is the library located inside the WordPress directory structure? + $absolutePath = PucFactory::normalizePath($absolutePath); + + $pluginDir = PucFactory::normalizePath(WP_PLUGIN_DIR); + $muPluginDir = PucFactory::normalizePath(WPMU_PLUGIN_DIR); + $themeDir = PucFactory::normalizePath(get_theme_root()); + + if ( (strpos($absolutePath, $pluginDir) === 0) || (strpos($absolutePath, $muPluginDir) === 0) ) { + //It's part of a plugin. + return plugins_url(basename($absolutePath), $absolutePath); + } else if ( strpos($absolutePath, $themeDir) === 0 ) { + //It's part of a theme. + $relativePath = substr($absolutePath, strlen($themeDir) + 1); + $template = substr($relativePath, 0, strpos($relativePath, '/')); + $baseUrl = get_theme_root_uri($template); + + if ( !empty($baseUrl) && $relativePath ) { + return $baseUrl . '/' . $relativePath; + } + } + + return ''; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Panel.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Panel.php new file mode 100644 index 0000000..795525c --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/Panel.php @@ -0,0 +1,178 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +use YahnisElsts\PluginUpdateChecker\v5p3\UpdateChecker; + +if ( !class_exists(Panel::class, false) && class_exists('Debug_Bar_Panel', false) ): + + class Panel extends \Debug_Bar_Panel { + /** @var UpdateChecker */ + protected $updateChecker; + + private $responseBox = '<div class="puc-ajax-response" style="display: none;"></div>'; + + public function __construct($updateChecker) { + $this->updateChecker = $updateChecker; + $title = sprintf( + '<span class="puc-debug-menu-link-%s">PUC (%s)</span>', + esc_attr($this->updateChecker->getUniqueName('uid')), + $this->updateChecker->slug + ); + parent::__construct($title); + } + + public function render() { + printf( + '<div class="puc-debug-bar-panel-v5" id="%1$s" data-slug="%2$s" data-uid="%3$s" data-nonce="%4$s">', + esc_attr($this->updateChecker->getUniqueName('debug-bar-panel')), + esc_attr($this->updateChecker->slug), + esc_attr($this->updateChecker->getUniqueName('uid')), + esc_attr(wp_create_nonce('puc-ajax')) + ); + + $this->displayConfiguration(); + $this->displayStatus(); + $this->displayCurrentUpdate(); + + echo '</div>'; + } + + private function displayConfiguration() { + echo '<h3>Configuration</h3>'; + echo '<table class="puc-debug-data">'; + $this->displayConfigHeader(); + $this->row('Slug', htmlentities($this->updateChecker->slug)); + $this->row('DB option', htmlentities($this->updateChecker->optionName)); + + $requestInfoButton = $this->getMetadataButton(); + $this->row('Metadata URL', htmlentities($this->updateChecker->metadataUrl) . ' ' . $requestInfoButton . $this->responseBox); + + $scheduler = $this->updateChecker->scheduler; + if ( $scheduler->checkPeriod > 0 ) { + $this->row('Automatic checks', 'Every ' . $scheduler->checkPeriod . ' hours'); + } else { + $this->row('Automatic checks', 'Disabled'); + } + + if ( isset($scheduler->throttleRedundantChecks) ) { + if ( $scheduler->throttleRedundantChecks && ($scheduler->checkPeriod > 0) ) { + $this->row( + 'Throttling', + sprintf( + 'Enabled. If an update is already available, check for updates every %1$d hours instead of every %2$d hours.', + $scheduler->throttledCheckPeriod, + $scheduler->checkPeriod + ) + ); + } else { + $this->row('Throttling', 'Disabled'); + } + } + + $this->updateChecker->onDisplayConfiguration($this); + + echo '</table>'; + } + + protected function displayConfigHeader() { + //Do nothing. This should be implemented in subclasses. + } + + protected function getMetadataButton() { + return ''; + } + + private function displayStatus() { + echo '<h3>Status</h3>'; + echo '<table class="puc-debug-data">'; + $state = $this->updateChecker->getUpdateState(); + $checkNowButton = ''; + if ( function_exists('get_submit_button') ) { + $checkNowButton = get_submit_button( + 'Check Now', + 'secondary', + 'puc-check-now-button', + false, + array('id' => $this->updateChecker->getUniqueName('check-now-button')) + ); + } + + if ( $state->getLastCheck() > 0 ) { + $this->row('Last check', $this->formatTimeWithDelta($state->getLastCheck()) . ' ' . $checkNowButton . $this->responseBox); + } else { + $this->row('Last check', 'Never'); + } + + $nextCheck = wp_next_scheduled($this->updateChecker->scheduler->getCronHookName()); + $this->row('Next automatic check', $this->formatTimeWithDelta($nextCheck)); + + if ( $state->getCheckedVersion() !== '' ) { + $this->row('Checked version', htmlentities($state->getCheckedVersion())); + $this->row('Cached update', $state->getUpdate()); + } + $this->row('Update checker class', htmlentities(get_class($this->updateChecker))); + echo '</table>'; + } + + private function displayCurrentUpdate() { + $update = $this->updateChecker->getUpdate(); + if ( $update !== null ) { + echo '<h3>An Update Is Available</h3>'; + echo '<table class="puc-debug-data">'; + $fields = $this->getUpdateFields(); + foreach($fields as $field) { + if ( property_exists($update, $field) ) { + $this->row( + ucwords(str_replace('_', ' ', $field)), + isset($update->$field) ? htmlentities($update->$field) : null + ); + } + } + echo '</table>'; + } else { + echo '<h3>No updates currently available</h3>'; + } + } + + protected function getUpdateFields() { + return array('version', 'download_url', 'slug',); + } + + private function formatTimeWithDelta($unixTime) { + if ( empty($unixTime) ) { + return 'Never'; + } + + $delta = time() - $unixTime; + $result = human_time_diff(time(), $unixTime); + if ( $delta < 0 ) { + $result = 'after ' . $result; + } else { + $result = $result . ' ago'; + } + $result .= ' (' . $this->formatTimestamp($unixTime) . ')'; + return $result; + } + + private function formatTimestamp($unixTime) { + return gmdate('Y-m-d H:i:s', $unixTime + (get_option('gmt_offset') * 3600)); + } + + public function row($name, $value) { + if ( is_object($value) || is_array($value) ) { + //This is specifically for debugging, so print_r() is fine. + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r + $value = '<pre>' . htmlentities(print_r($value, true)) . '</pre>'; + } else if ($value === null) { + $value = '<code>null</code>'; + } + printf( + '<tr><th scope="row">%1$s</th> <td>%2$s</td></tr>', + esc_html($name), + //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped above. + $value + ); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginExtension.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginExtension.php new file mode 100644 index 0000000..b5546c7 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginExtension.php @@ -0,0 +1,40 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +use YahnisElsts\PluginUpdateChecker\v5p3\Plugin\UpdateChecker; + +if ( !class_exists(PluginExtension::class, false) ): + + class PluginExtension extends Extension { + /** @var UpdateChecker */ + protected $updateChecker; + + public function __construct($updateChecker) { + parent::__construct($updateChecker, PluginPanel::class); + + add_action('wp_ajax_puc_v5_debug_request_info', array($this, 'ajaxRequestInfo')); + } + + /** + * Request plugin info and output it. + */ + public function ajaxRequestInfo() { + //phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce is checked in preAjaxRequest(). + if ( !isset($_POST['uid']) || ($_POST['uid'] !== $this->updateChecker->getUniqueName('uid')) ) { + return; + } + $this->preAjaxRequest(); + $info = $this->updateChecker->requestInfo(); + if ( $info !== null ) { + echo 'Successfully retrieved plugin info from the metadata URL:'; + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r -- For debugging output. + echo '<pre>', esc_html(print_r($info, true)), '</pre>'; + } else { + echo 'Failed to retrieve plugin info from the metadata URL.'; + } + exit; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginPanel.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginPanel.php new file mode 100644 index 0000000..d7e418d --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/PluginPanel.php @@ -0,0 +1,41 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +use YahnisElsts\PluginUpdateChecker\v5p3\Plugin\UpdateChecker; + +if ( !class_exists(PluginPanel::class, false) ): + + class PluginPanel extends Panel { + /** + * @var UpdateChecker + */ + protected $updateChecker; + + protected function displayConfigHeader() { + $this->row('Plugin file', htmlentities($this->updateChecker->pluginFile)); + parent::displayConfigHeader(); + } + + protected function getMetadataButton() { + $requestInfoButton = ''; + if ( function_exists('get_submit_button') ) { + $requestInfoButton = get_submit_button( + 'Request Info', + 'secondary', + 'puc-request-info-button', + false, + array('id' => $this->updateChecker->getUniqueName('request-info-button')) + ); + } + return $requestInfoButton; + } + + protected function getUpdateFields() { + return array_merge( + parent::getUpdateFields(), + array('homepage', 'upgrade_notice', 'tested',) + ); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/ThemePanel.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/ThemePanel.php new file mode 100644 index 0000000..3183ead --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/DebugBar/ThemePanel.php @@ -0,0 +1,25 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +use YahnisElsts\PluginUpdateChecker\v5p3\Theme\UpdateChecker; + +if ( !class_exists(ThemePanel::class, false) ): + + class ThemePanel extends Panel { + /** + * @var UpdateChecker + */ + protected $updateChecker; + + protected function displayConfigHeader() { + $this->row('Theme directory', htmlentities($this->updateChecker->directoryName)); + parent::displayConfigHeader(); + } + + protected function getUpdateFields() { + return array_merge(parent::getUpdateFields(), array('details_url')); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/InstalledPackage.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/InstalledPackage.php new file mode 100644 index 0000000..06a5d21 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/InstalledPackage.php @@ -0,0 +1,105 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(InstalledPackage::class, false) ): + + /** + * This class represents a currently installed plugin or theme. + * + * Not to be confused with the "package" field in WP update API responses that contains + * the download URL of a the new version. + */ + abstract class InstalledPackage { + /** + * @var UpdateChecker + */ + protected $updateChecker; + + public function __construct($updateChecker) { + $this->updateChecker = $updateChecker; + } + + /** + * Get the currently installed version of the plugin or theme. + * + * @return string|null Version number. + */ + abstract public function getInstalledVersion(); + + /** + * Get the full path of the plugin or theme directory (without a trailing slash). + * + * @return string + */ + abstract public function getAbsoluteDirectoryPath(); + + /** + * Check whether a regular file exists in the package's directory. + * + * @param string $relativeFileName File name relative to the package directory. + * @return bool + */ + public function fileExists($relativeFileName) { + return is_file( + $this->getAbsoluteDirectoryPath() + . DIRECTORY_SEPARATOR + . ltrim($relativeFileName, '/\\') + ); + } + + /* ------------------------------------------------------------------- + * File header parsing + * ------------------------------------------------------------------- + */ + + /** + * Parse plugin or theme metadata from the header comment. + * + * This is basically a simplified version of the get_file_data() function from /wp-includes/functions.php. + * It's intended as a utility for subclasses that detect updates by parsing files in a VCS. + * + * @param string|null $content File contents. + * @return string[] + */ + public function getFileHeader($content) { + $content = (string)$content; + + //WordPress only looks at the first 8 KiB of the file, so we do the same. + $content = substr($content, 0, 8192); + //Normalize line endings. + $content = str_replace("\r", "\n", $content); + + $headers = $this->getHeaderNames(); + $results = array(); + foreach ($headers as $field => $name) { + $success = preg_match('/^[ \t\/*#@]*' . preg_quote($name, '/') . ':(.*)$/mi', $content, $matches); + + if ( ($success === 1) && $matches[1] ) { + $value = $matches[1]; + if ( function_exists('_cleanup_header_comment') ) { + $value = _cleanup_header_comment($value); + } + $results[$field] = $value; + } else { + $results[$field] = ''; + } + } + + return $results; + } + + /** + * @return array Format: ['HeaderKey' => 'Header Name'] + */ + abstract protected function getHeaderNames(); + + /** + * Get the value of a specific plugin or theme header. + * + * @param string $headerName + * @return string Either the value of the header, or an empty string if the header doesn't exist. + */ + abstract public function getHeaderValue($headerName); + + } +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Metadata.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Metadata.php new file mode 100644 index 0000000..f368f88 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Metadata.php @@ -0,0 +1,162 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +use LogicException; +use stdClass; +use WP_Error; + +if ( !class_exists(Metadata::class, false) ): + + /** + * A base container for holding information about updates and plugin metadata. + * + * @author Janis Elsts + * @copyright 2016 + * @access public + */ + abstract class Metadata { + /** + * Additional dynamic properties, usually copied from the API response. + * + * @var array<string,mixed> + */ + protected $extraProperties = array(); + + /** + * Create an instance of this class from a JSON document. + * + * @abstract + * @param string $json + * @return self + */ + public static function fromJson($json) { + throw new LogicException('The ' . __METHOD__ . ' method must be implemented by subclasses'); + } + + /** + * @param string $json + * @param self $target + * @return bool + */ + protected static function createFromJson($json, $target) { + /** @var \StdClass $apiResponse */ + $apiResponse = json_decode($json); + if ( empty($apiResponse) || !is_object($apiResponse) ){ + $errorMessage = "Failed to parse update metadata. Try validating your .json file with https://jsonlint.com/"; + do_action('puc_api_error', new WP_Error('puc-invalid-json', $errorMessage)); + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error -- For plugin developers. + trigger_error(esc_html($errorMessage), E_USER_NOTICE); + return false; + } + + $valid = $target->validateMetadata($apiResponse); + if ( is_wp_error($valid) ){ + do_action('puc_api_error', $valid); + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error -- For plugin developers. + trigger_error(esc_html($valid->get_error_message()), E_USER_NOTICE); + return false; + } + + foreach(get_object_vars($apiResponse) as $key => $value){ + $target->$key = $value; + } + + return true; + } + + /** + * No validation by default! Subclasses should check that the required fields are present. + * + * @param \StdClass $apiResponse + * @return bool|\WP_Error + */ + protected function validateMetadata($apiResponse) { + return true; + } + + /** + * Create a new instance by copying the necessary fields from another object. + * + * @abstract + * @param \StdClass|self $object The source object. + * @return self The new copy. + */ + public static function fromObject($object) { + throw new LogicException('The ' . __METHOD__ . ' method must be implemented by subclasses'); + } + + /** + * Create an instance of StdClass that can later be converted back to an + * update or info container. Useful for serialization and caching, as it + * avoids the "incomplete object" problem if the cached value is loaded + * before this class. + * + * @return \StdClass + */ + public function toStdClass() { + $object = new stdClass(); + $this->copyFields($this, $object); + return $object; + } + + /** + * Transform the metadata into the format used by WordPress core. + * + * @return object + */ + abstract public function toWpFormat(); + + /** + * Copy known fields from one object to another. + * + * @param \StdClass|self $from + * @param \StdClass|self $to + */ + protected function copyFields($from, $to) { + $fields = $this->getFieldNames(); + + if ( property_exists($from, 'slug') && !empty($from->slug) ) { + //Let plugins add extra fields without having to create subclasses. + $fields = apply_filters($this->getPrefixedFilter('retain_fields') . '-' . $from->slug, $fields); + } + + foreach ($fields as $field) { + if ( property_exists($from, $field) ) { + $to->$field = $from->$field; + } + } + } + + /** + * @return string[] + */ + protected function getFieldNames() { + return array(); + } + + /** + * @param string $tag + * @return string + */ + protected function getPrefixedFilter($tag) { + return 'puc_' . $tag; + } + + public function __set($name, $value) { + $this->extraProperties[$name] = $value; + } + + public function __get($name) { + return isset($this->extraProperties[$name]) ? $this->extraProperties[$name] : null; + } + + public function __isset($name) { + return isset($this->extraProperties[$name]); + } + + public function __unset($name) { + unset($this->extraProperties[$name]); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/OAuthSignature.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/OAuthSignature.php new file mode 100644 index 0000000..be9ad9e --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/OAuthSignature.php @@ -0,0 +1,102 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(OAuthSignature::class, false) ): + + /** + * A basic signature generator for zero-legged OAuth 1.0. + */ + class OAuthSignature { + private $consumerKey = ''; + private $consumerSecret = ''; + + public function __construct($consumerKey, $consumerSecret) { + $this->consumerKey = $consumerKey; + $this->consumerSecret = $consumerSecret; + } + + /** + * Sign a URL using OAuth 1.0. + * + * @param string $url The URL to be signed. It may contain query parameters. + * @param string $method HTTP method such as "GET", "POST" and so on. + * @return string The signed URL. + */ + public function sign($url, $method = 'GET') { + $parameters = array(); + + //Parse query parameters. + $query = wp_parse_url($url, PHP_URL_QUERY); + if ( !empty($query) ) { + parse_str($query, $parsedParams); + if ( is_array($parsedParams) ) { + $parameters = $parsedParams; + } + //Remove the query string from the URL. We'll replace it later. + $url = substr($url, 0, strpos($url, '?')); + } + + $parameters = array_merge( + $parameters, + array( + 'oauth_consumer_key' => $this->consumerKey, + 'oauth_nonce' => $this->nonce(), + 'oauth_signature_method' => 'HMAC-SHA1', + 'oauth_timestamp' => time(), + 'oauth_version' => '1.0', + ) + ); + unset($parameters['oauth_signature']); + + //Parameters must be sorted alphabetically before signing. + ksort($parameters); + + //The most complicated part of the request - generating the signature. + //The string to sign contains the HTTP method, the URL path, and all of + //our query parameters. Everything is URL encoded. Then we concatenate + //them with ampersands into a single string to hash. + $encodedVerb = urlencode($method); + $encodedUrl = urlencode($url); + $encodedParams = urlencode(http_build_query($parameters, '', '&')); + + $stringToSign = $encodedVerb . '&' . $encodedUrl . '&' . $encodedParams; + + //Since we only have one OAuth token (the consumer secret) we only have + //to use it as our HMAC key. However, we still have to append an & to it + //as if we were using it with additional tokens. + $secret = urlencode($this->consumerSecret) . '&'; + + //The signature is a hash of the consumer key and the base string. Note + //that we have to get the raw output from hash_hmac and base64 encode + //the binary data result. + $parameters['oauth_signature'] = base64_encode(hash_hmac('sha1', $stringToSign, $secret, true)); + + return ($url . '?' . http_build_query($parameters)); + } + + /** + * Generate a random nonce. + * + * @return string + */ + private function nonce() { + $mt = microtime(); + + $rand = null; + if ( is_callable('random_bytes') ) { + try { + $rand = random_bytes(16); + } catch (\Exception $ex) { + //Fall back to mt_rand (below). + } + } + if ( $rand === null ) { + //phpcs:ignore WordPress.WP.AlternativeFunctions.rand_mt_rand + $rand = function_exists('wp_rand') ? wp_rand() : mt_rand(); + } + + return md5($mt . '_' . $rand); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Package.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Package.php new file mode 100644 index 0000000..6b19bb3 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Package.php @@ -0,0 +1,188 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Plugin; + +use YahnisElsts\PluginUpdateChecker\v5p3\InstalledPackage; +use YahnisElsts\PluginUpdateChecker\v5p3\PucFactory; + +if ( !class_exists(Package::class, false) ): + + class Package extends InstalledPackage { + /** + * @var UpdateChecker + */ + protected $updateChecker; + + /** + * @var string Full path of the main plugin file. + */ + protected $pluginAbsolutePath = ''; + + /** + * @var string Plugin basename. + */ + private $pluginFile; + + /** + * @var string|null + */ + private $cachedInstalledVersion = null; + + public function __construct($pluginAbsolutePath, $updateChecker) { + $this->pluginAbsolutePath = $pluginAbsolutePath; + $this->pluginFile = plugin_basename($this->pluginAbsolutePath); + + parent::__construct($updateChecker); + + //Clear the version number cache when something - anything - is upgraded or WP clears the update cache. + add_filter('upgrader_post_install', array($this, 'clearCachedVersion')); + add_action('delete_site_transient_update_plugins', array($this, 'clearCachedVersion')); + } + + public function getInstalledVersion() { + if ( isset($this->cachedInstalledVersion) ) { + return $this->cachedInstalledVersion; + } + + $pluginHeader = $this->getPluginHeader(); + if ( isset($pluginHeader['Version']) ) { + $this->cachedInstalledVersion = $pluginHeader['Version']; + return $pluginHeader['Version']; + } else { + //This can happen if the filename points to something that is not a plugin. + $this->updateChecker->triggerError( + sprintf( + "Cannot read the Version header for '%s'. The filename is incorrect or is not a plugin.", + $this->updateChecker->pluginFile + ), + E_USER_WARNING + ); + return null; + } + } + + /** + * Clear the cached plugin version. This method can be set up as a filter (hook) and will + * return the filter argument unmodified. + * + * @param mixed $filterArgument + * @return mixed + */ + public function clearCachedVersion($filterArgument = null) { + $this->cachedInstalledVersion = null; + return $filterArgument; + } + + public function getAbsoluteDirectoryPath() { + return dirname($this->pluginAbsolutePath); + } + + /** + * Get the value of a specific plugin or theme header. + * + * @param string $headerName + * @param string $defaultValue + * @return string Either the value of the header, or $defaultValue if the header doesn't exist or is empty. + */ + public function getHeaderValue($headerName, $defaultValue = '') { + $headers = $this->getPluginHeader(); + if ( isset($headers[$headerName]) && ($headers[$headerName] !== '') ) { + return $headers[$headerName]; + } + return $defaultValue; + } + + protected function getHeaderNames() { + return array( + 'Name' => 'Plugin Name', + 'PluginURI' => 'Plugin URI', + 'Version' => 'Version', + 'Description' => 'Description', + 'Author' => 'Author', + 'AuthorURI' => 'Author URI', + 'TextDomain' => 'Text Domain', + 'DomainPath' => 'Domain Path', + 'Network' => 'Network', + + //The newest WordPress version that this plugin requires or has been tested with. + //We support several different formats for compatibility with other libraries. + 'Tested WP' => 'Tested WP', + 'Requires WP' => 'Requires WP', + 'Tested up to' => 'Tested up to', + 'Requires at least' => 'Requires at least', + ); + } + + /** + * Get the translated plugin title. + * + * @return string + */ + public function getPluginTitle() { + $title = ''; + $header = $this->getPluginHeader(); + if ( $header && !empty($header['Name']) && isset($header['TextDomain']) ) { + $title = translate($header['Name'], $header['TextDomain']); + } + return $title; + } + + /** + * Get plugin's metadata from its file header. + * + * @return array + */ + public function getPluginHeader() { + if ( !is_file($this->pluginAbsolutePath) ) { + //This can happen if the plugin filename is wrong. + $this->updateChecker->triggerError( + sprintf( + "Can't to read the plugin header for '%s'. The file does not exist.", + $this->updateChecker->pluginFile + ), + E_USER_WARNING + ); + return array(); + } + + if ( !function_exists('get_plugin_data') ) { + require_once(ABSPATH . '/wp-admin/includes/plugin.php'); + } + return get_plugin_data($this->pluginAbsolutePath, false, false); + } + + public function removeHooks() { + remove_filter('upgrader_post_install', array($this, 'clearCachedVersion')); + remove_action('delete_site_transient_update_plugins', array($this, 'clearCachedVersion')); + } + + /** + * Check if the plugin file is inside the mu-plugins directory. + * + * @return bool + */ + public function isMuPlugin() { + static $cachedResult = null; + + if ( $cachedResult === null ) { + if ( !defined('WPMU_PLUGIN_DIR') || !is_string(WPMU_PLUGIN_DIR) ) { + $cachedResult = false; + return $cachedResult; + } + + //Convert both paths to the canonical form before comparison. + $muPluginDir = realpath(WPMU_PLUGIN_DIR); + $pluginPath = realpath($this->pluginAbsolutePath); + //If realpath() fails, just normalize the syntax instead. + if (($muPluginDir === false) || ($pluginPath === false)) { + $muPluginDir = PucFactory::normalizePath(WPMU_PLUGIN_DIR); + $pluginPath = PucFactory::normalizePath($this->pluginAbsolutePath); + } + + $cachedResult = (strpos($pluginPath, $muPluginDir) === 0); + } + + return $cachedResult; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/PluginInfo.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/PluginInfo.php new file mode 100644 index 0000000..69978a6 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/PluginInfo.php @@ -0,0 +1,136 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Plugin; + +use YahnisElsts\PluginUpdateChecker\v5p3\Metadata; + +if ( !class_exists(PluginInfo::class, false) ): + + /** + * A container class for holding and transforming various plugin metadata. + * + * @author Janis Elsts + * @copyright 2016 + * @access public + */ + class PluginInfo extends Metadata { + //Most fields map directly to the contents of the plugin's info.json file. + //See the relevant docs for a description of their meaning. + public $name; + public $slug; + public $version; + public $homepage; + public $sections = array(); + public $download_url; + + public $banners; + public $icons = array(); + public $translations = array(); + + public $author; + public $author_homepage; + + public $requires; + public $tested; + public $requires_php; + public $upgrade_notice; + + public $rating; + public $num_ratings; + public $downloaded; + public $active_installs; + public $last_updated; + + public $id = 0; //The native WP.org API returns numeric plugin IDs, but they're not used for anything. + + public $filename; //Plugin filename relative to the plugins directory. + + /** + * Create a new instance of Plugin Info from JSON-encoded plugin info + * returned by an external update API. + * + * @param string $json Valid JSON string representing plugin info. + * @return self|null New instance of Plugin Info, or NULL on error. + */ + public static function fromJson($json){ + $instance = new self(); + + if ( !parent::createFromJson($json, $instance) ) { + return null; + } + + //json_decode decodes assoc. arrays as objects. We want them as arrays. + $instance->sections = (array)$instance->sections; + $instance->icons = (array)$instance->icons; + + return $instance; + } + + /** + * Very, very basic validation. + * + * @param \StdClass $apiResponse + * @return bool|\WP_Error + */ + protected function validateMetadata($apiResponse) { + if ( + !isset($apiResponse->name, $apiResponse->version) + || empty($apiResponse->name) + || empty($apiResponse->version) + ) { + return new \WP_Error( + 'puc-invalid-metadata', + "The plugin metadata file does not contain the required 'name' and/or 'version' keys." + ); + } + return true; + } + + + /** + * Transform plugin info into the format used by the native WordPress.org API + * + * @return object + */ + public function toWpFormat(){ + $info = new \stdClass; + + //The custom update API is built so that many fields have the same name and format + //as those returned by the native WordPress.org API. These can be assigned directly. + $sameFormat = array( + 'name', 'slug', 'version', 'requires', 'tested', 'rating', 'upgrade_notice', + 'num_ratings', 'downloaded', 'active_installs', 'homepage', 'last_updated', + 'requires_php', + ); + foreach($sameFormat as $field){ + if ( isset($this->$field) ) { + $info->$field = $this->$field; + } else { + $info->$field = null; + } + } + + //Other fields need to be renamed and/or transformed. + $info->download_link = $this->download_url; + $info->author = $this->getFormattedAuthor(); + $info->sections = array_merge(array('description' => ''), $this->sections); + + if ( !empty($this->banners) ) { + //WP expects an array with two keys: "high" and "low". Both are optional. + //Docs: https://wordpress.org/plugins/about/faq/#banners + $info->banners = is_object($this->banners) ? get_object_vars($this->banners) : $this->banners; + $info->banners = array_intersect_key($info->banners, array('high' => true, 'low' => true)); + } + + return $info; + } + + protected function getFormattedAuthor() { + if ( !empty($this->author_homepage) ){ + /** @noinspection HtmlUnknownTarget */ + return sprintf('<a href="%s">%s</a>', $this->author_homepage, $this->author); + } + return $this->author; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Ui.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Ui.php new file mode 100644 index 0000000..b8563ae --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Ui.php @@ -0,0 +1,294 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Plugin; + +if ( !class_exists(Ui::class, false) ): + /** + * Additional UI elements for plugins. + */ + class Ui { + private $updateChecker; + private $manualCheckErrorTransient = ''; + + /** + * @param UpdateChecker $updateChecker + */ + public function __construct($updateChecker) { + $this->updateChecker = $updateChecker; + $this->manualCheckErrorTransient = $this->updateChecker->getUniqueName('manual_check_errors'); + + add_action('admin_init', array($this, 'onAdminInit')); + } + + public function onAdminInit() { + if ( $this->updateChecker->userCanInstallUpdates() ) { + $this->handleManualCheck(); + + add_filter('plugin_row_meta', array($this, 'addViewDetailsLink'), 10, 3); + add_filter('plugin_row_meta', array($this, 'addCheckForUpdatesLink'), 10, 2); + add_action('all_admin_notices', array($this, 'displayManualCheckResult')); + } + } + + /** + * Add a "View Details" link to the plugin row in the "Plugins" page. By default, + * the new link will appear before the "Visit plugin site" link (if present). + * + * You can change the link text by using the "puc_view_details_link-$slug" filter. + * Returning an empty string from the filter will disable the link. + * + * You can change the position of the link using the + * "puc_view_details_link_position-$slug" filter. + * Returning 'before' or 'after' will place the link immediately before/after + * the "Visit plugin site" link. + * Returning 'append' places the link after any existing links at the time of the hook. + * Returning 'replace' replaces the "Visit plugin site" link. + * Returning anything else disables the link when there is a "Visit plugin site" link. + * + * If there is no "Visit plugin site" link 'append' is always used! + * + * @param array $pluginMeta Array of meta links. + * @param string $pluginFile + * @param array $pluginData Array of plugin header data. + * @return array + */ + public function addViewDetailsLink($pluginMeta, $pluginFile, $pluginData = array()) { + if ( $this->isMyPluginFile($pluginFile) && !isset($pluginData['slug']) ) { + $linkText = apply_filters($this->updateChecker->getUniqueName('view_details_link'), __('View details')); + if ( !empty($linkText) ) { + $viewDetailsLinkPosition = 'append'; + + //Find the "Visit plugin site" link (if present). + $visitPluginSiteLinkIndex = count($pluginMeta) - 1; + if ( $pluginData['PluginURI'] ) { + $escapedPluginUri = esc_url($pluginData['PluginURI']); + foreach ($pluginMeta as $linkIndex => $existingLink) { + if ( strpos($existingLink, $escapedPluginUri) !== false ) { + $visitPluginSiteLinkIndex = $linkIndex; + $viewDetailsLinkPosition = apply_filters( + $this->updateChecker->getUniqueName('view_details_link_position'), + 'before' + ); + break; + } + } + } + + $viewDetailsLink = sprintf('<a href="%s" class="thickbox open-plugin-details-modal" aria-label="%s" data-title="%s">%s</a>', + esc_url(network_admin_url('plugin-install.php?tab=plugin-information&plugin=' . urlencode($this->updateChecker->slug) . + '&TB_iframe=true&width=600&height=550')), + esc_attr(sprintf(__('More information about %s'), $pluginData['Name'])), + esc_attr($pluginData['Name']), + $linkText + ); + switch ($viewDetailsLinkPosition) { + case 'before': + array_splice($pluginMeta, $visitPluginSiteLinkIndex, 0, $viewDetailsLink); + break; + case 'after': + array_splice($pluginMeta, $visitPluginSiteLinkIndex + 1, 0, $viewDetailsLink); + break; + case 'replace': + $pluginMeta[$visitPluginSiteLinkIndex] = $viewDetailsLink; + break; + case 'append': + default: + $pluginMeta[] = $viewDetailsLink; + break; + } + } + } + return $pluginMeta; + } + + /** + * Add a "Check for updates" link to the plugin row in the "Plugins" page. By default, + * the new link will appear after the "Visit plugin site" link if present, otherwise + * after the "View plugin details" link. + * + * You can change the link text by using the "puc_manual_check_link-$slug" filter. + * Returning an empty string from the filter will disable the link. + * + * @param array $pluginMeta Array of meta links. + * @param string $pluginFile + * @return array + */ + public function addCheckForUpdatesLink($pluginMeta, $pluginFile) { + if ( $this->isMyPluginFile($pluginFile) ) { + $linkUrl = wp_nonce_url( + add_query_arg( + array( + 'puc_check_for_updates' => 1, + 'puc_slug' => $this->updateChecker->slug, + ), + self_admin_url('plugins.php') + ), + 'puc_check_for_updates' + ); + + $linkText = apply_filters( + $this->updateChecker->getUniqueName('manual_check_link'), + __('Check for updates', 'plugin-update-checker') + ); + if ( !empty($linkText) ) { + /** @noinspection HtmlUnknownTarget */ + $pluginMeta[] = sprintf('<a href="%s">%s</a>', esc_attr($linkUrl), $linkText); + } + } + return $pluginMeta; + } + + protected function isMyPluginFile($pluginFile) { + return ($pluginFile == $this->updateChecker->pluginFile) + || (!empty($this->updateChecker->muPluginFile) && ($pluginFile == $this->updateChecker->muPluginFile)); + } + + /** + * Check for updates when the user clicks the "Check for updates" link. + * + * @see self::addCheckForUpdatesLink() + * + * @return void + */ + public function handleManualCheck() { + $shouldCheck = + isset($_GET['puc_check_for_updates'], $_GET['puc_slug']) + && $_GET['puc_slug'] == $this->updateChecker->slug + && check_admin_referer('puc_check_for_updates'); + + if ( $shouldCheck ) { + $update = $this->updateChecker->checkForUpdates(); + $status = ($update === null) ? 'no_update' : 'update_available'; + $lastRequestApiErrors = $this->updateChecker->getLastRequestApiErrors(); + + if ( ($update === null) && !empty($lastRequestApiErrors) ) { + //Some errors are not critical. For example, if PUC tries to retrieve the readme.txt + //file from GitHub and gets a 404, that's an API error, but it doesn't prevent updates + //from working. Maybe the plugin simply doesn't have a readme. + //Let's only show important errors. + $foundCriticalErrors = false; + $questionableErrorCodes = array( + 'puc-github-http-error', + 'puc-gitlab-http-error', + 'puc-bitbucket-http-error', + ); + + foreach ($lastRequestApiErrors as $item) { + $wpError = $item['error']; + /** @var \WP_Error $wpError */ + if ( !in_array($wpError->get_error_code(), $questionableErrorCodes) ) { + $foundCriticalErrors = true; + break; + } + } + + if ( $foundCriticalErrors ) { + $status = 'error'; + set_site_transient($this->manualCheckErrorTransient, $lastRequestApiErrors, 60); + } + } + + wp_redirect(add_query_arg( + array( + 'puc_update_check_result' => $status, + 'puc_slug' => $this->updateChecker->slug, + ), + self_admin_url('plugins.php') + )); + exit; + } + } + + /** + * Display the results of a manual update check. + * + * @see self::handleManualCheck() + * + * You can change the result message by using the "puc_manual_check_message-$slug" filter. + */ + public function displayManualCheckResult() { + //phpcs:disable WordPress.Security.NonceVerification.Recommended -- Just displaying a message. + if ( isset($_GET['puc_update_check_result'], $_GET['puc_slug']) && ($_GET['puc_slug'] == $this->updateChecker->slug) ) { + $status = sanitize_key($_GET['puc_update_check_result']); + $title = $this->updateChecker->getInstalledPackage()->getPluginTitle(); + $noticeClass = 'updated notice-success'; + $details = ''; + + if ( $status == 'no_update' ) { + $message = sprintf(_x('The %s plugin is up to date.', 'the plugin title', 'plugin-update-checker'), $title); + } else if ( $status == 'update_available' ) { + $message = sprintf(_x('A new version of the %s plugin is available.', 'the plugin title', 'plugin-update-checker'), $title); + } else if ( $status === 'error' ) { + $message = sprintf(_x('Could not determine if updates are available for %s.', 'the plugin title', 'plugin-update-checker'), $title); + $noticeClass = 'error notice-error'; + + $details = $this->formatManualCheckErrors(get_site_transient($this->manualCheckErrorTransient)); + delete_site_transient($this->manualCheckErrorTransient); + } else { + $message = sprintf(__('Unknown update checker status "%s"', 'plugin-update-checker'), $status); + $noticeClass = 'error notice-error'; + } + + $message = esc_html($message); + + //Plugins can replace the message with their own, including adding HTML. + $message = apply_filters( + $this->updateChecker->getUniqueName('manual_check_message'), + $message, + $status + ); + + printf( + '<div class="notice %s is-dismissible"><p>%s</p>%s</div>', + esc_attr($noticeClass), + //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Was escaped above, and plugins can add HTML. + $message, + //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Contains HTML. Content should already be escaped. + $details + ); + } + //phpcs:enable + } + + /** + * Format the list of errors that were thrown during an update check. + * + * @param array $errors + * @return string + */ + protected function formatManualCheckErrors($errors) { + if ( empty($errors) ) { + return ''; + } + $output = ''; + + $showAsList = count($errors) > 1; + if ( $showAsList ) { + $output .= '<ol>'; + $formatString = '<li>%1$s <code>%2$s</code></li>'; + } else { + $formatString = '<p>%1$s <code>%2$s</code></p>'; + } + foreach ($errors as $item) { + $wpError = $item['error']; + /** @var \WP_Error $wpError */ + $output .= sprintf( + $formatString, + esc_html($wpError->get_error_message()), + esc_html($wpError->get_error_code()) + ); + } + if ( $showAsList ) { + $output .= '</ol>'; + } + + return $output; + } + + public function removeHooks() { + remove_action('admin_init', array($this, 'onAdminInit')); + remove_filter('plugin_row_meta', array($this, 'addViewDetailsLink'), 10); + remove_filter('plugin_row_meta', array($this, 'addCheckForUpdatesLink'), 10); + remove_action('all_admin_notices', array($this, 'displayManualCheckResult')); + } + } +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Update.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Update.php new file mode 100644 index 0000000..cec09cf --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/Update.php @@ -0,0 +1,116 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Plugin; + +use YahnisElsts\PluginUpdateChecker\v5p3\Update as BaseUpdate; + +if ( !class_exists(Update::class, false) ): + + /** + * A simple container class for holding information about an available update. + * + * @author Janis Elsts + * @copyright 2016 + * @access public + */ + class Update extends BaseUpdate { + public $id = 0; + public $homepage; + public $upgrade_notice; + public $tested; + public $requires_php = false; + public $icons = array(); + public $filename; //Plugin filename relative to the plugins directory. + + protected static $extraFields = array( + 'id', 'homepage', 'tested', 'requires_php', 'upgrade_notice', 'icons', 'filename', + ); + + /** + * Create a new instance of PluginUpdate from its JSON-encoded representation. + * + * @param string $json + * @return self|null + */ + public static function fromJson($json){ + //Since update-related information is simply a subset of the full plugin info, + //we can parse the update JSON as if it was a plugin info string, then copy over + //the parts that we care about. + $pluginInfo = PluginInfo::fromJson($json); + if ( $pluginInfo !== null ) { + return self::fromPluginInfo($pluginInfo); + } else { + return null; + } + } + + /** + * Create a new instance of PluginUpdate based on an instance of PluginInfo. + * Basically, this just copies a subset of fields from one object to another. + * + * @param PluginInfo $info + * @return static + */ + public static function fromPluginInfo($info){ + return static::fromObject($info); + } + + /** + * Create a new instance by copying the necessary fields from another object. + * + * @param \StdClass|PluginInfo|self $object The source object. + * @return self The new copy. + */ + public static function fromObject($object) { + $update = new self(); + $update->copyFields($object, $update); + return $update; + } + + /** + * @return string[] + */ + protected function getFieldNames() { + return array_merge(parent::getFieldNames(), self::$extraFields); + } + + /** + * Transform the update into the format used by WordPress native plugin API. + * + * @return object + */ + public function toWpFormat() { + $update = parent::toWpFormat(); + + $update->id = $this->id; + $update->url = $this->homepage; + $update->tested = $this->tested; + $update->requires_php = $this->requires_php; + $update->plugin = $this->filename; + + if ( !empty($this->upgrade_notice) ) { + $update->upgrade_notice = $this->upgrade_notice; + } + + if ( !empty($this->icons) && is_array($this->icons) ) { + //This should be an array with up to 4 keys: 'svg', '1x', '2x' and 'default'. + //Docs: https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-icons + $icons = array_intersect_key( + $this->icons, + array('svg' => true, '1x' => true, '2x' => true, 'default' => true) + ); + if ( !empty($icons) ) { + $update->icons = $icons; + + //It appears that the 'default' icon isn't used anywhere in WordPress 4.9, + //but lets set it just in case a future release needs it. + if ( !isset($update->icons['default']) ) { + $update->icons['default'] = current($update->icons); + } + } + } + + return $update; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/UpdateChecker.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/UpdateChecker.php new file mode 100644 index 0000000..2f07fa3 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Plugin/UpdateChecker.php @@ -0,0 +1,425 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Plugin; + +use YahnisElsts\PluginUpdateChecker\v5p3\InstalledPackage; +use YahnisElsts\PluginUpdateChecker\v5p3\UpdateChecker as BaseUpdateChecker; +use YahnisElsts\PluginUpdateChecker\v5p3\Scheduler; +use YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +if ( !class_exists(UpdateChecker::class, false) ): + + /** + * A custom plugin update checker. + * + * @author Janis Elsts + * @copyright 2018 + * @access public + */ + class UpdateChecker extends BaseUpdateChecker { + protected $updateTransient = 'update_plugins'; + protected $translationType = 'plugin'; + + public $pluginAbsolutePath = ''; //Full path of the main plugin file. + public $pluginFile = ''; //Plugin filename relative to the plugins directory. Many WP APIs use this to identify plugins. + public $muPluginFile = ''; //For MU plugins, the plugin filename relative to the mu-plugins directory. + + /** + * @var Package + */ + protected $package; + + private $extraUi = null; + + /** + * Class constructor. + * + * @param string $metadataUrl The URL of the plugin's metadata file. + * @param string $pluginFile Fully qualified path to the main plugin file. + * @param string $slug The plugin's 'slug'. If not specified, the filename part of $pluginFile sans '.php' will be used as the slug. + * @param integer $checkPeriod How often to check for updates (in hours). Defaults to checking every 12 hours. Set to 0 to disable automatic update checks. + * @param string $optionName Where to store book-keeping info about update checks. Defaults to 'external_updates-$slug'. + * @param string $muPluginFile Optional. The plugin filename relative to the mu-plugins directory. + */ + public function __construct($metadataUrl, $pluginFile, $slug = '', $checkPeriod = 12, $optionName = '', $muPluginFile = ''){ + $this->pluginAbsolutePath = $pluginFile; + $this->pluginFile = plugin_basename($this->pluginAbsolutePath); + $this->muPluginFile = $muPluginFile; + + //If no slug is specified, use the name of the main plugin file as the slug. + //For example, 'my-cool-plugin/cool-plugin.php' becomes 'cool-plugin'. + if ( empty($slug) ){ + $slug = basename($this->pluginFile, '.php'); + } + + //Plugin slugs must be unique. + $slugCheckFilter = 'puc_is_slug_in_use-' . $slug; + $slugUsedBy = apply_filters($slugCheckFilter, false); + if ( $slugUsedBy ) { + $this->triggerError(sprintf( + 'Plugin slug "%s" is already in use by %s. Slugs must be unique.', + $slug, + $slugUsedBy + ), E_USER_ERROR); + } + add_filter($slugCheckFilter, array($this, 'getAbsolutePath')); + + parent::__construct($metadataUrl, dirname($this->pluginFile), $slug, $checkPeriod, $optionName); + + //Backwards compatibility: If the plugin is a mu-plugin but no $muPluginFile is specified, assume + //it's the same as $pluginFile given that it's not in a subdirectory (WP only looks in the base dir). + if ( (strpbrk($this->pluginFile, '/\\') === false) && $this->isUnknownMuPlugin() ) { + $this->muPluginFile = $this->pluginFile; + } + + //To prevent a crash during plugin uninstallation, remove updater hooks when the user removes the plugin. + //Details: https://github.com/YahnisElsts/plugin-update-checker/issues/138#issuecomment-335590964 + add_action('uninstall_' . $this->pluginFile, array($this, 'removeHooks')); + + $this->extraUi = new Ui($this); + } + + /** + * Create an instance of the scheduler. + * + * @param int $checkPeriod + * @return Scheduler + */ + protected function createScheduler($checkPeriod) { + $scheduler = new Scheduler($this, $checkPeriod, array('load-plugins.php')); + register_deactivation_hook($this->pluginFile, array($scheduler, 'removeUpdaterCron')); + return $scheduler; + } + + /** + * Install the hooks required to run periodic update checks and inject update info + * into WP data structures. + * + * @return void + */ + protected function installHooks(){ + //Override requests for plugin information + add_filter('plugins_api', array($this, 'injectInfo'), 20, 3); + + parent::installHooks(); + } + + /** + * Remove update checker hooks. + * + * The intent is to prevent a fatal error that can happen if the plugin has an uninstall + * hook. During uninstallation, WP includes the main plugin file (which creates a PUC instance), + * the uninstall hook runs, WP deletes the plugin files and then updates some transients. + * If PUC hooks are still around at this time, they could throw an error while trying to + * autoload classes from files that no longer exist. + * + * The "site_transient_{$transient}" filter is the main problem here, but let's also remove + * most other PUC hooks to be safe. + * + * @internal + */ + public function removeHooks() { + parent::removeHooks(); + $this->extraUi->removeHooks(); + $this->package->removeHooks(); + + remove_filter('plugins_api', array($this, 'injectInfo'), 20); + } + + /** + * Retrieve plugin info from the configured API endpoint. + * + * @uses wp_remote_get() + * + * @param array $queryArgs Additional query arguments to append to the request. Optional. + * @return PluginInfo + */ + public function requestInfo($queryArgs = array()) { + list($pluginInfo, $result) = $this->requestMetadata( + PluginInfo::class, + 'request_info', + $queryArgs + ); + + if ( $pluginInfo !== null ) { + /** @var PluginInfo $pluginInfo */ + $pluginInfo->filename = $this->pluginFile; + $pluginInfo->slug = $this->slug; + } + + $pluginInfo = apply_filters($this->getUniqueName('request_info_result'), $pluginInfo, $result); + return $pluginInfo; + } + + /** + * Retrieve the latest update (if any) from the configured API endpoint. + * + * @uses UpdateChecker::requestInfo() + * + * @return Update|null An instance of Plugin Update, or NULL when no updates are available. + */ + public function requestUpdate() { + //For the sake of simplicity, this function just calls requestInfo() + //and transforms the result accordingly. + $pluginInfo = $this->requestInfo(array('checking_for_updates' => '1')); + if ( $pluginInfo === null ){ + return null; + } + $update = Update::fromPluginInfo($pluginInfo); + + $update = $this->filterUpdateResult($update); + + return $update; + } + + /** + * Intercept plugins_api() calls that request information about our plugin and + * use the configured API endpoint to satisfy them. + * + * @see plugins_api() + * + * @param mixed $result + * @param string $action + * @param array|object $args + * @return mixed + */ + public function injectInfo($result, $action = null, $args = null){ + $relevant = ($action == 'plugin_information') && isset($args->slug) && ( + ($args->slug == $this->slug) || ($args->slug == dirname($this->pluginFile)) + ); + if ( !$relevant ) { + return $result; + } + + $pluginInfo = $this->requestInfo(); + $this->fixSupportedWordpressVersion($pluginInfo); + + $pluginInfo = apply_filters($this->getUniqueName('pre_inject_info'), $pluginInfo); + if ( $pluginInfo ) { + return $pluginInfo->toWpFormat(); + } + + return $result; + } + + protected function shouldShowUpdates() { + //No update notifications for mu-plugins unless explicitly enabled. The MU plugin file + //is usually different from the main plugin file so the update wouldn't show up properly anyway. + return !$this->isUnknownMuPlugin(); + } + + /** + * @param \stdClass|null $updates + * @param \stdClass $updateToAdd + * @return \stdClass + */ + protected function addUpdateToList($updates, $updateToAdd) { + if ( $this->package->isMuPlugin() ) { + //WP does not support automatic update installation for mu-plugins, but we can + //still display a notice. + $updateToAdd->package = null; + } + return parent::addUpdateToList($updates, $updateToAdd); + } + + /** + * @param \stdClass|null $updates + * @return \stdClass|null + */ + protected function removeUpdateFromList($updates) { + $updates = parent::removeUpdateFromList($updates); + if ( !empty($this->muPluginFile) && isset($updates, $updates->response) ) { + unset($updates->response[$this->muPluginFile]); + } + return $updates; + } + + /** + * For plugins, the update array is indexed by the plugin filename relative to the "plugins" + * directory. Example: "plugin-name/plugin.php". + * + * @return string + */ + protected function getUpdateListKey() { + if ( $this->package->isMuPlugin() ) { + return $this->muPluginFile; + } + return $this->pluginFile; + } + + protected function getNoUpdateItemFields() { + return array_merge( + parent::getNoUpdateItemFields(), + array( + 'id' => $this->pluginFile, + 'slug' => $this->slug, + 'plugin' => $this->pluginFile, + 'icons' => array(), + 'banners' => array(), + 'banners_rtl' => array(), + 'tested' => '', + 'compatibility' => new \stdClass(), + ) + ); + } + + /** + * Alias for isBeingUpgraded(). + * + * @deprecated + * @param \WP_Upgrader|null $upgrader The upgrader that's performing the current update. + * @return bool + */ + public function isPluginBeingUpgraded($upgrader = null) { + return $this->isBeingUpgraded($upgrader); + } + + /** + * Is there an update being installed for this plugin, right now? + * + * @param \WP_Upgrader|null $upgrader + * @return bool + */ + public function isBeingUpgraded($upgrader = null) { + return $this->upgraderStatus->isPluginBeingUpgraded($this->pluginFile, $upgrader); + } + + /** + * Get the details of the currently available update, if any. + * + * If no updates are available, or if the last known update version is below or equal + * to the currently installed version, this method will return NULL. + * + * Uses cached update data. To retrieve update information straight from + * the metadata URL, call requestUpdate() instead. + * + * @return Update|null + */ + public function getUpdate() { + $update = parent::getUpdate(); + if ( isset($update) ) { + /** @var Update $update */ + $update->filename = $this->pluginFile; + } + return $update; + } + + /** + * Get the translated plugin title. + * + * @deprecated + * @return string + */ + public function getPluginTitle() { + return $this->package->getPluginTitle(); + } + + /** + * Check if the current user has the required permissions to install updates. + * + * @return bool + */ + public function userCanInstallUpdates() { + return current_user_can('update_plugins'); + } + + /** + * Check if the plugin file is inside the mu-plugins directory. + * + * @deprecated + * @return bool + */ + protected function isMuPlugin() { + return $this->package->isMuPlugin(); + } + + /** + * MU plugins are partially supported, but only when we know which file in mu-plugins + * corresponds to this plugin. + * + * @return bool + */ + protected function isUnknownMuPlugin() { + return empty($this->muPluginFile) && $this->package->isMuPlugin(); + } + + /** + * Get absolute path to the main plugin file. + * + * @return string + */ + public function getAbsolutePath() { + return $this->pluginAbsolutePath; + } + + /** + * Register a callback for filtering query arguments. + * + * The callback function should take one argument - an associative array of query arguments. + * It should return a modified array of query arguments. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callable $callback + * @return void + */ + public function addQueryArgFilter($callback){ + $this->addFilter('request_info_query_args', $callback); + } + + /** + * Register a callback for filtering arguments passed to wp_remote_get(). + * + * The callback function should take one argument - an associative array of arguments - + * and return a modified array or arguments. See the WP documentation on wp_remote_get() + * for details on what arguments are available and how they work. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callable $callback + * @return void + */ + public function addHttpRequestArgFilter($callback) { + $this->addFilter('request_info_options', $callback); + } + + /** + * Register a callback for filtering the plugin info retrieved from the external API. + * + * The callback function should take two arguments. If the plugin info was retrieved + * successfully, the first argument passed will be an instance of PluginInfo. Otherwise, + * it will be NULL. The second argument will be the corresponding return value of + * wp_remote_get (see WP docs for details). + * + * The callback function should return a new or modified instance of PluginInfo or NULL. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callable $callback + * @return void + */ + public function addResultFilter($callback) { + $this->addFilter('request_info_result', $callback, 10, 2); + } + + protected function createDebugBarExtension() { + return new DebugBar\PluginExtension($this); + } + + /** + * Create a package instance that represents this plugin or theme. + * + * @return InstalledPackage + */ + protected function createInstalledPackage() { + return new Package($this->pluginAbsolutePath, $this); + } + + /** + * @return Package + */ + public function getInstalledPackage() { + return $this->package; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/PucFactory.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/PucFactory.php new file mode 100644 index 0000000..2063277 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/PucFactory.php @@ -0,0 +1,362 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +use YahnisElsts\PluginUpdateChecker\v5p3\Plugin; +use YahnisElsts\PluginUpdateChecker\v5p3\Theme; +use YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !class_exists(PucFactory::class, false) ): + + /** + * A factory that builds update checker instances. + * + * When multiple versions of the same class have been loaded (e.g. PluginUpdateChecker 4.0 + * and 4.1), this factory will always use the latest available minor version. Register class + * versions by calling {@link PucFactory::addVersion()}. + * + * At the moment it can only build instances of the UpdateChecker class. Other classes are + * intended mainly for internal use and refer directly to specific implementations. + */ + class PucFactory { + protected static $classVersions = array(); + protected static $sorted = false; + + protected static $myMajorVersion = ''; + protected static $latestCompatibleVersion = ''; + + /** + * A wrapper method for buildUpdateChecker() that reads the metadata URL from the plugin or theme header. + * + * @param string $fullPath Full path to the main plugin file or the theme's style.css. + * @param array $args Optional arguments. Keys should match the argument names of the buildUpdateChecker() method. + * @return Plugin\UpdateChecker|Theme\UpdateChecker|Vcs\BaseChecker + */ + public static function buildFromHeader($fullPath, $args = array()) { + $fullPath = self::normalizePath($fullPath); + + //Set up defaults. + $defaults = array( + 'metadataUrl' => '', + 'slug' => '', + 'checkPeriod' => 12, + 'optionName' => '', + 'muPluginFile' => '', + ); + $args = array_merge($defaults, array_intersect_key($args, $defaults)); + extract($args, EXTR_SKIP); + + //Check for the service URI + if ( empty($metadataUrl) ) { + $metadataUrl = self::getServiceURI($fullPath); + } + + return self::buildUpdateChecker($metadataUrl, $fullPath, $slug, $checkPeriod, $optionName, $muPluginFile); + } + + /** + * Create a new instance of the update checker. + * + * This method automatically detects if you're using it for a plugin or a theme and chooses + * the appropriate implementation for your update source (JSON file, GitHub, BitBucket, etc). + * + * @see UpdateChecker::__construct + * + * @param string $metadataUrl The URL of the metadata file, a GitHub repository, or another supported update source. + * @param string $fullPath Full path to the main plugin file or to the theme directory. + * @param string $slug Custom slug. Defaults to the name of the main plugin file or the theme directory. + * @param int $checkPeriod How often to check for updates (in hours). + * @param string $optionName Where to store bookkeeping info about update checks. + * @param string $muPluginFile The plugin filename relative to the mu-plugins directory. + * @return Plugin\UpdateChecker|Theme\UpdateChecker|Vcs\BaseChecker + */ + public static function buildUpdateChecker($metadataUrl, $fullPath, $slug = '', $checkPeriod = 12, $optionName = '', $muPluginFile = '') { + $fullPath = self::normalizePath($fullPath); + $id = null; + + //Plugin or theme? + $themeDirectory = self::getThemeDirectoryName($fullPath); + if ( self::isPluginFile($fullPath) ) { + $type = 'Plugin'; + $id = $fullPath; + } else if ( $themeDirectory !== null ) { + $type = 'Theme'; + $id = $themeDirectory; + } else { + throw new \RuntimeException(sprintf( + 'The update checker cannot determine if "%s" is a plugin or a theme. ' . + 'This is a bug. Please contact the PUC developer.', + htmlentities($fullPath) + )); + } + + //Which hosting service does the URL point to? + $service = self::getVcsService($metadataUrl); + + $apiClass = null; + if ( empty($service) ) { + //The default is to get update information from a remote JSON file. + $checkerClass = $type . '\\UpdateChecker'; + } else { + //You can also use a VCS repository like GitHub. + $checkerClass = 'Vcs\\' . $type . 'UpdateChecker'; + $apiClass = $service . 'Api'; + } + + $checkerClass = self::getCompatibleClassVersion($checkerClass); + if ( $checkerClass === null ) { + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error + trigger_error( + esc_html(sprintf( + 'PUC %s does not support updates for %ss %s', + self::$latestCompatibleVersion, + strtolower($type), + $service ? ('hosted on ' . $service) : 'using JSON metadata' + )), + E_USER_ERROR + ); + } + + if ( !isset($apiClass) ) { + //Plain old update checker. + return new $checkerClass($metadataUrl, $id, $slug, $checkPeriod, $optionName, $muPluginFile); + } else { + //VCS checker + an API client. + $apiClass = self::getCompatibleClassVersion($apiClass); + if ( $apiClass === null ) { + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error + trigger_error(esc_html(sprintf( + 'PUC %s does not support %s', + self::$latestCompatibleVersion, + $service + )), E_USER_ERROR); + } + + return new $checkerClass( + new $apiClass($metadataUrl), + $id, + $slug, + $checkPeriod, + $optionName, + $muPluginFile + ); + } + } + + /** + * + * Normalize a filesystem path. Introduced in WP 3.9. + * Copying here allows use of the class on earlier versions. + * This version adapted from WP 4.8.2 (unchanged since 4.5.3) + * + * @param string $path Path to normalize. + * @return string Normalized path. + */ + public static function normalizePath($path) { + if ( function_exists('wp_normalize_path') ) { + return wp_normalize_path($path); + } + $path = str_replace('\\', '/', $path); + $path = preg_replace('|(?<=.)/+|', '/', $path); + if ( substr($path, 1, 1) === ':' ) { + $path = ucfirst($path); + } + return $path; + } + + /** + * Check if the path points to a plugin file. + * + * @param string $absolutePath Normalized path. + * @return bool + */ + protected static function isPluginFile($absolutePath) { + //Is the file inside the "plugins" or "mu-plugins" directory? + $pluginDir = self::normalizePath(WP_PLUGIN_DIR); + $muPluginDir = self::normalizePath(WPMU_PLUGIN_DIR); + if ( (strpos($absolutePath, $pluginDir) === 0) || (strpos($absolutePath, $muPluginDir) === 0) ) { + return true; + } + + //Is it a file at all? Caution: is_file() can fail if the parent dir. doesn't have the +x permission set. + if ( !is_file($absolutePath) ) { + return false; + } + + //Does it have a valid plugin header? + //This is a last-ditch check for plugins symlinked from outside the WP root. + if ( function_exists('get_file_data') ) { + $headers = get_file_data($absolutePath, array('Name' => 'Plugin Name'), 'plugin'); + return !empty($headers['Name']); + } + + return false; + } + + /** + * Get the name of the theme's directory from a full path to a file inside that directory. + * E.g. "/abc/public_html/wp-content/themes/foo/whatever.php" => "foo". + * + * Note that subdirectories are currently not supported. For example, + * "/xyz/wp-content/themes/my-theme/includes/whatever.php" => NULL. + * + * @param string $absolutePath Normalized path. + * @return string|null Directory name, or NULL if the path doesn't point to a theme. + */ + protected static function getThemeDirectoryName($absolutePath) { + if ( is_file($absolutePath) ) { + $absolutePath = dirname($absolutePath); + } + + if ( file_exists($absolutePath . '/style.css') ) { + return basename($absolutePath); + } + return null; + } + + /** + * Get the service URI from the file header. + * + * @param string $fullPath + * @return string + */ + private static function getServiceURI($fullPath) { + //Look for the URI + if ( is_readable($fullPath) ) { + $seek = array( + 'github' => 'GitHub URI', + 'gitlab' => 'GitLab URI', + 'bucket' => 'BitBucket URI', + ); + $seek = apply_filters('puc_get_source_uri', $seek); + $data = get_file_data($fullPath, $seek); + foreach ($data as $key => $uri) { + if ( $uri ) { + return $uri; + } + } + } + + //URI was not found so throw an error. + throw new \RuntimeException( + sprintf('Unable to locate URI in header of "%s"', htmlentities($fullPath)) + ); + } + + /** + * Get the name of the hosting service that the URL points to. + * + * @param string $metadataUrl + * @return string|null + */ + private static function getVcsService($metadataUrl) { + $service = null; + + //Which hosting service does the URL point to? + $host = (string)(wp_parse_url($metadataUrl, PHP_URL_HOST)); + $path = (string)(wp_parse_url($metadataUrl, PHP_URL_PATH)); + + //Check if the path looks like "/user-name/repository". + //For GitLab.com it can also be "/user/group1/group2/.../repository". + $repoRegex = '@^/?([^/]+?)/([^/#?&]+?)/?$@'; + if ( $host === 'gitlab.com' ) { + $repoRegex = '@^/?(?:[^/#?&]++/){1,20}(?:[^/#?&]++)/?$@'; + } + if ( preg_match($repoRegex, $path) ) { + $knownServices = array( + 'github.com' => 'GitHub', + 'bitbucket.org' => 'BitBucket', + 'gitlab.com' => 'GitLab', + ); + if ( isset($knownServices[$host]) ) { + $service = $knownServices[$host]; + } + } + + return apply_filters('puc_get_vcs_service', $service, $host, $path, $metadataUrl); + } + + /** + * Get the latest version of the specified class that has the same major version number + * as this factory class. + * + * @param string $class Partial class name. + * @return string|null Full class name. + */ + protected static function getCompatibleClassVersion($class) { + if ( isset(self::$classVersions[$class][self::$latestCompatibleVersion]) ) { + return self::$classVersions[$class][self::$latestCompatibleVersion]; + } + return null; + } + + /** + * Get the specific class name for the latest available version of a class. + * + * @param string $class + * @return null|string + */ + public static function getLatestClassVersion($class) { + if ( !self::$sorted ) { + self::sortVersions(); + } + + if ( isset(self::$classVersions[$class]) ) { + return reset(self::$classVersions[$class]); + } else { + return null; + } + } + + /** + * Sort available class versions in descending order (i.e. newest first). + */ + protected static function sortVersions() { + foreach ( self::$classVersions as $class => $versions ) { + uksort($versions, array(__CLASS__, 'compareVersions')); + self::$classVersions[$class] = $versions; + } + self::$sorted = true; + } + + protected static function compareVersions($a, $b) { + return -version_compare($a, $b); + } + + /** + * Register a version of a class. + * + * @access private This method is only for internal use by the library. + * + * @param string $generalClass Class name without version numbers, e.g. 'PluginUpdateChecker'. + * @param string $versionedClass Actual class name, e.g. 'PluginUpdateChecker_1_2'. + * @param string $version Version number, e.g. '1.2'. + */ + public static function addVersion($generalClass, $versionedClass, $version) { + if ( empty(self::$myMajorVersion) ) { + $lastNamespaceSegment = substr(__NAMESPACE__, strrpos(__NAMESPACE__, '\\') + 1); + self::$myMajorVersion = substr(ltrim($lastNamespaceSegment, 'v'), 0, 1); + } + + //Store the greatest version number that matches our major version. + $components = explode('.', $version); + if ( $components[0] === self::$myMajorVersion ) { + + if ( + empty(self::$latestCompatibleVersion) + || version_compare($version, self::$latestCompatibleVersion, '>') + ) { + self::$latestCompatibleVersion = $version; + } + + } + + if ( !isset(self::$classVersions[$generalClass]) ) { + self::$classVersions[$generalClass] = array(); + } + self::$classVersions[$generalClass][$version] = $versionedClass; + self::$sorted = false; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Scheduler.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Scheduler.php new file mode 100644 index 0000000..79f20f2 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Scheduler.php @@ -0,0 +1,300 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(Scheduler::class, false) ): + + /** + * The scheduler decides when and how often to check for updates. + * It calls @see UpdateChecker::checkForUpdates() to perform the actual checks. + */ + class Scheduler { + public $checkPeriod = 12; //How often to check for updates (in hours). + public $throttleRedundantChecks = false; //Check less often if we already know that an update is available. + public $throttledCheckPeriod = 72; + + protected $hourlyCheckHooks = array('load-update.php'); + + /** + * @var UpdateChecker + */ + protected $updateChecker; + + private $cronHook = null; + + /** + * Scheduler constructor. + * + * @param UpdateChecker $updateChecker + * @param int $checkPeriod How often to check for updates (in hours). + * @param array $hourlyHooks + */ + public function __construct($updateChecker, $checkPeriod, $hourlyHooks = array('load-plugins.php')) { + $this->updateChecker = $updateChecker; + $this->checkPeriod = $checkPeriod; + + //Set up the periodic update checks + $this->cronHook = $this->updateChecker->getUniqueName('cron_check_updates'); + if ( $this->checkPeriod > 0 ){ + + //Trigger the check via Cron. + //Try to use one of the default schedules if possible as it's less likely to conflict + //with other plugins and their custom schedules. + $defaultSchedules = array( + 1 => 'hourly', + 12 => 'twicedaily', + 24 => 'daily', + ); + if ( array_key_exists($this->checkPeriod, $defaultSchedules) ) { + $scheduleName = $defaultSchedules[$this->checkPeriod]; + } else { + //Use a custom cron schedule. + $scheduleName = 'every' . $this->checkPeriod . 'hours'; + //phpcs:ignore WordPress.WP.CronInterval.ChangeDetected -- WPCS fails to parse the callback. + add_filter('cron_schedules', array($this, '_addCustomSchedule')); + } + + if ( !wp_next_scheduled($this->cronHook) && !defined('WP_INSTALLING') ) { + //Randomly offset the schedule to help prevent update server traffic spikes. Without this + //most checks may happen during times of day when people are most likely to install new plugins. + $upperLimit = max($this->checkPeriod * 3600 - 15 * 60, 1); + if ( function_exists('wp_rand') ) { + $randomOffset = wp_rand(0, $upperLimit); + } else { + //This constructor may be called before wp_rand() is available. + //phpcs:ignore WordPress.WP.AlternativeFunctions.rand_rand + $randomOffset = rand(0, $upperLimit); + } + $firstCheckTime = time() - $randomOffset; + $firstCheckTime = apply_filters( + $this->updateChecker->getUniqueName('first_check_time'), + $firstCheckTime + ); + wp_schedule_event($firstCheckTime, $scheduleName, $this->cronHook); + } + add_action($this->cronHook, array($this, 'maybeCheckForUpdates')); + + //In case Cron is disabled or unreliable, we also manually trigger + //the periodic checks while the user is browsing the Dashboard. + add_action( 'admin_init', array($this, 'maybeCheckForUpdates') ); + + //Like WordPress itself, we check more often on certain pages. + /** @see wp_update_plugins */ + add_action('load-update-core.php', array($this, 'maybeCheckForUpdates')); + //phpcs:ignore Squiz.PHP.CommentedOutCode.Found -- Not actually code, just file names. + //"load-update.php" and "load-plugins.php" or "load-themes.php". + $this->hourlyCheckHooks = array_merge($this->hourlyCheckHooks, $hourlyHooks); + foreach($this->hourlyCheckHooks as $hook) { + add_action($hook, array($this, 'maybeCheckForUpdates')); + } + //This hook fires after a bulk update is complete. + add_action('upgrader_process_complete', array($this, 'removeHooksIfLibraryGone'), 1, 0); + add_action('upgrader_process_complete', array($this, 'upgraderProcessComplete'), 11, 2); + + } else { + //Periodic checks are disabled. + wp_clear_scheduled_hook($this->cronHook); + } + } + + /** + * Remove all hooks if this version of PUC has been deleted or overwritten. + * + * Callback for the "upgrader_process_complete" action. + */ + public function removeHooksIfLibraryGone() { + //Cancel all further actions if the current version of PUC has been deleted or overwritten + //by a different version during the upgrade. If we try to do anything more in that situation, + //we could trigger a fatal error by trying to autoload a deleted class. + clearstatcache(); + if ( !file_exists(__FILE__) ) { + $this->removeHooks(); + $this->updateChecker->removeHooks(); + } + } + + /** + * Runs upon the WP action upgrader_process_complete. + * + * We look at the parameters to decide whether to call maybeCheckForUpdates() or not. + * We also check if the update checker has been removed by the update. + * + * @param \WP_Upgrader $upgrader WP_Upgrader instance + * @param array $upgradeInfo extra information about the upgrade + */ + public function upgraderProcessComplete( + /** @noinspection PhpUnusedParameterInspection */ + $upgrader, $upgradeInfo + ) { + //Sanity check and limitation to relevant types. + if ( + !is_array($upgradeInfo) || !isset($upgradeInfo['type'], $upgradeInfo['action']) + || 'update' !== $upgradeInfo['action'] || !in_array($upgradeInfo['type'], array('plugin', 'theme')) + ) { + return; + } + + //Filter out notifications of upgrades that should have no bearing upon whether or not our + //current info is up-to-date. + if ( is_a($this->updateChecker, Theme\UpdateChecker::class) ) { + if ( 'theme' !== $upgradeInfo['type'] || !isset($upgradeInfo['themes']) ) { + return; + } + + //Letting too many things going through for checks is not a real problem, so we compare widely. + if ( !in_array( + strtolower($this->updateChecker->directoryName), + array_map('strtolower', $upgradeInfo['themes']) + ) ) { + return; + } + } + + if ( is_a($this->updateChecker, Plugin\UpdateChecker::class) ) { + if ( 'plugin' !== $upgradeInfo['type'] || !isset($upgradeInfo['plugins']) ) { + return; + } + + //Themes pass in directory names in the information array, but plugins use the relative plugin path. + if ( !in_array( + strtolower($this->updateChecker->directoryName), + array_map('dirname', array_map('strtolower', $upgradeInfo['plugins'])) + ) ) { + return; + } + } + + $this->maybeCheckForUpdates(); + } + + /** + * Check for updates if the configured check interval has already elapsed. + * Will use a shorter check interval on certain admin pages like "Dashboard -> Updates" or when doing cron. + * + * You can override the default behaviour by using the "puc_check_now-$slug" filter. + * The filter callback will be passed three parameters: + * - Current decision. TRUE = check updates now, FALSE = don't check now. + * - Last check time as a Unix timestamp. + * - Configured check period in hours. + * Return TRUE to check for updates immediately, or FALSE to cancel. + * + * This method is declared public because it's a hook callback. Calling it directly is not recommended. + */ + public function maybeCheckForUpdates() { + if ( empty($this->checkPeriod) ){ + return; + } + + $state = $this->updateChecker->getUpdateState(); + $shouldCheck = ($state->timeSinceLastCheck() >= $this->getEffectiveCheckPeriod()); + + if ( $shouldCheck ) { + //Sanity check: Do not proceed if one of the critical classes is missing. + //That can happen - theoretically and extremely rarely - if maybeCoreUpdate() + //is called before the old version of our plugin has been fully deleted, or + //called from an independent AJAX request during deletion. + if ( !( + class_exists(Utils::class) + && class_exists(Metadata::class) + && class_exists(Plugin\Update::class) + && class_exists(Theme\Update::class) + ) ) { + return; + } + } + + //Let plugin authors substitute their own algorithm. + $shouldCheck = apply_filters( + $this->updateChecker->getUniqueName('check_now'), + $shouldCheck, + $state->getLastCheck(), + $this->checkPeriod + ); + + if ( $shouldCheck ) { + $this->updateChecker->checkForUpdates(); + } + } + + /** + * Calculate the actual check period based on the current status and environment. + * + * @return int Check period in seconds. + */ + protected function getEffectiveCheckPeriod() { + $currentFilter = current_filter(); + if ( in_array($currentFilter, array('load-update-core.php', 'upgrader_process_complete')) ) { + //Check more often when the user visits "Dashboard -> Updates" or does a bulk update. + $period = 60; + } else if ( in_array($currentFilter, $this->hourlyCheckHooks) ) { + //Also check more often on /wp-admin/update.php and the "Plugins" or "Themes" page. + $period = 3600; + } else if ( $this->throttleRedundantChecks && ($this->updateChecker->getUpdate() !== null) ) { + //Check less frequently if it's already known that an update is available. + $period = $this->throttledCheckPeriod * 3600; + } else if ( defined('DOING_CRON') && constant('DOING_CRON') ) { + //WordPress cron schedules are not exact, so let's do an update check even + //if slightly less than $checkPeriod hours have elapsed since the last check. + $cronFuzziness = 20 * 60; + $period = $this->checkPeriod * 3600 - $cronFuzziness; + } else { + $period = $this->checkPeriod * 3600; + } + + return $period; + } + + /** + * Add our custom schedule to the array of Cron schedules used by WP. + * + * @param array $schedules + * @return array + */ + public function _addCustomSchedule($schedules) { + if ( $this->checkPeriod && ($this->checkPeriod > 0) ){ + $scheduleName = 'every' . $this->checkPeriod . 'hours'; + $schedules[$scheduleName] = array( + 'interval' => $this->checkPeriod * 3600, + 'display' => sprintf('Every %d hours', $this->checkPeriod), + ); + } + return $schedules; + } + + /** + * Remove the scheduled cron event that the library uses to check for updates. + * + * @return void + */ + public function removeUpdaterCron() { + wp_clear_scheduled_hook($this->cronHook); + } + + /** + * Get the name of the update checker's WP-cron hook. Mostly useful for debugging. + * + * @return string + */ + public function getCronHookName() { + return $this->cronHook; + } + + /** + * Remove most hooks added by the scheduler. + */ + public function removeHooks() { + remove_filter('cron_schedules', array($this, '_addCustomSchedule')); + remove_action('admin_init', array($this, 'maybeCheckForUpdates')); + remove_action('load-update-core.php', array($this, 'maybeCheckForUpdates')); + + if ( $this->cronHook !== null ) { + remove_action($this->cronHook, array($this, 'maybeCheckForUpdates')); + } + if ( !empty($this->hourlyCheckHooks) ) { + foreach ($this->hourlyCheckHooks as $hook) { + remove_action($hook, array($this, 'maybeCheckForUpdates')); + } + } + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/StateStore.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/StateStore.php new file mode 100644 index 0000000..1391111 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/StateStore.php @@ -0,0 +1,214 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(StateStore::class, false) ): + + class StateStore { + /** + * @var int Last update check timestamp. + */ + protected $lastCheck = 0; + + /** + * @var string Version number. + */ + protected $checkedVersion = ''; + + /** + * @var Update|null Cached update. + */ + protected $update = null; + + /** + * @var string Site option name. + */ + private $optionName = ''; + + /** + * @var bool Whether we've already tried to load the state from the database. + */ + private $isLoaded = false; + + public function __construct($optionName) { + $this->optionName = $optionName; + } + + /** + * Get time elapsed since the last update check. + * + * If there are no recorded update checks, this method returns a large arbitrary number + * (i.e. time since the Unix epoch). + * + * @return int Elapsed time in seconds. + */ + public function timeSinceLastCheck() { + $this->lazyLoad(); + return time() - $this->lastCheck; + } + + /** + * @return int + */ + public function getLastCheck() { + $this->lazyLoad(); + return $this->lastCheck; + } + + /** + * Set the time of the last update check to the current timestamp. + * + * @return $this + */ + public function setLastCheckToNow() { + $this->lazyLoad(); + $this->lastCheck = time(); + return $this; + } + + /** + * @return null|Update + */ + public function getUpdate() { + $this->lazyLoad(); + return $this->update; + } + + /** + * @param Update|null $update + * @return $this + */ + public function setUpdate(Update $update = null) { + $this->lazyLoad(); + $this->update = $update; + return $this; + } + + /** + * @return string + */ + public function getCheckedVersion() { + $this->lazyLoad(); + return $this->checkedVersion; + } + + /** + * @param string $version + * @return $this + */ + public function setCheckedVersion($version) { + $this->lazyLoad(); + $this->checkedVersion = strval($version); + return $this; + } + + /** + * Get translation updates. + * + * @return array + */ + public function getTranslations() { + $this->lazyLoad(); + if ( isset($this->update, $this->update->translations) ) { + return $this->update->translations; + } + return array(); + } + + /** + * Set translation updates. + * + * @param array $translationUpdates + */ + public function setTranslations($translationUpdates) { + $this->lazyLoad(); + if ( isset($this->update) ) { + $this->update->translations = $translationUpdates; + $this->save(); + } + } + + public function save() { + $state = new \stdClass(); + + $state->lastCheck = $this->lastCheck; + $state->checkedVersion = $this->checkedVersion; + + if ( isset($this->update)) { + $state->update = $this->update->toStdClass(); + + $updateClass = get_class($this->update); + $state->updateClass = $updateClass; + $prefix = $this->getLibPrefix(); + if ( Utils::startsWith($updateClass, $prefix) ) { + $state->updateBaseClass = substr($updateClass, strlen($prefix)); + } + } + + update_site_option($this->optionName, $state); + $this->isLoaded = true; + } + + /** + * @return $this + */ + public function lazyLoad() { + if ( !$this->isLoaded ) { + $this->load(); + } + return $this; + } + + protected function load() { + $this->isLoaded = true; + + $state = get_site_option($this->optionName, null); + + if ( + !is_object($state) + //Sanity check: If the Utils class is missing, the plugin is probably in the process + //of being deleted (e.g. the old version gets deleted during an update). + || !class_exists(Utils::class) + ) { + $this->lastCheck = 0; + $this->checkedVersion = ''; + $this->update = null; + return; + } + + $this->lastCheck = intval(Utils::get($state, 'lastCheck', 0)); + $this->checkedVersion = Utils::get($state, 'checkedVersion', ''); + $this->update = null; + + if ( isset($state->update) ) { + //This mess is due to the fact that the want the update class from this version + //of the library, not the version that saved the update. + + $updateClass = null; + if ( isset($state->updateBaseClass) ) { + $updateClass = $this->getLibPrefix() . $state->updateBaseClass; + } else if ( isset($state->updateClass) ) { + $updateClass = $state->updateClass; + } + + $factory = array($updateClass, 'fromObject'); + if ( ($updateClass !== null) && is_callable($factory) ) { + $this->update = call_user_func($factory, $state->update); + } + } + } + + public function delete() { + delete_site_option($this->optionName); + + $this->lastCheck = 0; + $this->checkedVersion = ''; + $this->update = null; + } + + private function getLibPrefix() { + //This assumes that the current class is at the top of the versioned namespace. + return __NAMESPACE__ . '\\'; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Package.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Package.php new file mode 100644 index 0000000..8a83f66 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Package.php @@ -0,0 +1,69 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Theme; + +use YahnisElsts\PluginUpdateChecker\v5p3\InstalledPackage; + +if ( !class_exists(Package::class, false) ): + + class Package extends InstalledPackage { + /** + * @var string Theme directory name. + */ + protected $stylesheet; + + /** + * @var \WP_Theme Theme object. + */ + protected $theme; + + public function __construct($stylesheet, $updateChecker) { + $this->stylesheet = $stylesheet; + $this->theme = wp_get_theme($this->stylesheet); + + parent::__construct($updateChecker); + } + + public function getInstalledVersion() { + return $this->theme->get('Version'); + } + + public function getAbsoluteDirectoryPath() { + if ( method_exists($this->theme, 'get_stylesheet_directory') ) { + return $this->theme->get_stylesheet_directory(); //Available since WP 3.4. + } + return get_theme_root($this->stylesheet) . '/' . $this->stylesheet; + } + + /** + * Get the value of a specific plugin or theme header. + * + * @param string $headerName + * @param string $defaultValue + * @return string Either the value of the header, or $defaultValue if the header doesn't exist or is empty. + */ + public function getHeaderValue($headerName, $defaultValue = '') { + $value = $this->theme->get($headerName); + if ( ($headerName === false) || ($headerName === '') ) { + return $defaultValue; + } + return $value; + } + + protected function getHeaderNames() { + return array( + 'Name' => 'Theme Name', + 'ThemeURI' => 'Theme URI', + 'Description' => 'Description', + 'Author' => 'Author', + 'AuthorURI' => 'Author URI', + 'Version' => 'Version', + 'Template' => 'Template', + 'Status' => 'Status', + 'Tags' => 'Tags', + 'TextDomain' => 'Text Domain', + 'DomainPath' => 'Domain Path', + ); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Update.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Update.php new file mode 100644 index 0000000..3c9dc9e --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/Update.php @@ -0,0 +1,88 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Theme; + +use YahnisElsts\PluginUpdateChecker\v5p3\Update as BaseUpdate; + +if ( !class_exists(Update::class, false) ): + + class Update extends BaseUpdate { + public $details_url = ''; + + protected static $extraFields = array('details_url'); + + /** + * Transform the metadata into the format used by WordPress core. + * Note the inconsistency: WP stores plugin updates as objects and theme updates as arrays. + * + * @return array + */ + public function toWpFormat() { + $update = array( + 'theme' => $this->slug, + 'new_version' => $this->version, + 'url' => $this->details_url, + ); + + if ( !empty($this->download_url) ) { + $update['package'] = $this->download_url; + } + + return $update; + } + + /** + * Create a new instance of Theme_Update from its JSON-encoded representation. + * + * @param string $json Valid JSON string representing a theme information object. + * @return self New instance of ThemeUpdate, or NULL on error. + */ + public static function fromJson($json) { + $instance = new self(); + if ( !parent::createFromJson($json, $instance) ) { + return null; + } + return $instance; + } + + /** + * Create a new instance by copying the necessary fields from another object. + * + * @param \StdClass|self $object The source object. + * @return self The new copy. + */ + public static function fromObject($object) { + $update = new self(); + $update->copyFields($object, $update); + return $update; + } + + /** + * Basic validation. + * + * @param \StdClass $apiResponse + * @return bool|\WP_Error + */ + protected function validateMetadata($apiResponse) { + $required = array('version', 'details_url'); + foreach($required as $key) { + if ( !isset($apiResponse->$key) || empty($apiResponse->$key) ) { + return new \WP_Error( + 'tuc-invalid-metadata', + sprintf('The theme metadata is missing the required "%s" key.', $key) + ); + } + } + return true; + } + + protected function getFieldNames() { + return array_merge(parent::getFieldNames(), self::$extraFields); + } + + protected function getPrefixedFilter($tag) { + return parent::getPrefixedFilter($tag) . '_theme'; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/UpdateChecker.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/UpdateChecker.php new file mode 100644 index 0000000..92f960f --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Theme/UpdateChecker.php @@ -0,0 +1,159 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Theme; + +use YahnisElsts\PluginUpdateChecker\v5p3\UpdateChecker as BaseUpdateChecker; +use YahnisElsts\PluginUpdateChecker\v5p3\InstalledPackage; +use YahnisElsts\PluginUpdateChecker\v5p3\Scheduler; +use YahnisElsts\PluginUpdateChecker\v5p3\DebugBar; + +if ( !class_exists(UpdateChecker::class, false) ): + + class UpdateChecker extends BaseUpdateChecker { + protected $filterSuffix = 'theme'; + protected $updateTransient = 'update_themes'; + protected $translationType = 'theme'; + + /** + * @var string Theme directory name. + */ + protected $stylesheet; + + public function __construct($metadataUrl, $stylesheet = null, $customSlug = null, $checkPeriod = 12, $optionName = '') { + if ( $stylesheet === null ) { + $stylesheet = get_stylesheet(); + } + $this->stylesheet = $stylesheet; + + parent::__construct( + $metadataUrl, + $stylesheet, + $customSlug ? $customSlug : $stylesheet, + $checkPeriod, + $optionName + ); + } + + /** + * For themes, the update array is indexed by theme directory name. + * + * @return string + */ + protected function getUpdateListKey() { + return $this->directoryName; + } + + /** + * Retrieve the latest update (if any) from the configured API endpoint. + * + * @return Update|null An instance of Update, or NULL when no updates are available. + */ + public function requestUpdate() { + list($themeUpdate, $result) = $this->requestMetadata(Update::class, 'request_update'); + + if ( $themeUpdate !== null ) { + /** @var Update $themeUpdate */ + $themeUpdate->slug = $this->slug; + } + + $themeUpdate = $this->filterUpdateResult($themeUpdate, $result); + return $themeUpdate; + } + + protected function getNoUpdateItemFields() { + return array_merge( + parent::getNoUpdateItemFields(), + array( + 'theme' => $this->directoryName, + 'requires' => '', + ) + ); + } + + public function userCanInstallUpdates() { + return current_user_can('update_themes'); + } + + /** + * Create an instance of the scheduler. + * + * @param int $checkPeriod + * @return Scheduler + */ + protected function createScheduler($checkPeriod) { + return new Scheduler($this, $checkPeriod, array('load-themes.php')); + } + + /** + * Is there an update being installed right now for this theme? + * + * @param \WP_Upgrader|null $upgrader The upgrader that's performing the current update. + * @return bool + */ + public function isBeingUpgraded($upgrader = null) { + return $this->upgraderStatus->isThemeBeingUpgraded($this->stylesheet, $upgrader); + } + + protected function createDebugBarExtension() { + return new DebugBar\Extension($this, DebugBar\ThemePanel::class); + } + + /** + * Register a callback for filtering query arguments. + * + * The callback function should take one argument - an associative array of query arguments. + * It should return a modified array of query arguments. + * + * @param callable $callback + * @return void + */ + public function addQueryArgFilter($callback){ + $this->addFilter('request_update_query_args', $callback); + } + + /** + * Register a callback for filtering arguments passed to wp_remote_get(). + * + * The callback function should take one argument - an associative array of arguments - + * and return a modified array or arguments. See the WP documentation on wp_remote_get() + * for details on what arguments are available and how they work. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callable $callback + * @return void + */ + public function addHttpRequestArgFilter($callback) { + $this->addFilter('request_update_options', $callback); + } + + /** + * Register a callback for filtering theme updates retrieved from the external API. + * + * The callback function should take two arguments. If the theme update was retrieved + * successfully, the first argument passed will be an instance of Theme_Update. Otherwise, + * it will be NULL. The second argument will be the corresponding return value of + * wp_remote_get (see WP docs for details). + * + * The callback function should return a new or modified instance of Theme_Update or NULL. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callable $callback + * @return void + */ + public function addResultFilter($callback) { + $this->addFilter('request_update_result', $callback, 10, 2); + } + + /** + * Create a package instance that represents this plugin or theme. + * + * @return InstalledPackage + */ + protected function createInstalledPackage() { + return new Package($this->stylesheet, $this); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Update.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Update.php new file mode 100644 index 0000000..994e54d --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Update.php @@ -0,0 +1,38 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +use stdClass; + +if ( !class_exists(Update::class, false) ): + + /** + * A simple container class for holding information about an available update. + * + * @author Janis Elsts + * @access public + */ + abstract class Update extends Metadata { + public $slug; + public $version; + public $download_url; + public $translations = array(); + + /** + * @return string[] + */ + protected function getFieldNames() { + return array('slug', 'version', 'download_url', 'translations'); + } + + public function toWpFormat() { + $update = new stdClass(); + + $update->slug = $this->slug; + $update->new_version = $this->version; + $update->package = $this->download_url; + + return $update; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpdateChecker.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpdateChecker.php new file mode 100644 index 0000000..c14be03 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpdateChecker.php @@ -0,0 +1,1007 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +use stdClass; +use WP_Error; + +if ( !class_exists(UpdateChecker::class, false) ): + + abstract class UpdateChecker { + protected $filterSuffix = ''; + protected $updateTransient = ''; + protected $translationType = ''; //This can be "plugin" or "theme". + + /** + * Set to TRUE to enable error reporting. Errors are raised using trigger_error() + * and should be logged to the standard PHP error log. + * @var bool + */ + public $debugMode = null; + + /** + * @var string Where to store the update info. + */ + public $optionName = ''; + + /** + * @var string The URL of the metadata file. + */ + public $metadataUrl = ''; + + /** + * @var string Plugin or theme directory name. + */ + public $directoryName = ''; + + /** + * @var string The slug that will be used in update checker hooks and remote API requests. + * Usually matches the directory name unless the plugin/theme directory has been renamed. + */ + public $slug = ''; + + /** + * @var InstalledPackage + */ + protected $package; + + /** + * @var Scheduler + */ + public $scheduler; + + /** + * @var UpgraderStatus + */ + protected $upgraderStatus; + + /** + * @var StateStore + */ + protected $updateState; + + /** + * @var array List of API errors triggered during the last checkForUpdates() call. + */ + protected $lastRequestApiErrors = array(); + + /** + * @var string|mixed The default is 0 because parse_url() can return NULL or FALSE. + */ + protected $cachedMetadataHost = 0; + + /** + * @var DebugBar\Extension|null + */ + protected $debugBarExtension = null; + + public function __construct($metadataUrl, $directoryName, $slug = null, $checkPeriod = 12, $optionName = '') { + $this->debugMode = (bool)(constant('WP_DEBUG')); + $this->metadataUrl = $metadataUrl; + $this->directoryName = $directoryName; + $this->slug = !empty($slug) ? $slug : $this->directoryName; + + $this->optionName = $optionName; + if ( empty($this->optionName) ) { + //BC: Initially the library only supported plugin updates and didn't use type prefixes + //in the option name. Lets use the same prefix-less name when possible. + if ( $this->filterSuffix === '' ) { + $this->optionName = 'external_updates-' . $this->slug; + } else { + $this->optionName = $this->getUniqueName('external_updates'); + } + } + + $this->package = $this->createInstalledPackage(); + $this->scheduler = $this->createScheduler($checkPeriod); + $this->upgraderStatus = new UpgraderStatus(); + $this->updateState = new StateStore($this->optionName); + + if ( did_action('init') ) { + $this->loadTextDomain(); + } else { + add_action('init', array($this, 'loadTextDomain')); + } + + $this->installHooks(); + } + + /** + * @internal + */ + public function loadTextDomain() { + //We're not using load_plugin_textdomain() or its siblings because figuring out where + //the library is located (plugin, mu-plugin, theme, custom wp-content paths) is messy. + $domain = 'plugin-update-checker'; + $locale = apply_filters( + 'plugin_locale', + (is_admin() && function_exists('get_user_locale')) ? get_user_locale() : get_locale(), + $domain + ); + + $moFile = $domain . '-' . $locale . '.mo'; + $path = realpath(dirname(__FILE__) . '/../../languages'); + + if ($path && file_exists($path)) { + load_textdomain($domain, $path . '/' . $moFile); + } + } + + protected function installHooks() { + //Insert our update info into the update array maintained by WP. + add_filter('site_transient_' . $this->updateTransient, array($this,'injectUpdate')); + + //Insert translation updates into the update list. + add_filter('site_transient_' . $this->updateTransient, array($this, 'injectTranslationUpdates')); + + //Clear translation updates when WP clears the update cache. + //This needs to be done directly because the library doesn't actually remove obsolete plugin updates, + //it just hides them (see getUpdate()). We can't do that with translations - too much disk I/O. + add_action( + 'delete_site_transient_' . $this->updateTransient, + array($this, 'clearCachedTranslationUpdates') + ); + + //Rename the update directory to be the same as the existing directory. + if ( $this->directoryName !== '.' ) { + add_filter('upgrader_source_selection', array($this, 'fixDirectoryName'), 10, 3); + } + + //Allow HTTP requests to the metadata URL even if it's on a local host. + add_filter('http_request_host_is_external', array($this, 'allowMetadataHost'), 10, 2); + + //DebugBar integration. + if ( did_action('plugins_loaded') ) { + $this->maybeInitDebugBar(); + } else { + add_action('plugins_loaded', array($this, 'maybeInitDebugBar')); + } + } + + /** + * Remove hooks that were added by this update checker instance. + */ + public function removeHooks() { + remove_filter('site_transient_' . $this->updateTransient, array($this,'injectUpdate')); + remove_filter('site_transient_' . $this->updateTransient, array($this, 'injectTranslationUpdates')); + remove_action( + 'delete_site_transient_' . $this->updateTransient, + array($this, 'clearCachedTranslationUpdates') + ); + + remove_filter('upgrader_source_selection', array($this, 'fixDirectoryName'), 10); + remove_filter('http_request_host_is_external', array($this, 'allowMetadataHost'), 10); + remove_action('plugins_loaded', array($this, 'maybeInitDebugBar')); + + remove_action('init', array($this, 'loadTextDomain')); + + if ( $this->scheduler ) { + $this->scheduler->removeHooks(); + } + + if ( $this->debugBarExtension ) { + $this->debugBarExtension->removeHooks(); + } + } + + /** + * Check if the current user has the required permissions to install updates. + * + * @return bool + */ + abstract public function userCanInstallUpdates(); + + /** + * Explicitly allow HTTP requests to the metadata URL. + * + * WordPress has a security feature where the HTTP API will reject all requests that are sent to + * another site hosted on the same server as the current site (IP match), a local host, or a local + * IP, unless the host exactly matches the current site. + * + * This feature is opt-in (at least in WP 4.4). Apparently some people enable it. + * + * That can be a problem when you're developing your plugin and you decide to host the update information + * on the same server as your test site. Update requests will mysteriously fail. + * + * We fix that by adding an exception for the metadata host. + * + * @param bool $allow + * @param string $host + * @return bool + */ + public function allowMetadataHost($allow, $host) { + if ( $this->cachedMetadataHost === 0 ) { + $this->cachedMetadataHost = wp_parse_url($this->metadataUrl, PHP_URL_HOST); + } + + if ( is_string($this->cachedMetadataHost) && (strtolower($host) === strtolower($this->cachedMetadataHost)) ) { + return true; + } + return $allow; + } + + /** + * Create a package instance that represents this plugin or theme. + * + * @return InstalledPackage + */ + abstract protected function createInstalledPackage(); + + /** + * @return InstalledPackage + */ + public function getInstalledPackage() { + return $this->package; + } + + /** + * Create an instance of the scheduler. + * + * This is implemented as a method to make it possible for plugins to subclass the update checker + * and substitute their own scheduler. + * + * @param int $checkPeriod + * @return Scheduler + */ + abstract protected function createScheduler($checkPeriod); + + /** + * Check for updates. The results are stored in the DB option specified in $optionName. + * + * @return Update|null + */ + public function checkForUpdates() { + $installedVersion = $this->getInstalledVersion(); + //Fail silently if we can't find the plugin/theme or read its header. + if ( $installedVersion === null ) { + $this->triggerError( + sprintf('Skipping update check for %s - installed version unknown.', $this->slug), + E_USER_WARNING + ); + return null; + } + + //Start collecting API errors. + $this->lastRequestApiErrors = array(); + add_action('puc_api_error', array($this, 'collectApiErrors'), 10, 4); + + $state = $this->updateState; + $state->setLastCheckToNow() + ->setCheckedVersion($installedVersion) + ->save(); //Save before checking in case something goes wrong + + $state->setUpdate($this->requestUpdate()); + $state->save(); + + //Stop collecting API errors. + remove_action('puc_api_error', array($this, 'collectApiErrors'), 10); + + return $this->getUpdate(); + } + + /** + * Load the update checker state from the DB. + * + * @return StateStore + */ + public function getUpdateState() { + return $this->updateState->lazyLoad(); + } + + /** + * Reset update checker state - i.e. last check time, cached update data and so on. + * + * Call this when your plugin is being uninstalled, or if you want to + * clear the update cache. + */ + public function resetUpdateState() { + $this->updateState->delete(); + } + + /** + * Get the details of the currently available update, if any. + * + * If no updates are available, or if the last known update version is below or equal + * to the currently installed version, this method will return NULL. + * + * Uses cached update data. To retrieve update information straight from + * the metadata URL, call requestUpdate() instead. + * + * @return Update|null + */ + public function getUpdate() { + $update = $this->updateState->getUpdate(); + + //Is there an update available? + if ( isset($update) ) { + //Check if the update is actually newer than the currently installed version. + $installedVersion = $this->getInstalledVersion(); + if ( ($installedVersion !== null) && version_compare($update->version, $installedVersion, '>') ){ + return $update; + } + } + return null; + } + + /** + * Retrieve the latest update (if any) from the configured API endpoint. + * + * Subclasses should run the update through filterUpdateResult before returning it. + * + * @return Update An instance of Update, or NULL when no updates are available. + */ + abstract public function requestUpdate(); + + /** + * Filter the result of a requestUpdate() call. + * + * @template T of Update + * @param T|null $update + * @param array|WP_Error|null $httpResult The value returned by wp_remote_get(), if any. + * @return T + */ + protected function filterUpdateResult($update, $httpResult = null) { + //Let plugins/themes modify the update. + $update = apply_filters($this->getUniqueName('request_update_result'), $update, $httpResult); + + $this->fixSupportedWordpressVersion($update); + + if ( isset($update, $update->translations) ) { + //Keep only those translation updates that apply to this site. + $update->translations = $this->filterApplicableTranslations($update->translations); + } + + return $update; + } + + /** + * The "Tested up to" field in the plugin metadata is supposed to be in the form of "major.minor", + * while WordPress core's list_plugin_updates() expects the $update->tested field to be an exact + * version, e.g. "major.minor.patch", to say it's compatible. In other case it shows + * "Compatibility: Unknown". + * The function mimics how wordpress.org API crafts the "tested" field out of "Tested up to". + * + * @param Metadata|null $update + */ + protected function fixSupportedWordpressVersion(Metadata $update = null) { + if ( !isset($update->tested) || !preg_match('/^\d++\.\d++$/', $update->tested) ) { + return; + } + + $actualWpVersions = array(); + + $wpVersion = $GLOBALS['wp_version']; + + if ( function_exists('get_core_updates') ) { + $coreUpdates = get_core_updates(); + if ( is_array($coreUpdates) ) { + foreach ($coreUpdates as $coreUpdate) { + if ( isset($coreUpdate->current) ) { + $actualWpVersions[] = $coreUpdate->current; + } + } + } + } + + $actualWpVersions[] = $wpVersion; + + $actualWpPatchNumber = null; + foreach ($actualWpVersions as $version) { + if ( preg_match('/^(?P<majorMinor>\d++\.\d++)(?:\.(?P<patch>\d++))?/', $version, $versionParts) ) { + if ( $versionParts['majorMinor'] === $update->tested ) { + $patch = isset($versionParts['patch']) ? intval($versionParts['patch']) : 0; + if ( $actualWpPatchNumber === null ) { + $actualWpPatchNumber = $patch; + } else { + $actualWpPatchNumber = max($actualWpPatchNumber, $patch); + } + } + } + } + if ( $actualWpPatchNumber === null ) { + $actualWpPatchNumber = 999; + } + + if ( $actualWpPatchNumber > 0 ) { + $update->tested .= '.' . $actualWpPatchNumber; + } + } + + /** + * Get the currently installed version of the plugin or theme. + * + * @return string|null Version number. + */ + public function getInstalledVersion() { + return $this->package->getInstalledVersion(); + } + + /** + * Get the full path of the plugin or theme directory. + * + * @return string + */ + public function getAbsoluteDirectoryPath() { + return $this->package->getAbsoluteDirectoryPath(); + } + + /** + * Trigger a PHP error, but only when $debugMode is enabled. + * + * @param string $message + * @param int $errorType + */ + public function triggerError($message, $errorType) { + if ( $this->isDebugModeEnabled() ) { + //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error -- Only happens in debug mode. + trigger_error(esc_html($message), $errorType); + } + } + + /** + * @return bool + */ + protected function isDebugModeEnabled() { + if ( $this->debugMode === null ) { + $this->debugMode = (bool)(constant('WP_DEBUG')); + } + return $this->debugMode; + } + + /** + * Get the full name of an update checker filter, action or DB entry. + * + * This method adds the "puc_" prefix and the "-$slug" suffix to the filter name. + * For example, "pre_inject_update" becomes "puc_pre_inject_update-plugin-slug". + * + * @param string $baseTag + * @return string + */ + public function getUniqueName($baseTag) { + $name = 'puc_' . $baseTag; + if ( $this->filterSuffix !== '' ) { + $name .= '_' . $this->filterSuffix; + } + return $name . '-' . $this->slug; + } + + /** + * Store API errors that are generated when checking for updates. + * + * @internal + * @param \WP_Error $error + * @param array|null $httpResponse + * @param string|null $url + * @param string|null $slug + */ + public function collectApiErrors($error, $httpResponse = null, $url = null, $slug = null) { + if ( isset($slug) && ($slug !== $this->slug) ) { + return; + } + + $this->lastRequestApiErrors[] = array( + 'error' => $error, + 'httpResponse' => $httpResponse, + 'url' => $url, + ); + } + + /** + * @return array + */ + public function getLastRequestApiErrors() { + return $this->lastRequestApiErrors; + } + + /* ------------------------------------------------------------------- + * PUC filters and filter utilities + * ------------------------------------------------------------------- + */ + + /** + * Register a callback for one of the update checker filters. + * + * Identical to add_filter(), except it automatically adds the "puc_" prefix + * and the "-$slug" suffix to the filter name. For example, "request_info_result" + * becomes "puc_request_info_result-your_plugin_slug". + * + * @param string $tag + * @param callable $callback + * @param int $priority + * @param int $acceptedArgs + */ + public function addFilter($tag, $callback, $priority = 10, $acceptedArgs = 1) { + add_filter($this->getUniqueName($tag), $callback, $priority, $acceptedArgs); + } + + /* ------------------------------------------------------------------- + * Inject updates + * ------------------------------------------------------------------- + */ + + /** + * Insert the latest update (if any) into the update list maintained by WP. + * + * @param \stdClass $updates Update list. + * @return \stdClass Modified update list. + */ + public function injectUpdate($updates) { + //Is there an update to insert? + $update = $this->getUpdate(); + + if ( !$this->shouldShowUpdates() ) { + $update = null; + } + + if ( !empty($update) ) { + //Let plugins filter the update info before it's passed on to WordPress. + $update = apply_filters($this->getUniqueName('pre_inject_update'), $update); + $updates = $this->addUpdateToList($updates, $update->toWpFormat()); + } else { + //Clean up any stale update info. + $updates = $this->removeUpdateFromList($updates); + //Add a placeholder item to the "no_update" list to enable auto-update support. + //If we don't do this, the option to enable automatic updates will only show up + //when an update is available. + $updates = $this->addNoUpdateItem($updates); + } + + return $updates; + } + + /** + * @param \stdClass|null $updates + * @param \stdClass|array $updateToAdd + * @return \stdClass + */ + protected function addUpdateToList($updates, $updateToAdd) { + if ( !is_object($updates) ) { + $updates = new stdClass(); + $updates->response = array(); + } + + $updates->response[$this->getUpdateListKey()] = $updateToAdd; + return $updates; + } + + /** + * @param \stdClass|null $updates + * @return \stdClass|null + */ + protected function removeUpdateFromList($updates) { + if ( isset($updates, $updates->response) ) { + unset($updates->response[$this->getUpdateListKey()]); + } + return $updates; + } + + /** + * See this post for more information: + * @link https://make.wordpress.org/core/2020/07/30/recommended-usage-of-the-updates-api-to-support-the-auto-updates-ui-for-plugins-and-themes-in-wordpress-5-5/ + * + * @param \stdClass|null $updates + * @return \stdClass + */ + protected function addNoUpdateItem($updates) { + if ( !is_object($updates) ) { + $updates = new stdClass(); + $updates->response = array(); + $updates->no_update = array(); + } else if ( !isset($updates->no_update) ) { + $updates->no_update = array(); + } + + $updates->no_update[$this->getUpdateListKey()] = (object) $this->getNoUpdateItemFields(); + + return $updates; + } + + /** + * Subclasses should override this method to add fields that are specific to plugins or themes. + * @return array + */ + protected function getNoUpdateItemFields() { + return array( + 'new_version' => $this->getInstalledVersion(), + 'url' => '', + 'package' => '', + 'requires_php' => '', + ); + } + + /** + * Get the key that will be used when adding updates to the update list that's maintained + * by the WordPress core. The list is always an associative array, but the key is different + * for plugins and themes. + * + * @return string + */ + abstract protected function getUpdateListKey(); + + /** + * Should we show available updates? + * + * Usually the answer is "yes", but there are exceptions. For example, WordPress doesn't + * support automatic updates installation for mu-plugins, so PUC usually won't show update + * notifications in that case. See the plugin-specific subclass for details. + * + * Note: This method only applies to updates that are displayed (or not) in the WordPress + * admin. It doesn't affect APIs like requestUpdate and getUpdate. + * + * @return bool + */ + protected function shouldShowUpdates() { + return true; + } + + /* ------------------------------------------------------------------- + * JSON-based update API + * ------------------------------------------------------------------- + */ + + /** + * Retrieve plugin or theme metadata from the JSON document at $this->metadataUrl. + * + * @param class-string<Update> $metaClass Parse the JSON as an instance of this class. It must have a static fromJson method. + * @param string $filterRoot + * @param array $queryArgs Additional query arguments. + * @return array<Metadata|null, array|WP_Error> A metadata instance and the value returned by wp_remote_get(). + */ + protected function requestMetadata($metaClass, $filterRoot, $queryArgs = array()) { + //Query args to append to the URL. Plugins can add their own by using a filter callback (see addQueryArgFilter()). + $queryArgs = array_merge( + array( + 'installed_version' => strval($this->getInstalledVersion()), + 'php' => phpversion(), + 'locale' => get_locale(), + ), + $queryArgs + ); + $queryArgs = apply_filters($this->getUniqueName($filterRoot . '_query_args'), $queryArgs); + + //Various options for the wp_remote_get() call. Plugins can filter these, too. + $options = array( + 'timeout' => wp_doing_cron() ? 10 : 3, + 'headers' => array( + 'Accept' => 'application/json', + ), + ); + $options = apply_filters($this->getUniqueName($filterRoot . '_options'), $options); + + //The metadata file should be at 'http://your-api.com/url/here/$slug/info.json' + $url = $this->metadataUrl; + if ( !empty($queryArgs) ){ + $url = add_query_arg($queryArgs, $url); + } + + $result = wp_remote_get($url, $options); + + $result = apply_filters($this->getUniqueName('request_metadata_http_result'), $result, $url, $options); + + //Try to parse the response + $status = $this->validateApiResponse($result); + $metadata = null; + if ( !is_wp_error($status) ){ + if ( (strpos($metaClass, '\\') === false) ) { + $metaClass = __NAMESPACE__ . '\\' . $metaClass; + } + $metadata = call_user_func(array($metaClass, 'fromJson'), $result['body']); + } else { + do_action('puc_api_error', $status, $result, $url, $this->slug); + $this->triggerError( + sprintf('The URL %s does not point to a valid metadata file. ', $url) + . $status->get_error_message(), + E_USER_WARNING + ); + } + + return array($metadata, $result); + } + + /** + * Check if $result is a successful update API response. + * + * @param array|WP_Error $result + * @return true|WP_Error + */ + protected function validateApiResponse($result) { + if ( is_wp_error($result) ) { /** @var WP_Error $result */ + return new WP_Error($result->get_error_code(), 'WP HTTP Error: ' . $result->get_error_message()); + } + + if ( !isset($result['response']['code']) ) { + return new WP_Error( + 'puc_no_response_code', + 'wp_remote_get() returned an unexpected result.' + ); + } + + if ( $result['response']['code'] !== 200 ) { + return new WP_Error( + 'puc_unexpected_response_code', + 'HTTP response code is ' . $result['response']['code'] . ' (expected: 200)' + ); + } + + if ( empty($result['body']) ) { + return new WP_Error('puc_empty_response', 'The metadata file appears to be empty.'); + } + + return true; + } + + /* ------------------------------------------------------------------- + * Language packs / Translation updates + * ------------------------------------------------------------------- + */ + + /** + * Filter a list of translation updates and return a new list that contains only updates + * that apply to the current site. + * + * @param array $translations + * @return array + */ + protected function filterApplicableTranslations($translations) { + $languages = array_flip(array_values(get_available_languages())); + $installedTranslations = $this->getInstalledTranslations(); + + $applicableTranslations = array(); + foreach ($translations as $translation) { + //Does it match one of the available core languages? + $isApplicable = array_key_exists($translation->language, $languages); + //Is it more recent than an already-installed translation? + if ( isset($installedTranslations[$translation->language]) ) { + $updateTimestamp = strtotime($translation->updated); + $installedTimestamp = strtotime($installedTranslations[$translation->language]['PO-Revision-Date']); + $isApplicable = $updateTimestamp > $installedTimestamp; + } + + if ( $isApplicable ) { + $applicableTranslations[] = $translation; + } + } + + return $applicableTranslations; + } + + /** + * Get a list of installed translations for this plugin or theme. + * + * @return array + */ + protected function getInstalledTranslations() { + if ( !function_exists('wp_get_installed_translations') ) { + return array(); + } + $installedTranslations = wp_get_installed_translations($this->translationType . 's'); + if ( isset($installedTranslations[$this->directoryName]) ) { + $installedTranslations = $installedTranslations[$this->directoryName]; + } else { + $installedTranslations = array(); + } + return $installedTranslations; + } + + /** + * Insert translation updates into the list maintained by WordPress. + * + * @param stdClass $updates + * @return stdClass + */ + public function injectTranslationUpdates($updates) { + $translationUpdates = $this->getTranslationUpdates(); + if ( empty($translationUpdates) ) { + return $updates; + } + + //Being defensive. + if ( !is_object($updates) ) { + $updates = new stdClass(); + } + if ( !isset($updates->translations) ) { + $updates->translations = array(); + } + + //In case there's a name collision with a plugin or theme hosted on wordpress.org, + //remove any preexisting updates that match our thing. + $updates->translations = array_values(array_filter( + $updates->translations, + array($this, 'isNotMyTranslation') + )); + + //Add our updates to the list. + foreach($translationUpdates as $update) { + $convertedUpdate = array_merge( + array( + 'type' => $this->translationType, + 'slug' => $this->directoryName, + 'autoupdate' => 0, + //AFAICT, WordPress doesn't actually use the "version" field for anything. + //But lets make sure it's there, just in case. + 'version' => isset($update->version) ? $update->version : ('1.' . strtotime($update->updated)), + ), + (array)$update + ); + + $updates->translations[] = $convertedUpdate; + } + + return $updates; + } + + /** + * Get a list of available translation updates. + * + * This method will return an empty array if there are no updates. + * Uses cached update data. + * + * @return array + */ + public function getTranslationUpdates() { + return $this->updateState->getTranslations(); + } + + /** + * Remove all cached translation updates. + * + * @see wp_clean_update_cache + */ + public function clearCachedTranslationUpdates() { + $this->updateState->setTranslations(array()); + } + + /** + * Filter callback. Keeps only translations that *don't* match this plugin or theme. + * + * @param array $translation + * @return bool + */ + protected function isNotMyTranslation($translation) { + $isMatch = isset($translation['type'], $translation['slug']) + && ($translation['type'] === $this->translationType) + && ($translation['slug'] === $this->directoryName); + + return !$isMatch; + } + + /* ------------------------------------------------------------------- + * Fix directory name when installing updates + * ------------------------------------------------------------------- + */ + + /** + * Rename the update directory to match the existing plugin/theme directory. + * + * When WordPress installs a plugin or theme update, it assumes that the ZIP file will contain + * exactly one directory, and that the directory name will be the same as the directory where + * the plugin or theme is currently installed. + * + * GitHub and other repositories provide ZIP downloads, but they often use directory names like + * "project-branch" or "project-tag-hash". We need to change the name to the actual plugin folder. + * + * This is a hook callback. Don't call it from a plugin. + * + * @access protected + * + * @param string $source The directory to copy to /wp-content/plugins or /wp-content/themes. Usually a subdirectory of $remoteSource. + * @param string $remoteSource WordPress has extracted the update to this directory. + * @param \WP_Upgrader $upgrader + * @return string|WP_Error + */ + public function fixDirectoryName($source, $remoteSource, $upgrader) { + global $wp_filesystem; + /** @var \WP_Filesystem_Base $wp_filesystem */ + + //Basic sanity checks. + if ( !isset($source, $remoteSource, $upgrader, $upgrader->skin, $wp_filesystem) ) { + return $source; + } + + //If WordPress is upgrading anything other than our plugin/theme, leave the directory name unchanged. + if ( !$this->isBeingUpgraded($upgrader) ) { + return $source; + } + + //Rename the source to match the existing directory. + $correctedSource = trailingslashit($remoteSource) . $this->directoryName . '/'; + if ( $source !== $correctedSource ) { + //The update archive should contain a single directory that contains the rest of plugin/theme files. + //Otherwise, WordPress will try to copy the entire working directory ($source == $remoteSource). + //We can't rename $remoteSource because that would break WordPress code that cleans up temporary files + //after update. + if ( $this->isBadDirectoryStructure($remoteSource) ) { + return new WP_Error( + 'puc-incorrect-directory-structure', + sprintf( + 'The directory structure of the update is incorrect. All files should be inside ' . + 'a directory named <span class="code">%s</span>, not at the root of the ZIP archive.', + htmlentities($this->slug) + ) + ); + } + + /** @var \WP_Upgrader_Skin $upgrader ->skin */ + $upgrader->skin->feedback(sprintf( + 'Renaming %s to %s…', + '<span class="code">' . basename($source) . '</span>', + '<span class="code">' . $this->directoryName . '</span>' + )); + + if ( $wp_filesystem->move($source, $correctedSource, true) ) { + $upgrader->skin->feedback('Directory successfully renamed.'); + return $correctedSource; + } else { + return new WP_Error( + 'puc-rename-failed', + 'Unable to rename the update to match the existing directory.' + ); + } + } + + return $source; + } + + /** + * Is there an update being installed right now, for this plugin or theme? + * + * @param \WP_Upgrader|null $upgrader The upgrader that's performing the current update. + * @return bool + */ + abstract public function isBeingUpgraded($upgrader = null); + + /** + * Check for incorrect update directory structure. An update must contain a single directory, + * all other files should be inside that directory. + * + * @param string $remoteSource Directory path. + * @return bool + */ + protected function isBadDirectoryStructure($remoteSource) { + global $wp_filesystem; + /** @var \WP_Filesystem_Base $wp_filesystem */ + + $sourceFiles = $wp_filesystem->dirlist($remoteSource); + if ( is_array($sourceFiles) ) { + $sourceFiles = array_keys($sourceFiles); + $firstFilePath = trailingslashit($remoteSource) . $sourceFiles[0]; + return (count($sourceFiles) > 1) || (!$wp_filesystem->is_dir($firstFilePath)); + } + + //Assume it's fine. + return false; + } + + /* ------------------------------------------------------------------- + * DebugBar integration + * ------------------------------------------------------------------- + */ + + /** + * Initialize the update checker Debug Bar plugin/add-on thingy. + */ + public function maybeInitDebugBar() { + if ( + class_exists('Debug_Bar', false) + && class_exists('Debug_Bar_Panel', false) + && file_exists(dirname(__FILE__) . '/DebugBar') + ) { + $this->debugBarExtension = $this->createDebugBarExtension(); + } + } + + protected function createDebugBarExtension() { + return new DebugBar\Extension($this); + } + + /** + * Display additional configuration details in the Debug Bar panel. + * + * @param DebugBar\Panel $panel + */ + public function onDisplayConfiguration($panel) { + //Do nothing. Subclasses can use this to add additional info to the panel. + } + + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpgraderStatus.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpgraderStatus.php new file mode 100644 index 0000000..81b1f4c --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/UpgraderStatus.php @@ -0,0 +1,200 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(UpgraderStatus::class, false) ): + + /** + * A utility class that helps figure out which plugin or theme WordPress is upgrading. + * + * It may seem strange to have a separate class just for that, but the task is surprisingly complicated. + * Core classes like Plugin_Upgrader don't expose the plugin file name during an in-progress update (AFAICT). + * This class uses a few workarounds and heuristics to get the file name. + */ + class UpgraderStatus { + private $currentType = null; //This must be either "plugin" or "theme". + private $currentId = null; //Plugin basename or theme directory name. + + public function __construct() { + //Keep track of which plugin/theme WordPress is currently upgrading. + add_filter('upgrader_pre_install', array($this, 'setUpgradedThing'), 10, 2); + add_filter('upgrader_package_options', array($this, 'setUpgradedPluginFromOptions'), 10, 1); + add_filter('upgrader_post_install', array($this, 'clearUpgradedThing'), 10, 1); + add_action('upgrader_process_complete', array($this, 'clearUpgradedThing'), 10, 1); + } + + /** + * Is there and update being installed RIGHT NOW, for a specific plugin? + * + * Caution: This method is unreliable. WordPress doesn't make it easy to figure out what it is upgrading, + * and upgrader implementations are liable to change without notice. + * + * @param string $pluginFile The plugin to check. + * @param \WP_Upgrader|null $upgrader The upgrader that's performing the current update. + * @return bool True if the plugin identified by $pluginFile is being upgraded. + */ + public function isPluginBeingUpgraded($pluginFile, $upgrader = null) { + return $this->isBeingUpgraded('plugin', $pluginFile, $upgrader); + } + + /** + * Is there an update being installed for a specific theme? + * + * @param string $stylesheet Theme directory name. + * @param \WP_Upgrader|null $upgrader The upgrader that's performing the current update. + * @return bool + */ + public function isThemeBeingUpgraded($stylesheet, $upgrader = null) { + return $this->isBeingUpgraded('theme', $stylesheet, $upgrader); + } + + /** + * Check if a specific theme or plugin is being upgraded. + * + * @param string $type + * @param string $id + * @param \Plugin_Upgrader|\WP_Upgrader|null $upgrader + * @return bool + */ + protected function isBeingUpgraded($type, $id, $upgrader = null) { + if ( isset($upgrader) ) { + list($currentType, $currentId) = $this->getThingBeingUpgradedBy($upgrader); + if ( $currentType !== null ) { + $this->currentType = $currentType; + $this->currentId = $currentId; + } + } + return ($this->currentType === $type) && ($this->currentId === $id); + } + + /** + * Figure out which theme or plugin is being upgraded by a WP_Upgrader instance. + * + * Returns an array with two items. The first item is the type of the thing that's being + * upgraded: "plugin" or "theme". The second item is either the plugin basename or + * the theme directory name. If we can't determine what the upgrader is doing, both items + * will be NULL. + * + * Examples: + * ['plugin', 'plugin-dir-name/plugin.php'] + * ['theme', 'theme-dir-name'] + * + * @param \Plugin_Upgrader|\WP_Upgrader $upgrader + * @return array + */ + private function getThingBeingUpgradedBy($upgrader) { + if ( !isset($upgrader, $upgrader->skin) ) { + return array(null, null); + } + + //Figure out which plugin or theme is being upgraded. + $pluginFile = null; + $themeDirectoryName = null; + + $skin = $upgrader->skin; + if ( isset($skin->theme_info) && ($skin->theme_info instanceof \WP_Theme) ) { + $themeDirectoryName = $skin->theme_info->get_stylesheet(); + } elseif ( $skin instanceof \Plugin_Upgrader_Skin ) { + if ( isset($skin->plugin) && is_string($skin->plugin) && ($skin->plugin !== '') ) { + $pluginFile = $skin->plugin; + } + } elseif ( $skin instanceof \Theme_Upgrader_Skin ) { + if ( isset($skin->theme) && is_string($skin->theme) && ($skin->theme !== '') ) { + $themeDirectoryName = $skin->theme; + } + } elseif ( isset($skin->plugin_info) && is_array($skin->plugin_info) ) { + //This case is tricky because Bulk_Plugin_Upgrader_Skin (etc) doesn't actually store the plugin + //filename anywhere. Instead, it has the plugin headers in $plugin_info. So the best we can + //do is compare those headers to the headers of installed plugins. + $pluginFile = $this->identifyPluginByHeaders($skin->plugin_info); + } + + if ( $pluginFile !== null ) { + return array('plugin', $pluginFile); + } elseif ( $themeDirectoryName !== null ) { + return array('theme', $themeDirectoryName); + } + return array(null, null); + } + + /** + * Identify an installed plugin based on its headers. + * + * @param array $searchHeaders The plugin file header to look for. + * @return string|null Plugin basename ("foo/bar.php"), or NULL if we can't identify the plugin. + */ + private function identifyPluginByHeaders($searchHeaders) { + if ( !function_exists('get_plugins') ){ + require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); + } + + $installedPlugins = get_plugins(); + $matches = array(); + foreach($installedPlugins as $pluginBasename => $headers) { + $diff1 = array_diff_assoc($headers, $searchHeaders); + $diff2 = array_diff_assoc($searchHeaders, $headers); + if ( empty($diff1) && empty($diff2) ) { + $matches[] = $pluginBasename; + } + } + + //It's possible (though very unlikely) that there could be two plugins with identical + //headers. In that case, we can't unambiguously identify the plugin that's being upgraded. + if ( count($matches) !== 1 ) { + return null; + } + + return reset($matches); + } + + /** + * @access private + * + * @param mixed $input + * @param array $hookExtra + * @return mixed Returns $input unaltered. + */ + public function setUpgradedThing($input, $hookExtra) { + if ( !empty($hookExtra['plugin']) && is_string($hookExtra['plugin']) ) { + $this->currentId = $hookExtra['plugin']; + $this->currentType = 'plugin'; + } elseif ( !empty($hookExtra['theme']) && is_string($hookExtra['theme']) ) { + $this->currentId = $hookExtra['theme']; + $this->currentType = 'theme'; + } else { + $this->currentType = null; + $this->currentId = null; + } + return $input; + } + + /** + * @access private + * + * @param array $options + * @return array + */ + public function setUpgradedPluginFromOptions($options) { + if ( isset($options['hook_extra']['plugin']) && is_string($options['hook_extra']['plugin']) ) { + $this->currentType = 'plugin'; + $this->currentId = $options['hook_extra']['plugin']; + } else { + $this->currentType = null; + $this->currentId = null; + } + return $options; + } + + /** + * @access private + * + * @param mixed $input + * @return mixed Returns $input unaltered. + */ + public function clearUpgradedThing($input = null) { + $this->currentId = null; + $this->currentType = null; + return $input; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Utils.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Utils.php new file mode 100644 index 0000000..ddacf3f --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Utils.php @@ -0,0 +1,70 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +if ( !class_exists(Utils::class, false) ): + + class Utils { + /** + * Get a value from a nested array or object based on a path. + * + * @param array|object|null $collection Get an entry from this array. + * @param array|string $path A list of array keys in hierarchy order, or a string path like "foo.bar.baz". + * @param mixed $default The value to return if the specified path is not found. + * @param string $separator Path element separator. Only applies to string paths. + * @return mixed + */ + public static function get($collection, $path, $default = null, $separator = '.') { + if ( is_string($path) ) { + $path = explode($separator, $path); + } + + //Follow the $path into $input as far as possible. + $currentValue = $collection; + foreach ($path as $node) { + if ( is_array($currentValue) && isset($currentValue[$node]) ) { + $currentValue = $currentValue[$node]; + } else if ( is_object($currentValue) && isset($currentValue->$node) ) { + $currentValue = $currentValue->$node; + } else { + return $default; + } + } + + return $currentValue; + } + + /** + * Get the first array element that is not empty. + * + * @param array $values + * @param mixed|null $default Returns this value if there are no non-empty elements. + * @return mixed|null + */ + public static function findNotEmpty($values, $default = null) { + if ( empty($values) ) { + return $default; + } + + foreach ($values as $value) { + if ( !empty($value) ) { + return $value; + } + } + + return $default; + } + + /** + * Check if the input string starts with the specified prefix. + * + * @param string $input + * @param string $prefix + * @return bool + */ + public static function startsWith($input, $prefix) { + $length = strlen($prefix); + return (substr($input, 0, $length) === $prefix); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Api.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Api.php new file mode 100644 index 0000000..ec808c1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Api.php @@ -0,0 +1,379 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +use Parsedown; +use PucReadmeParser; + +if ( !class_exists(Api::class, false) ): + + abstract class Api { + const STRATEGY_LATEST_RELEASE = 'latest_release'; + const STRATEGY_LATEST_TAG = 'latest_tag'; + const STRATEGY_STABLE_TAG = 'stable_tag'; + const STRATEGY_BRANCH = 'branch'; + + /** + * Consider all releases regardless of their version number or prerelease/upcoming + * release status. + */ + const RELEASE_FILTER_ALL = 3; + + /** + * Exclude releases that have the "prerelease" or "upcoming release" flag. + * + * This does *not* look for prerelease keywords like "beta" in the version number. + * It only uses the data provided by the API. For example, on GitHub, you can + * manually mark a release as a prerelease. + */ + const RELEASE_FILTER_SKIP_PRERELEASE = 1; + + /** + * If there are no release assets or none of them match the configured filter, + * fall back to the automatically generated source code archive. + */ + const PREFER_RELEASE_ASSETS = 1; + /** + * Skip releases that don't have any matching release assets. + */ + const REQUIRE_RELEASE_ASSETS = 2; + + protected $tagNameProperty = 'name'; + protected $slug = ''; + + /** + * @var string + */ + protected $repositoryUrl = ''; + + /** + * @var mixed Authentication details for private repositories. Format depends on service. + */ + protected $credentials = null; + + /** + * @var string The filter tag that's used to filter options passed to wp_remote_get. + * For example, "puc_request_info_options-slug" or "puc_request_update_options_theme-slug". + */ + protected $httpFilterName = ''; + + /** + * @var string The filter applied to the list of update detection strategies that + * are used to find the latest version. + */ + protected $strategyFilterName = ''; + + /** + * @var string|null + */ + protected $localDirectory = null; + + /** + * Api constructor. + * + * @param string $repositoryUrl + * @param array|string|null $credentials + */ + public function __construct($repositoryUrl, $credentials = null) { + $this->repositoryUrl = $repositoryUrl; + $this->setAuthentication($credentials); + } + + /** + * @return string + */ + public function getRepositoryUrl() { + return $this->repositoryUrl; + } + + /** + * Figure out which reference (i.e. tag or branch) contains the latest version. + * + * @param string $configBranch Start looking in this branch. + * @return null|Reference + */ + public function chooseReference($configBranch) { + $strategies = $this->getUpdateDetectionStrategies($configBranch); + + if ( !empty($this->strategyFilterName) ) { + $strategies = apply_filters( + $this->strategyFilterName, + $strategies, + $this->slug + ); + } + + foreach ($strategies as $strategy) { + $reference = call_user_func($strategy); + if ( !empty($reference) ) { + return $reference; + } + } + return null; + } + + /** + * Get an ordered list of strategies that can be used to find the latest version. + * + * The update checker will try each strategy in order until one of them + * returns a valid reference. + * + * @param string $configBranch + * @return array<callable> Array of callables that return Vcs_Reference objects. + */ + abstract protected function getUpdateDetectionStrategies($configBranch); + + /** + * Get the readme.txt file from the remote repository and parse it + * according to the plugin readme standard. + * + * @param string $ref Tag or branch name. + * @return array Parsed readme. + */ + public function getRemoteReadme($ref = 'master') { + $fileContents = $this->getRemoteFile($this->getLocalReadmeName(), $ref); + if ( empty($fileContents) ) { + return array(); + } + + $parser = new PucReadmeParser(); + return $parser->parse_readme_contents($fileContents); + } + + /** + * Get the case-sensitive name of the local readme.txt file. + * + * In most cases it should just be called "readme.txt", but some plugins call it "README.txt", + * "README.TXT", or even "Readme.txt". Most VCS are case-sensitive so we need to know the correct + * capitalization. + * + * Defaults to "readme.txt" (all lowercase). + * + * @return string + */ + public function getLocalReadmeName() { + static $fileName = null; + if ( $fileName !== null ) { + return $fileName; + } + + $fileName = 'readme.txt'; + if ( isset($this->localDirectory) ) { + $files = scandir($this->localDirectory); + if ( !empty($files) ) { + foreach ($files as $possibleFileName) { + if ( strcasecmp($possibleFileName, 'readme.txt') === 0 ) { + $fileName = $possibleFileName; + break; + } + } + } + } + return $fileName; + } + + /** + * Get a branch. + * + * @param string $branchName + * @return Reference|null + */ + abstract public function getBranch($branchName); + + /** + * Get a specific tag. + * + * @param string $tagName + * @return Reference|null + */ + abstract public function getTag($tagName); + + /** + * Get the tag that looks like the highest version number. + * (Implementations should skip pre-release versions if possible.) + * + * @return Reference|null + */ + abstract public function getLatestTag(); + + /** + * Check if a tag name string looks like a version number. + * + * @param string $name + * @return bool + */ + protected function looksLikeVersion($name) { + //Tag names may be prefixed with "v", e.g. "v1.2.3". + $name = ltrim($name, 'v'); + + //The version string must start with a number. + if ( !is_numeric(substr($name, 0, 1)) ) { + return false; + } + + //The goal is to accept any SemVer-compatible or "PHP-standardized" version number. + return (preg_match('@^(\d{1,5}?)(\.\d{1,10}?){0,4}?($|[abrdp+_\-]|\s)@i', $name) === 1); + } + + /** + * Check if a tag appears to be named like a version number. + * + * @param \stdClass $tag + * @return bool + */ + protected function isVersionTag($tag) { + $property = $this->tagNameProperty; + return isset($tag->$property) && $this->looksLikeVersion($tag->$property); + } + + /** + * Sort a list of tags as if they were version numbers. + * Tags that don't look like version number will be removed. + * + * @param \stdClass[] $tags Array of tag objects. + * @return \stdClass[] Filtered array of tags sorted in descending order. + */ + protected function sortTagsByVersion($tags) { + //Keep only those tags that look like version numbers. + $versionTags = array_filter($tags, array($this, 'isVersionTag')); + //Sort them in descending order. + usort($versionTags, array($this, 'compareTagNames')); + + return $versionTags; + } + + /** + * Compare two tags as if they were version number. + * + * @param \stdClass $tag1 Tag object. + * @param \stdClass $tag2 Another tag object. + * @return int + */ + protected function compareTagNames($tag1, $tag2) { + $property = $this->tagNameProperty; + if ( !isset($tag1->$property) ) { + return 1; + } + if ( !isset($tag2->$property) ) { + return -1; + } + return -version_compare(ltrim($tag1->$property, 'v'), ltrim($tag2->$property, 'v')); + } + + /** + * Get the contents of a file from a specific branch or tag. + * + * @param string $path File name. + * @param string $ref + * @return null|string Either the contents of the file, or null if the file doesn't exist or there's an error. + */ + abstract public function getRemoteFile($path, $ref = 'master'); + + /** + * Get the timestamp of the latest commit that changed the specified branch or tag. + * + * @param string $ref Reference name (e.g. branch or tag). + * @return string|null + */ + abstract public function getLatestCommitTime($ref); + + /** + * Get the contents of the changelog file from the repository. + * + * @param string $ref + * @param string $localDirectory Full path to the local plugin or theme directory. + * @return null|string The HTML contents of the changelog. + */ + public function getRemoteChangelog($ref, $localDirectory) { + $filename = $this->findChangelogName($localDirectory); + if ( empty($filename) ) { + return null; + } + + $changelog = $this->getRemoteFile($filename, $ref); + if ( $changelog === null ) { + return null; + } + + return Parsedown::instance()->text($changelog); + } + + /** + * Guess the name of the changelog file. + * + * @param string $directory + * @return string|null + */ + protected function findChangelogName($directory = null) { + if ( !isset($directory) ) { + $directory = $this->localDirectory; + } + if ( empty($directory) || !is_dir($directory) || ($directory === '.') ) { + return null; + } + + $possibleNames = array('CHANGES.md', 'CHANGELOG.md', 'changes.md', 'changelog.md'); + $files = scandir($directory); + $foundNames = array_intersect($possibleNames, $files); + + if ( !empty($foundNames) ) { + return reset($foundNames); + } + return null; + } + + /** + * Set authentication credentials. + * + * @param $credentials + */ + public function setAuthentication($credentials) { + $this->credentials = $credentials; + } + + public function isAuthenticationEnabled() { + return !empty($this->credentials); + } + + /** + * @param string $url + * @return string + */ + public function signDownloadUrl($url) { + return $url; + } + + /** + * @param string $filterName + */ + public function setHttpFilterName($filterName) { + $this->httpFilterName = $filterName; + } + + /** + * @param string $filterName + */ + public function setStrategyFilterName($filterName) { + $this->strategyFilterName = $filterName; + } + + /** + * @param string $directory + */ + public function setLocalDirectory($directory) { + if ( empty($directory) || !is_dir($directory) || ($directory === '.') ) { + $this->localDirectory = null; + } else { + $this->localDirectory = $directory; + } + } + + /** + * @param string $slug + */ + public function setSlug($slug) { + $this->slug = $slug; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BaseChecker.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BaseChecker.php new file mode 100644 index 0000000..d6e3f0b --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BaseChecker.php @@ -0,0 +1,29 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !interface_exists(BaseChecker::class, false) ): + + interface BaseChecker { + /** + * Set the repository branch to use for updates. Defaults to 'master'. + * + * @param string $branch + * @return $this + */ + public function setBranch($branch); + + /** + * Set authentication credentials. + * + * @param array|string $credentials + * @return $this + */ + public function setAuthentication($credentials); + + /** + * @return Api + */ + public function getVcsApi(); + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BitBucketApi.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BitBucketApi.php new file mode 100644 index 0000000..e7ed0c5 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/BitBucketApi.php @@ -0,0 +1,272 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +use YahnisElsts\PluginUpdateChecker\v5p3\OAuthSignature; +use YahnisElsts\PluginUpdateChecker\v5p3\Utils; + +if ( !class_exists(BitBucketApi::class, false) ): + + class BitBucketApi extends Api { + /** + * @var OAuthSignature + */ + private $oauth = null; + + /** + * @var string + */ + private $username; + + /** + * @var string + */ + private $repository; + + public function __construct($repositoryUrl, $credentials = array()) { + $path = wp_parse_url($repositoryUrl, PHP_URL_PATH); + if ( preg_match('@^/?(?P<username>[^/]+?)/(?P<repository>[^/#?&]+?)/?$@', $path, $matches) ) { + $this->username = $matches['username']; + $this->repository = $matches['repository']; + } else { + throw new \InvalidArgumentException('Invalid BitBucket repository URL: "' . $repositoryUrl . '"'); + } + + parent::__construct($repositoryUrl, $credentials); + } + + protected function getUpdateDetectionStrategies($configBranch) { + $strategies = array( + self::STRATEGY_STABLE_TAG => function () use ($configBranch) { + return $this->getStableTag($configBranch); + }, + ); + + if ( ($configBranch === 'master' || $configBranch === 'main') ) { + $strategies[self::STRATEGY_LATEST_TAG] = array($this, 'getLatestTag'); + } + + $strategies[self::STRATEGY_BRANCH] = function () use ($configBranch) { + return $this->getBranch($configBranch); + }; + return $strategies; + } + + public function getBranch($branchName) { + $branch = $this->api('/refs/branches/' . $branchName); + if ( is_wp_error($branch) || empty($branch) ) { + return null; + } + + //The "/src/{stuff}/{path}" endpoint doesn't seem to handle branch names that contain slashes. + //If we don't encode the slash, we get a 404. If we encode it as "%2F", we get a 401. + //To avoid issues, if the branch name is not URL-safe, let's use the commit hash instead. + $ref = $branch->name; + if ((urlencode($ref) !== $ref) && isset($branch->target->hash)) { + $ref = $branch->target->hash; + } + + return new Reference(array( + 'name' => $ref, + 'updated' => $branch->target->date, + 'downloadUrl' => $this->getDownloadUrl($branch->name), + )); + } + + /** + * Get a specific tag. + * + * @param string $tagName + * @return Reference|null + */ + public function getTag($tagName) { + $tag = $this->api('/refs/tags/' . $tagName); + if ( is_wp_error($tag) || empty($tag) ) { + return null; + } + + return new Reference(array( + 'name' => $tag->name, + 'version' => ltrim($tag->name, 'v'), + 'updated' => $tag->target->date, + 'downloadUrl' => $this->getDownloadUrl($tag->name), + )); + } + + /** + * Get the tag that looks like the highest version number. + * + * @return Reference|null + */ + public function getLatestTag() { + $tags = $this->api('/refs/tags?sort=-target.date'); + if ( !isset($tags, $tags->values) || !is_array($tags->values) ) { + return null; + } + + //Filter and sort the list of tags. + $versionTags = $this->sortTagsByVersion($tags->values); + + //Return the first result. + if ( !empty($versionTags) ) { + $tag = $versionTags[0]; + return new Reference(array( + 'name' => $tag->name, + 'version' => ltrim($tag->name, 'v'), + 'updated' => $tag->target->date, + 'downloadUrl' => $this->getDownloadUrl($tag->name), + )); + } + return null; + } + + /** + * Get the tag/ref specified by the "Stable tag" header in the readme.txt of a given branch. + * + * @param string $branch + * @return null|Reference + */ + protected function getStableTag($branch) { + $remoteReadme = $this->getRemoteReadme($branch); + if ( !empty($remoteReadme['stable_tag']) ) { + $tag = $remoteReadme['stable_tag']; + + //You can explicitly opt out of using tags by setting "Stable tag" to + //"trunk" or the name of the current branch. + if ( ($tag === $branch) || ($tag === 'trunk') ) { + return $this->getBranch($branch); + } + + return $this->getTag($tag); + } + + return null; + } + + /** + * @param string $ref + * @return string + */ + protected function getDownloadUrl($ref) { + return sprintf( + 'https://bitbucket.org/%s/%s/get/%s.zip', + $this->username, + $this->repository, + $ref + ); + } + + /** + * Get the contents of a file from a specific branch or tag. + * + * @param string $path File name. + * @param string $ref + * @return null|string Either the contents of the file, or null if the file doesn't exist or there's an error. + */ + public function getRemoteFile($path, $ref = 'master') { + $response = $this->api('src/' . $ref . '/' . ltrim($path)); + if ( is_wp_error($response) || !is_string($response) ) { + return null; + } + return $response; + } + + /** + * Get the timestamp of the latest commit that changed the specified branch or tag. + * + * @param string $ref Reference name (e.g. branch or tag). + * @return string|null + */ + public function getLatestCommitTime($ref) { + $response = $this->api('commits/' . $ref); + if ( isset($response->values, $response->values[0], $response->values[0]->date) ) { + return $response->values[0]->date; + } + return null; + } + + /** + * Perform a BitBucket API 2.0 request. + * + * @param string $url + * @param string $version + * @return mixed|\WP_Error + */ + public function api($url, $version = '2.0') { + $url = ltrim($url, '/'); + $isSrcResource = Utils::startsWith($url, 'src/'); + + $url = implode('/', array( + 'https://api.bitbucket.org', + $version, + 'repositories', + $this->username, + $this->repository, + $url + )); + $baseUrl = $url; + + if ( $this->oauth ) { + $url = $this->oauth->sign($url,'GET'); + } + + $options = array('timeout' => wp_doing_cron() ? 10 : 3); + if ( !empty($this->httpFilterName) ) { + $options = apply_filters($this->httpFilterName, $options); + } + $response = wp_remote_get($url, $options); + if ( is_wp_error($response) ) { + do_action('puc_api_error', $response, null, $url, $this->slug); + return $response; + } + + $code = wp_remote_retrieve_response_code($response); + $body = wp_remote_retrieve_body($response); + if ( $code === 200 ) { + if ( $isSrcResource ) { + //Most responses are JSON-encoded, but src resources just + //return raw file contents. + $document = $body; + } else { + $document = json_decode($body); + } + return $document; + } + + $error = new \WP_Error( + 'puc-bitbucket-http-error', + sprintf('BitBucket API error. Base URL: "%s", HTTP status code: %d.', $baseUrl, $code) + ); + do_action('puc_api_error', $error, $response, $url, $this->slug); + + return $error; + } + + /** + * @param array $credentials + */ + public function setAuthentication($credentials) { + parent::setAuthentication($credentials); + + if ( !empty($credentials) && !empty($credentials['consumer_key']) ) { + $this->oauth = new OAuthSignature( + $credentials['consumer_key'], + $credentials['consumer_secret'] + ); + } else { + $this->oauth = null; + } + } + + public function signDownloadUrl($url) { + //Add authentication data to download URLs. Since OAuth signatures incorporate + //timestamps, we have to do this immediately before inserting the update. Otherwise, + //authentication could fail due to a stale timestamp. + if ( $this->oauth ) { + $url = $this->oauth->sign($url); + } + return $url; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitHubApi.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitHubApi.php new file mode 100644 index 0000000..4858ab0 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitHubApi.php @@ -0,0 +1,467 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +use Parsedown; + +if ( !class_exists(GitHubApi::class, false) ): + + class GitHubApi extends Api { + use ReleaseAssetSupport; + use ReleaseFilteringFeature; + + /** + * @var string GitHub username. + */ + protected $userName; + /** + * @var string GitHub repository name. + */ + protected $repositoryName; + + /** + * @var string Either a fully qualified repository URL, or just "user/repo-name". + */ + protected $repositoryUrl; + + /** + * @var string GitHub authentication token. Optional. + */ + protected $accessToken; + + /** + * @var bool + */ + private $downloadFilterAdded = false; + + public function __construct($repositoryUrl, $accessToken = null) { + $path = wp_parse_url($repositoryUrl, PHP_URL_PATH); + if ( preg_match('@^/?(?P<username>[^/]+?)/(?P<repository>[^/#?&]+?)/?$@', $path, $matches) ) { + $this->userName = $matches['username']; + $this->repositoryName = $matches['repository']; + } else { + throw new \InvalidArgumentException('Invalid GitHub repository URL: "' . $repositoryUrl . '"'); + } + + parent::__construct($repositoryUrl, $accessToken); + } + + /** + * Get the latest release from GitHub. + * + * @return Reference|null + */ + public function getLatestRelease() { + //The "latest release" endpoint returns one release and always skips pre-releases, + //so we can only use it if that's compatible with the current filter settings. + if ( + $this->shouldSkipPreReleases() + && ( + ($this->releaseFilterMaxReleases === 1) || !$this->hasCustomReleaseFilter() + ) + ) { + //Just get the latest release. + $release = $this->api('/repos/:user/:repo/releases/latest'); + if ( is_wp_error($release) || !is_object($release) || !isset($release->tag_name) ) { + return null; + } + $foundReleases = array($release); + } else { + //Get a list of the most recent releases. + $foundReleases = $this->api( + '/repos/:user/:repo/releases', + array('per_page' => $this->releaseFilterMaxReleases) + ); + if ( is_wp_error($foundReleases) || !is_array($foundReleases) ) { + return null; + } + } + + foreach ($foundReleases as $release) { + //Always skip drafts. + if ( isset($release->draft) && !empty($release->draft) ) { + continue; + } + + //Skip pre-releases unless specifically included. + if ( + $this->shouldSkipPreReleases() + && isset($release->prerelease) + && !empty($release->prerelease) + ) { + continue; + } + + $versionNumber = ltrim($release->tag_name, 'v'); //Remove the "v" prefix from "v1.2.3". + + //Custom release filtering. + if ( !$this->matchesCustomReleaseFilter($versionNumber, $release) ) { + continue; + } + + $reference = new Reference(array( + 'name' => $release->tag_name, + 'version' => $versionNumber, + 'downloadUrl' => $release->zipball_url, + 'updated' => $release->created_at, + 'apiResponse' => $release, + )); + + if ( isset($release->assets[0]) ) { + $reference->downloadCount = $release->assets[0]->download_count; + } + + if ( $this->releaseAssetsEnabled ) { + //Use the first release asset that matches the specified regular expression. + if ( isset($release->assets, $release->assets[0]) ) { + $matchingAssets = array_values(array_filter($release->assets, array($this, 'matchesAssetFilter'))); + } else { + $matchingAssets = array(); + } + + if ( !empty($matchingAssets) ) { + if ( $this->isAuthenticationEnabled() ) { + /** + * Keep in mind that we'll need to add an "Accept" header to download this asset. + * + * @see setUpdateDownloadHeaders() + */ + $reference->downloadUrl = $matchingAssets[0]->url; + } else { + //It seems that browser_download_url only works for public repositories. + //Using an access_token doesn't help. Maybe OAuth would work? + $reference->downloadUrl = $matchingAssets[0]->browser_download_url; + } + + $reference->downloadCount = $matchingAssets[0]->download_count; + } else if ( $this->releaseAssetPreference === Api::REQUIRE_RELEASE_ASSETS ) { + //None of the assets match the filter, and we're not allowed + //to fall back to the auto-generated source ZIP. + return null; + } + } + + if ( !empty($release->body) ) { + $reference->changelog = Parsedown::instance()->text($release->body); + } + + return $reference; + } + + return null; + } + + /** + * Get the tag that looks like the highest version number. + * + * @return Reference|null + */ + public function getLatestTag() { + $tags = $this->api('/repos/:user/:repo/tags'); + + if ( is_wp_error($tags) || !is_array($tags) ) { + return null; + } + + $versionTags = $this->sortTagsByVersion($tags); + if ( empty($versionTags) ) { + return null; + } + + $tag = $versionTags[0]; + return new Reference(array( + 'name' => $tag->name, + 'version' => ltrim($tag->name, 'v'), + 'downloadUrl' => $tag->zipball_url, + 'apiResponse' => $tag, + )); + } + + /** + * Get a branch by name. + * + * @param string $branchName + * @return null|Reference + */ + public function getBranch($branchName) { + $branch = $this->api('/repos/:user/:repo/branches/' . $branchName); + if ( is_wp_error($branch) || empty($branch) ) { + return null; + } + + $reference = new Reference(array( + 'name' => $branch->name, + 'downloadUrl' => $this->buildArchiveDownloadUrl($branch->name), + 'apiResponse' => $branch, + )); + + if ( isset($branch->commit, $branch->commit->commit, $branch->commit->commit->author->date) ) { + $reference->updated = $branch->commit->commit->author->date; + } + + return $reference; + } + + /** + * Get the latest commit that changed the specified file. + * + * @param string $filename + * @param string $ref Reference name (e.g. branch or tag). + * @return \StdClass|null + */ + public function getLatestCommit($filename, $ref = 'master') { + $commits = $this->api( + '/repos/:user/:repo/commits', + array( + 'path' => $filename, + 'sha' => $ref, + ) + ); + if ( !is_wp_error($commits) && isset($commits[0]) ) { + return $commits[0]; + } + return null; + } + + /** + * Get the timestamp of the latest commit that changed the specified branch or tag. + * + * @param string $ref Reference name (e.g. branch or tag). + * @return string|null + */ + public function getLatestCommitTime($ref) { + $commits = $this->api('/repos/:user/:repo/commits', array('sha' => $ref)); + if ( !is_wp_error($commits) && isset($commits[0]) ) { + return $commits[0]->commit->author->date; + } + return null; + } + + /** + * Perform a GitHub API request. + * + * @param string $url + * @param array $queryParams + * @return mixed|\WP_Error + */ + protected function api($url, $queryParams = array()) { + $baseUrl = $url; + $url = $this->buildApiUrl($url, $queryParams); + + $options = array('timeout' => wp_doing_cron() ? 10 : 3); + if ( $this->isAuthenticationEnabled() ) { + $options['headers'] = array('Authorization' => $this->getAuthorizationHeader()); + } + + if ( !empty($this->httpFilterName) ) { + $options = apply_filters($this->httpFilterName, $options); + } + $response = wp_remote_get($url, $options); + if ( is_wp_error($response) ) { + do_action('puc_api_error', $response, null, $url, $this->slug); + return $response; + } + + $code = wp_remote_retrieve_response_code($response); + $body = wp_remote_retrieve_body($response); + if ( $code === 200 ) { + $document = json_decode($body); + return $document; + } + + $error = new \WP_Error( + 'puc-github-http-error', + sprintf('GitHub API error. Base URL: "%s", HTTP status code: %d.', $baseUrl, $code) + ); + do_action('puc_api_error', $error, $response, $url, $this->slug); + + return $error; + } + + /** + * Build a fully qualified URL for an API request. + * + * @param string $url + * @param array $queryParams + * @return string + */ + protected function buildApiUrl($url, $queryParams) { + $variables = array( + 'user' => $this->userName, + 'repo' => $this->repositoryName, + ); + foreach ($variables as $name => $value) { + $url = str_replace('/:' . $name, '/' . urlencode($value), $url); + } + $url = 'https://api.github.com' . $url; + + if ( !empty($queryParams) ) { + $url = add_query_arg($queryParams, $url); + } + + return $url; + } + + /** + * Get the contents of a file from a specific branch or tag. + * + * @param string $path File name. + * @param string $ref + * @return null|string Either the contents of the file, or null if the file doesn't exist or there's an error. + */ + public function getRemoteFile($path, $ref = 'master') { + $apiUrl = '/repos/:user/:repo/contents/' . $path; + $response = $this->api($apiUrl, array('ref' => $ref)); + + if ( is_wp_error($response) || !isset($response->content) || ($response->encoding !== 'base64') ) { + return null; + } + return base64_decode($response->content); + } + + /** + * Generate a URL to download a ZIP archive of the specified branch/tag/etc. + * + * @param string $ref + * @return string + */ + public function buildArchiveDownloadUrl($ref = 'master') { + $url = sprintf( + 'https://api.github.com/repos/%1$s/%2$s/zipball/%3$s', + urlencode($this->userName), + urlencode($this->repositoryName), + urlencode($ref) + ); + return $url; + } + + /** + * Get a specific tag. + * + * @param string $tagName + * @return void + */ + public function getTag($tagName) { + //The current GitHub update checker doesn't use getTag, so I didn't bother to implement it. + throw new \LogicException('The ' . __METHOD__ . ' method is not implemented and should not be used.'); + } + + public function setAuthentication($credentials) { + parent::setAuthentication($credentials); + $this->accessToken = is_string($credentials) ? $credentials : null; + + //Optimization: Instead of filtering all HTTP requests, let's do it only when + //WordPress is about to download an update. + add_filter('upgrader_pre_download', array($this, 'addHttpRequestFilter'), 10, 1); //WP 3.7+ + } + + protected function getUpdateDetectionStrategies($configBranch) { + $strategies = array(); + + if ( $configBranch === 'master' || $configBranch === 'main') { + //Use the latest release. + $strategies[self::STRATEGY_LATEST_RELEASE] = array($this, 'getLatestRelease'); + //Failing that, use the tag with the highest version number. + $strategies[self::STRATEGY_LATEST_TAG] = array($this, 'getLatestTag'); + } + + //Alternatively, just use the branch itself. + $strategies[self::STRATEGY_BRANCH] = function () use ($configBranch) { + return $this->getBranch($configBranch); + }; + + return $strategies; + } + + /** + * Get the unchanging part of a release asset URL. Used to identify download attempts. + * + * @return string + */ + protected function getAssetApiBaseUrl() { + return sprintf( + '//api.github.com/repos/%1$s/%2$s/releases/assets/', + $this->userName, + $this->repositoryName + ); + } + + protected function getFilterableAssetName($releaseAsset) { + if ( isset($releaseAsset->name) ) { + return $releaseAsset->name; + } + return null; + } + + /** + * @param bool $result + * @return bool + * @internal + */ + public function addHttpRequestFilter($result) { + if ( !$this->downloadFilterAdded && $this->isAuthenticationEnabled() ) { + //phpcs:ignore WordPressVIPMinimum.Hooks.RestrictedHooks.http_request_args -- The callback doesn't change the timeout. + add_filter('http_request_args', array($this, 'setUpdateDownloadHeaders'), 10, 2); + add_action('requests-requests.before_redirect', array($this, 'removeAuthHeaderFromRedirects'), 10, 4); + $this->downloadFilterAdded = true; + } + return $result; + } + + /** + * Set the HTTP headers that are necessary to download updates from private repositories. + * + * See GitHub docs: + * + * @link https://developer.github.com/v3/repos/releases/#get-a-single-release-asset + * @link https://developer.github.com/v3/auth/#basic-authentication + * + * @internal + * @param array $requestArgs + * @param string $url + * @return array + */ + public function setUpdateDownloadHeaders($requestArgs, $url = '') { + //Is WordPress trying to download one of our release assets? + if ( $this->releaseAssetsEnabled && (strpos($url, $this->getAssetApiBaseUrl()) !== false) ) { + $requestArgs['headers']['Accept'] = 'application/octet-stream'; + } + //Use Basic authentication, but only if the download is from our repository. + $repoApiBaseUrl = $this->buildApiUrl('/repos/:user/:repo/', array()); + if ( $this->isAuthenticationEnabled() && (strpos($url, $repoApiBaseUrl)) === 0 ) { + $requestArgs['headers']['Authorization'] = $this->getAuthorizationHeader(); + } + return $requestArgs; + } + + /** + * When following a redirect, the Requests library will automatically forward + * the authorization header to other hosts. We don't want that because it breaks + * AWS downloads and can leak authorization information. + * + * @param string $location + * @param array $headers + * @internal + */ + public function removeAuthHeaderFromRedirects(&$location, &$headers) { + $repoApiBaseUrl = $this->buildApiUrl('/repos/:user/:repo/', array()); + if ( strpos($location, $repoApiBaseUrl) === 0 ) { + return; //This request is going to GitHub, so it's fine. + } + //Remove the header. + if ( isset($headers['Authorization']) ) { + unset($headers['Authorization']); + } + } + + /** + * Generate the value of the "Authorization" header. + * + * @return string + */ + protected function getAuthorizationHeader() { + return 'Basic ' . base64_encode($this->userName . ':' . $this->accessToken); + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitLabApi.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitLabApi.php new file mode 100644 index 0000000..ee07149 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/GitLabApi.php @@ -0,0 +1,414 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !class_exists(GitLabApi::class, false) ): + + class GitLabApi extends Api { + use ReleaseAssetSupport; + use ReleaseFilteringFeature; + + /** + * @var string GitLab username. + */ + protected $userName; + + /** + * @var string GitLab server host. + */ + protected $repositoryHost; + + /** + * @var string Protocol used by this GitLab server: "http" or "https". + */ + protected $repositoryProtocol = 'https'; + + /** + * @var string GitLab repository name. + */ + protected $repositoryName; + + /** + * @var string GitLab authentication token. Optional. + */ + protected $accessToken; + + /** + * @deprecated + * @var bool No longer used. + */ + protected $releasePackageEnabled = false; + + public function __construct($repositoryUrl, $accessToken = null, $subgroup = null) { + //Parse the repository host to support custom hosts. + $port = wp_parse_url($repositoryUrl, PHP_URL_PORT); + if ( !empty($port) ) { + $port = ':' . $port; + } + $this->repositoryHost = wp_parse_url($repositoryUrl, PHP_URL_HOST) . $port; + + if ( $this->repositoryHost !== 'gitlab.com' ) { + $this->repositoryProtocol = wp_parse_url($repositoryUrl, PHP_URL_SCHEME); + } + + //Find the repository information + $path = wp_parse_url($repositoryUrl, PHP_URL_PATH); + if ( preg_match('@^/?(?P<username>[^/]+?)/(?P<repository>[^/#?&]+?)/?$@', $path, $matches) ) { + $this->userName = $matches['username']; + $this->repositoryName = $matches['repository']; + } elseif ( ($this->repositoryHost === 'gitlab.com') ) { + //This is probably a repository in a subgroup, e.g. "/organization/category/repo". + $parts = explode('/', trim($path, '/')); + if ( count($parts) < 3 ) { + throw new \InvalidArgumentException('Invalid GitLab.com repository URL: "' . $repositoryUrl . '"'); + } + $lastPart = array_pop($parts); + $this->userName = implode('/', $parts); + $this->repositoryName = $lastPart; + } else { + //There could be subgroups in the URL: gitlab.domain.com/group/subgroup/subgroup2/repository + if ( $subgroup !== null ) { + $path = str_replace(trailingslashit($subgroup), '', $path); + } + + //This is not a traditional url, it could be gitlab is in a deeper subdirectory. + //Get the path segments. + $segments = explode('/', untrailingslashit(ltrim($path, '/'))); + + //We need at least /user-name/repository-name/ + if ( count($segments) < 2 ) { + throw new \InvalidArgumentException('Invalid GitLab repository URL: "' . $repositoryUrl . '"'); + } + + //Get the username and repository name. + $usernameRepo = array_splice($segments, -2, 2); + $this->userName = $usernameRepo[0]; + $this->repositoryName = $usernameRepo[1]; + + //Append the remaining segments to the host if there are segments left. + if ( count($segments) > 0 ) { + $this->repositoryHost = trailingslashit($this->repositoryHost) . implode('/', $segments); + } + + //Add subgroups to username. + if ( $subgroup !== null ) { + $this->userName = $usernameRepo[0] . '/' . untrailingslashit($subgroup); + } + } + + parent::__construct($repositoryUrl, $accessToken); + } + + /** + * Get the latest release from GitLab. + * + * @return Reference|null + */ + public function getLatestRelease() { + $releases = $this->api('/:id/releases', array('per_page' => $this->releaseFilterMaxReleases)); + if ( is_wp_error($releases) || empty($releases) || !is_array($releases) ) { + return null; + } + + foreach ($releases as $release) { + if ( + //Skip invalid/unsupported releases. + !is_object($release) + || !isset($release->tag_name) + //Skip upcoming releases. + || ( + !empty($release->upcoming_release) + && $this->shouldSkipPreReleases() + ) + ) { + continue; + } + + $versionNumber = ltrim($release->tag_name, 'v'); //Remove the "v" prefix from "v1.2.3". + + //Apply custom filters. + if ( !$this->matchesCustomReleaseFilter($versionNumber, $release) ) { + continue; + } + + $downloadUrl = $this->findReleaseDownloadUrl($release); + if ( empty($downloadUrl) ) { + //The latest release doesn't have valid download URL. + return null; + } + + if ( !empty($this->accessToken) ) { + $downloadUrl = add_query_arg('private_token', $this->accessToken, $downloadUrl); + } + + return new Reference(array( + 'name' => $release->tag_name, + 'version' => $versionNumber, + 'downloadUrl' => $downloadUrl, + 'updated' => $release->released_at, + 'apiResponse' => $release, + )); + } + + return null; + } + + /** + * @param object $release + * @return string|null + */ + protected function findReleaseDownloadUrl($release) { + if ( $this->releaseAssetsEnabled ) { + if ( isset($release->assets, $release->assets->links) ) { + //Use the first asset link where the URL matches the filter. + foreach ($release->assets->links as $link) { + if ( $this->matchesAssetFilter($link) ) { + return $link->url; + } + } + } + + if ( $this->releaseAssetPreference === Api::REQUIRE_RELEASE_ASSETS ) { + //Falling back to source archives is not allowed, so give up. + return null; + } + } + + //Use the first source code archive that's in ZIP format. + foreach ($release->assets->sources as $source) { + if ( isset($source->format) && ($source->format === 'zip') ) { + return $source->url; + } + } + + return null; + } + + /** + * Get the tag that looks like the highest version number. + * + * @return Reference|null + */ + public function getLatestTag() { + $tags = $this->api('/:id/repository/tags'); + if ( is_wp_error($tags) || empty($tags) || !is_array($tags) ) { + return null; + } + + $versionTags = $this->sortTagsByVersion($tags); + if ( empty($versionTags) ) { + return null; + } + + $tag = $versionTags[0]; + return new Reference(array( + 'name' => $tag->name, + 'version' => ltrim($tag->name, 'v'), + 'downloadUrl' => $this->buildArchiveDownloadUrl($tag->name), + 'apiResponse' => $tag, + )); + } + + /** + * Get a branch by name. + * + * @param string $branchName + * @return null|Reference + */ + public function getBranch($branchName) { + $branch = $this->api('/:id/repository/branches/' . $branchName); + if ( is_wp_error($branch) || empty($branch) ) { + return null; + } + + $reference = new Reference(array( + 'name' => $branch->name, + 'downloadUrl' => $this->buildArchiveDownloadUrl($branch->name), + 'apiResponse' => $branch, + )); + + if ( isset($branch->commit, $branch->commit->committed_date) ) { + $reference->updated = $branch->commit->committed_date; + } + + return $reference; + } + + /** + * Get the timestamp of the latest commit that changed the specified branch or tag. + * + * @param string $ref Reference name (e.g. branch or tag). + * @return string|null + */ + public function getLatestCommitTime($ref) { + $commits = $this->api('/:id/repository/commits/', array('ref_name' => $ref)); + if ( is_wp_error($commits) || !is_array($commits) || !isset($commits[0]) ) { + return null; + } + + return $commits[0]->committed_date; + } + + /** + * Perform a GitLab API request. + * + * @param string $url + * @param array $queryParams + * @return mixed|\WP_Error + */ + protected function api($url, $queryParams = array()) { + $baseUrl = $url; + $url = $this->buildApiUrl($url, $queryParams); + + $options = array('timeout' => wp_doing_cron() ? 10 : 3); + if ( !empty($this->httpFilterName) ) { + $options = apply_filters($this->httpFilterName, $options); + } + + $response = wp_remote_get($url, $options); + if ( is_wp_error($response) ) { + do_action('puc_api_error', $response, null, $url, $this->slug); + return $response; + } + + $code = wp_remote_retrieve_response_code($response); + $body = wp_remote_retrieve_body($response); + if ( $code === 200 ) { + return json_decode($body); + } + + $error = new \WP_Error( + 'puc-gitlab-http-error', + sprintf('GitLab API error. URL: "%s", HTTP status code: %d.', $baseUrl, $code) + ); + do_action('puc_api_error', $error, $response, $url, $this->slug); + + return $error; + } + + /** + * Build a fully qualified URL for an API request. + * + * @param string $url + * @param array $queryParams + * @return string + */ + protected function buildApiUrl($url, $queryParams) { + $variables = array( + 'user' => $this->userName, + 'repo' => $this->repositoryName, + 'id' => $this->userName . '/' . $this->repositoryName, + ); + + foreach ($variables as $name => $value) { + $url = str_replace("/:{$name}", '/' . urlencode($value), $url); + } + + $url = substr($url, 1); + $url = sprintf('%1$s://%2$s/api/v4/projects/%3$s', $this->repositoryProtocol, $this->repositoryHost, $url); + + if ( !empty($this->accessToken) ) { + $queryParams['private_token'] = $this->accessToken; + } + + if ( !empty($queryParams) ) { + $url = add_query_arg($queryParams, $url); + } + + return $url; + } + + /** + * Get the contents of a file from a specific branch or tag. + * + * @param string $path File name. + * @param string $ref + * @return null|string Either the contents of the file, or null if the file doesn't exist or there's an error. + */ + public function getRemoteFile($path, $ref = 'master') { + $response = $this->api('/:id/repository/files/' . $path, array('ref' => $ref)); + if ( is_wp_error($response) || !isset($response->content) || $response->encoding !== 'base64' ) { + return null; + } + + return base64_decode($response->content); + } + + /** + * Generate a URL to download a ZIP archive of the specified branch/tag/etc. + * + * @param string $ref + * @return string + */ + public function buildArchiveDownloadUrl($ref = 'master') { + $url = sprintf( + '%1$s://%2$s/api/v4/projects/%3$s/repository/archive.zip', + $this->repositoryProtocol, + $this->repositoryHost, + urlencode($this->userName . '/' . $this->repositoryName) + ); + $url = add_query_arg('sha', urlencode($ref), $url); + + if ( !empty($this->accessToken) ) { + $url = add_query_arg('private_token', $this->accessToken, $url); + } + + return $url; + } + + /** + * Get a specific tag. + * + * @param string $tagName + * @return void + */ + public function getTag($tagName) { + throw new \LogicException('The ' . __METHOD__ . ' method is not implemented and should not be used.'); + } + + protected function getUpdateDetectionStrategies($configBranch) { + $strategies = array(); + + if ( ($configBranch === 'main') || ($configBranch === 'master') ) { + $strategies[self::STRATEGY_LATEST_RELEASE] = array($this, 'getLatestRelease'); + $strategies[self::STRATEGY_LATEST_TAG] = array($this, 'getLatestTag'); + } + + $strategies[self::STRATEGY_BRANCH] = function () use ($configBranch) { + return $this->getBranch($configBranch); + }; + + return $strategies; + } + + public function setAuthentication($credentials) { + parent::setAuthentication($credentials); + $this->accessToken = is_string($credentials) ? $credentials : null; + } + + /** + * Use release assets that link to GitLab generic packages (e.g. .zip files) + * instead of automatically generated source archives. + * + * This is included for backwards compatibility with older versions of PUC. + * + * @return void + * @deprecated Use enableReleaseAssets() instead. + * @noinspection PhpUnused -- Public API + */ + public function enableReleasePackages() { + $this->enableReleaseAssets( + /** @lang RegExp */ '/\.zip($|[?&#])/i', + Api::REQUIRE_RELEASE_ASSETS + ); + } + + protected function getFilterableAssetName($releaseAsset) { + if ( isset($releaseAsset->url) ) { + return $releaseAsset->url; + } + return null; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/PluginUpdateChecker.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/PluginUpdateChecker.php new file mode 100644 index 0000000..e9aee45 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/PluginUpdateChecker.php @@ -0,0 +1,275 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +use YahnisElsts\PluginUpdateChecker\v5p3\Plugin; + +if ( !class_exists(PluginUpdateChecker::class, false) ): + + class PluginUpdateChecker extends Plugin\UpdateChecker implements BaseChecker { + use VcsCheckerMethods; + + /** + * PluginUpdateChecker constructor. + * + * @param Api $api + * @param string $pluginFile + * @param string $slug + * @param int $checkPeriod + * @param string $optionName + * @param string $muPluginFile + */ + public function __construct($api, $pluginFile, $slug = '', $checkPeriod = 12, $optionName = '', $muPluginFile = '') { + $this->api = $api; + + parent::__construct($api->getRepositoryUrl(), $pluginFile, $slug, $checkPeriod, $optionName, $muPluginFile); + + $this->api->setHttpFilterName($this->getUniqueName('request_info_options')); + $this->api->setStrategyFilterName($this->getUniqueName('vcs_update_detection_strategies')); + $this->api->setSlug($this->slug); + } + + public function requestInfo($unusedParameter = null) { + //We have to make several remote API requests to gather all the necessary info + //which can take a while on slow networks. + if ( function_exists('set_time_limit') ) { + @set_time_limit(60); + } + + $api = $this->api; + $api->setLocalDirectory($this->package->getAbsoluteDirectoryPath()); + + $info = new Plugin\PluginInfo(); + $info->filename = $this->pluginFile; + $info->slug = $this->slug; + + $this->setInfoFromHeader($this->package->getPluginHeader(), $info); + $this->setIconsFromLocalAssets($info); + $this->setBannersFromLocalAssets($info); + + //Pick a branch or tag. + $updateSource = $api->chooseReference($this->branch); + if ( $updateSource ) { + $ref = $updateSource->name; + $info->version = $updateSource->version; + $info->last_updated = $updateSource->updated; + $info->download_url = $updateSource->downloadUrl; + + if ( !empty($updateSource->changelog) ) { + $info->sections['changelog'] = $updateSource->changelog; + } + if ( isset($updateSource->downloadCount) ) { + $info->downloaded = $updateSource->downloadCount; + } + } else { + //There's probably a network problem or an authentication error. + do_action( + 'puc_api_error', + new \WP_Error( + 'puc-no-update-source', + 'Could not retrieve version information from the repository. ' + . 'This usually means that the update checker either can\'t connect ' + . 'to the repository or it\'s configured incorrectly.' + ), + null, null, $this->slug + ); + return null; + } + + //Get headers from the main plugin file in this branch/tag. Its "Version" header and other metadata + //are what the WordPress install will actually see after upgrading, so they take precedence over releases/tags. + $mainPluginFile = basename($this->pluginFile); + $remotePlugin = $api->getRemoteFile($mainPluginFile, $ref); + if ( !empty($remotePlugin) ) { + $remoteHeader = $this->package->getFileHeader($remotePlugin); + $this->setInfoFromHeader($remoteHeader, $info); + } + + //Sanity check: Reject updates that don't have a version number. + //This can happen when we're using a branch, and we either fail to retrieve the main plugin + //file or the file doesn't have a "Version" header. + if ( empty($info->version) ) { + do_action( + 'puc_api_error', + new \WP_Error( + 'puc-no-plugin-version', + 'Could not find the version number in the repository.' + ), + null, null, $this->slug + ); + return null; + } + + //Try parsing readme.txt. If it's formatted according to WordPress.org standards, it will contain + //a lot of useful information like the required/tested WP version, changelog, and so on. + if ( $this->readmeTxtExistsLocally() ) { + $this->setInfoFromRemoteReadme($ref, $info); + } + + //The changelog might be in a separate file. + if ( empty($info->sections['changelog']) ) { + $info->sections['changelog'] = $api->getRemoteChangelog($ref, $this->package->getAbsoluteDirectoryPath()); + if ( empty($info->sections['changelog']) ) { + $info->sections['changelog'] = __('There is no changelog available.', 'plugin-update-checker'); + } + } + + if ( empty($info->last_updated) ) { + //Fetch the latest commit that changed the tag or branch and use it as the "last_updated" date. + $latestCommitTime = $api->getLatestCommitTime($ref); + if ( $latestCommitTime !== null ) { + $info->last_updated = $latestCommitTime; + } + } + + $info = apply_filters($this->getUniqueName('request_info_result'), $info, null); + return $info; + } + + /** + * Check if the currently installed version has a readme.txt file. + * + * @return bool + */ + protected function readmeTxtExistsLocally() { + return $this->package->fileExists($this->api->getLocalReadmeName()); + } + + /** + * Copy plugin metadata from a file header to a Plugin Info object. + * + * @param array $fileHeader + * @param Plugin\PluginInfo $pluginInfo + */ + protected function setInfoFromHeader($fileHeader, $pluginInfo) { + $headerToPropertyMap = array( + 'Version' => 'version', + 'Name' => 'name', + 'PluginURI' => 'homepage', + 'Author' => 'author', + 'AuthorName' => 'author', + 'AuthorURI' => 'author_homepage', + + 'Requires WP' => 'requires', + 'Tested WP' => 'tested', + 'Requires at least' => 'requires', + 'Tested up to' => 'tested', + + 'Requires PHP' => 'requires_php', + ); + foreach ($headerToPropertyMap as $headerName => $property) { + if ( isset($fileHeader[$headerName]) && !empty($fileHeader[$headerName]) ) { + $pluginInfo->$property = $fileHeader[$headerName]; + } + } + + if ( !empty($fileHeader['Description']) ) { + $pluginInfo->sections['description'] = $fileHeader['Description']; + } + } + + /** + * Copy plugin metadata from the remote readme.txt file. + * + * @param string $ref GitHub tag or branch where to look for the readme. + * @param Plugin\PluginInfo $pluginInfo + */ + protected function setInfoFromRemoteReadme($ref, $pluginInfo) { + $readme = $this->api->getRemoteReadme($ref); + if ( empty($readme) ) { + return; + } + + if ( isset($readme['sections']) ) { + $pluginInfo->sections = array_merge($pluginInfo->sections, $readme['sections']); + } + if ( !empty($readme['tested_up_to']) ) { + $pluginInfo->tested = $readme['tested_up_to']; + } + if ( !empty($readme['requires_at_least']) ) { + $pluginInfo->requires = $readme['requires_at_least']; + } + if ( !empty($readme['requires_php']) ) { + $pluginInfo->requires_php = $readme['requires_php']; + } + + if ( isset($readme['upgrade_notice'], $readme['upgrade_notice'][$pluginInfo->version]) ) { + $pluginInfo->upgrade_notice = $readme['upgrade_notice'][$pluginInfo->version]; + } + } + + /** + * Add icons from the currently installed version to a Plugin Info object. + * + * The icons should be in a subdirectory named "assets". Supported image formats + * and file names are described here: + * @link https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-icons + * + * @param Plugin\PluginInfo $pluginInfo + */ + protected function setIconsFromLocalAssets($pluginInfo) { + $icons = $this->getLocalAssetUrls(array( + 'icon.svg' => 'svg', + 'icon-256x256.png' => '2x', + 'icon-256x256.jpg' => '2x', + 'icon-128x128.png' => '1x', + 'icon-128x128.jpg' => '1x', + )); + + if ( !empty($icons) ) { + //The "default" key seems to be used only as last-resort fallback in WP core (5.8/5.9), + //but we'll set it anyway in case some code somewhere needs it. + reset($icons); + $firstKey = key($icons); + $icons['default'] = $icons[$firstKey]; + + $pluginInfo->icons = $icons; + } + } + + /** + * Add banners from the currently installed version to a Plugin Info object. + * + * The banners should be in a subdirectory named "assets". Supported image formats + * and file names are described here: + * @link https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/#plugin-headers + * + * @param Plugin\PluginInfo $pluginInfo + */ + protected function setBannersFromLocalAssets($pluginInfo) { + $banners = $this->getLocalAssetUrls(array( + 'banner-772x250.png' => 'high', + 'banner-772x250.jpg' => 'high', + 'banner-1544x500.png' => 'low', + 'banner-1544x500.jpg' => 'low', + )); + + if ( !empty($banners) ) { + $pluginInfo->banners = $banners; + } + } + + /** + * @param array<string, string> $filesToKeys + * @return array<string, string> + */ + protected function getLocalAssetUrls($filesToKeys) { + $assetDirectory = $this->package->getAbsoluteDirectoryPath() . DIRECTORY_SEPARATOR . 'assets'; + if ( !is_dir($assetDirectory) ) { + return array(); + } + $assetBaseUrl = trailingslashit(plugins_url('', $assetDirectory . '/imaginary.file')); + + $foundAssets = array(); + foreach ($filesToKeys as $fileName => $key) { + $fullBannerPath = $assetDirectory . DIRECTORY_SEPARATOR . $fileName; + if ( !isset($icons[$key]) && is_file($fullBannerPath) ) { + $foundAssets[$key] = $assetBaseUrl . $fileName; + } + } + + return $foundAssets; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Reference.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Reference.php new file mode 100644 index 0000000..7f6988a --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/Reference.php @@ -0,0 +1,51 @@ +<?php +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !class_exists(Reference::class, false) ): + + /** + * This class represents a VCS branch or tag. It's intended as a read only, short-lived container + * that only exists to provide a limited degree of type checking. + * + * @property string $name + * @property string|null version + * @property string $downloadUrl + * @property string $updated + * + * @property string|null $changelog + * @property int|null $downloadCount + */ + class Reference { + private $properties = array(); + + public function __construct($properties = array()) { + $this->properties = $properties; + } + + /** + * @param string $name + * @return mixed|null + */ + public function __get($name) { + return array_key_exists($name, $this->properties) ? $this->properties[$name] : null; + } + + /** + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) { + $this->properties[$name] = $value; + } + + /** + * @param string $name + * @return bool + */ + public function __isset($name) { + return isset($this->properties[$name]); + } + + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseAssetSupport.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseAssetSupport.php new file mode 100644 index 0000000..c5bd2da --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseAssetSupport.php @@ -0,0 +1,83 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !trait_exists(ReleaseAssetSupport::class, false) ) : + + trait ReleaseAssetSupport { + /** + * @var bool Whether to download release assets instead of the auto-generated + * source code archives. + */ + protected $releaseAssetsEnabled = false; + + /** + * @var string|null Regular expression that's used to filter release assets + * by file name or URL. Optional. + */ + protected $assetFilterRegex = null; + + /** + * How to handle releases that don't have any matching release assets. + * + * @var int + */ + protected $releaseAssetPreference = Api::PREFER_RELEASE_ASSETS; + + /** + * Enable updating via release assets. + * + * If the latest release contains no usable assets, the update checker + * will fall back to using the automatically generated ZIP archive. + * + * @param string|null $nameRegex Optional. Use only those assets where + * the file name or URL matches this regex. + * @param int $preference Optional. How to handle releases that don't have + * any matching release assets. + */ + public function enableReleaseAssets($nameRegex = null, $preference = Api::PREFER_RELEASE_ASSETS) { + $this->releaseAssetsEnabled = true; + $this->assetFilterRegex = $nameRegex; + $this->releaseAssetPreference = $preference; + } + + /** + * Disable release assets. + * + * @return void + * @noinspection PhpUnused -- Public API + */ + public function disableReleaseAssets() { + $this->releaseAssetsEnabled = false; + $this->assetFilterRegex = null; + } + + /** + * Does the specified asset match the name regex? + * + * @param mixed $releaseAsset Data type and structure depend on the host/API. + * @return bool + */ + protected function matchesAssetFilter($releaseAsset) { + if ( $this->assetFilterRegex === null ) { + //The default is to accept all assets. + return true; + } + + $name = $this->getFilterableAssetName($releaseAsset); + if ( !is_string($name) ) { + return false; + } + return (bool)preg_match($this->assetFilterRegex, $releaseAsset->name); + } + + /** + * Get the part of asset data that will be checked against the filter regex. + * + * @param mixed $releaseAsset + * @return string|null + */ + abstract protected function getFilterableAssetName($releaseAsset); + } + +endif; \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseFilteringFeature.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseFilteringFeature.php new file mode 100644 index 0000000..bf372cd --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ReleaseFilteringFeature.php @@ -0,0 +1,108 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !trait_exists(ReleaseFilteringFeature::class, false) ) : + + trait ReleaseFilteringFeature { + /** + * @var callable|null + */ + protected $releaseFilterCallback = null; + /** + * @var int + */ + protected $releaseFilterMaxReleases = 1; + /** + * @var string One of the Api::RELEASE_FILTER_* constants. + */ + protected $releaseFilterByType = Api::RELEASE_FILTER_SKIP_PRERELEASE; + + /** + * Set a custom release filter. + * + * Setting a new filter will override the old filter, if any. + * + * @param callable $callback A callback that accepts a version number and a release + * object, and returns a boolean. + * @param int $releaseTypes One of the Api::RELEASE_FILTER_* constants. + * @param int $maxReleases Optional. The maximum number of recent releases to examine + * when trying to find a release that matches the filter. 1 to 100. + * @return $this + */ + public function setReleaseFilter( + $callback, + $releaseTypes = Api::RELEASE_FILTER_SKIP_PRERELEASE, + $maxReleases = 20 + ) { + if ( $maxReleases > 100 ) { + throw new \InvalidArgumentException(sprintf( + 'The max number of releases is too high (%d). It must be 100 or less.', + $maxReleases + )); + } else if ( $maxReleases < 1 ) { + throw new \InvalidArgumentException(sprintf( + 'The max number of releases is too low (%d). It must be at least 1.', + $maxReleases + )); + } + + $this->releaseFilterCallback = $callback; + $this->releaseFilterByType = $releaseTypes; + $this->releaseFilterMaxReleases = $maxReleases; + return $this; + } + + /** + * Filter releases by their version number. + * + * @param string $regex A regular expression. The release version number must match this regex. + * @param int $releaseTypes + * @param int $maxReleasesToExamine + * @return $this + * @noinspection PhpUnused -- Public API + */ + public function setReleaseVersionFilter( + $regex, + $releaseTypes = Api::RELEASE_FILTER_SKIP_PRERELEASE, + $maxReleasesToExamine = 20 + ) { + return $this->setReleaseFilter( + function ($versionNumber) use ($regex) { + return (preg_match($regex, $versionNumber) === 1); + }, + $releaseTypes, + $maxReleasesToExamine + ); + } + + /** + * @param string $versionNumber The detected release version number. + * @param object $releaseObject Varies depending on the host/API. + * @return bool + */ + protected function matchesCustomReleaseFilter($versionNumber, $releaseObject) { + if ( !is_callable($this->releaseFilterCallback) ) { + return true; //No custom filter. + } + return call_user_func($this->releaseFilterCallback, $versionNumber, $releaseObject); + } + + /** + * @return bool + */ + protected function shouldSkipPreReleases() { + //Maybe this could be a bitfield in the future, if we need to support + //more release types. + return ($this->releaseFilterByType !== Api::RELEASE_FILTER_ALL); + } + + /** + * @return bool + */ + protected function hasCustomReleaseFilter() { + return isset($this->releaseFilterCallback) && is_callable($this->releaseFilterCallback); + } + } + +endif; \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ThemeUpdateChecker.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ThemeUpdateChecker.php new file mode 100644 index 0000000..04f6036 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/ThemeUpdateChecker.php @@ -0,0 +1,83 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +use YahnisElsts\PluginUpdateChecker\v5p3\Theme; +use YahnisElsts\PluginUpdateChecker\v5p3\Utils; + +if ( !class_exists(ThemeUpdateChecker::class, false) ): + + class ThemeUpdateChecker extends Theme\UpdateChecker implements BaseChecker { + use VcsCheckerMethods; + + /** + * ThemeUpdateChecker constructor. + * + * @param Api $api + * @param null $stylesheet + * @param null $customSlug + * @param int $checkPeriod + * @param string $optionName + */ + public function __construct($api, $stylesheet = null, $customSlug = null, $checkPeriod = 12, $optionName = '') { + $this->api = $api; + + parent::__construct($api->getRepositoryUrl(), $stylesheet, $customSlug, $checkPeriod, $optionName); + + $this->api->setHttpFilterName($this->getUniqueName('request_update_options')); + $this->api->setStrategyFilterName($this->getUniqueName('vcs_update_detection_strategies')); + $this->api->setSlug($this->slug); + } + + public function requestUpdate() { + $api = $this->api; + $api->setLocalDirectory($this->package->getAbsoluteDirectoryPath()); + + $update = new Theme\Update(); + $update->slug = $this->slug; + + //Figure out which reference (tag or branch) we'll use to get the latest version of the theme. + $updateSource = $api->chooseReference($this->branch); + if ( $updateSource ) { + $ref = $updateSource->name; + $update->download_url = $updateSource->downloadUrl; + } else { + do_action( + 'puc_api_error', + new \WP_Error( + 'puc-no-update-source', + 'Could not retrieve version information from the repository. ' + . 'This usually means that the update checker either can\'t connect ' + . 'to the repository or it\'s configured incorrectly.' + ), + null, null, $this->slug + ); + $ref = $this->branch; + } + + //Get headers from the main stylesheet in this branch/tag. Its "Version" header and other metadata + //are what the WordPress install will actually see after upgrading, so they take precedence over releases/tags. + $remoteHeader = $this->package->getFileHeader($api->getRemoteFile('style.css', $ref)); + $update->version = Utils::findNotEmpty(array( + $remoteHeader['Version'], + Utils::get($updateSource, 'version'), + )); + + //The details URL defaults to the Theme URI header or the repository URL. + $update->details_url = Utils::findNotEmpty(array( + $remoteHeader['ThemeURI'], + $this->package->getHeaderValue('ThemeURI'), + $this->metadataUrl, + )); + + if ( empty($update->version) ) { + //It looks like we didn't find a valid update after all. + $update = null; + } + + $update = $this->filterUpdateResult($update); + return $update; + } + } + +endif; diff --git a/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/VcsCheckerMethods.php b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/VcsCheckerMethods.php new file mode 100644 index 0000000..5b89cf6 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/Puc/v5p3/Vcs/VcsCheckerMethods.php @@ -0,0 +1,59 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3\Vcs; + +if ( !trait_exists(VcsCheckerMethods::class, false) ) : + + trait VcsCheckerMethods { + /** + * @var string The branch where to look for updates. Defaults to "master". + */ + protected $branch = 'master'; + + /** + * @var Api Repository API client. + */ + protected $api = null; + + public function setBranch($branch) { + $this->branch = $branch; + return $this; + } + + /** + * Set authentication credentials. + * + * @param array|string $credentials + * @return $this + */ + public function setAuthentication($credentials) { + $this->api->setAuthentication($credentials); + return $this; + } + + /** + * @return Api + */ + public function getVcsApi() { + return $this->api; + } + + public function getUpdate() { + $update = parent::getUpdate(); + + if ( isset($update) && !empty($update->download_url) ) { + $update->download_url = $this->api->signDownloadUrl($update->download_url); + } + + return $update; + } + + public function onDisplayConfiguration($panel) { + parent::onDisplayConfiguration($panel); + $panel->row('Branch', $this->branch); + $panel->row('Authentication enabled', $this->api->isAuthenticationEnabled() ? 'Yes' : 'No'); + $panel->row('API client', get_class($this->api)); + } + } + +endif; \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/README.md b/vendor/yahnis-elsts/plugin-update-checker/README.md new file mode 100644 index 0000000..1af16f0 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/README.md @@ -0,0 +1,372 @@ +Plugin Update Checker +===================== + +This is a custom update checker library for WordPress plugins and themes. It lets you add automatic update notifications and one-click upgrades to your commercial plugins, private themes, and so on. All you need to do is put your plugin/theme details in a JSON file, place the file on your server, and pass the URL to the library. The library periodically checks the URL to see if there's a new version available and displays an update notification to the user if necessary. + +From the users' perspective, it works just like with plugins and themes hosted on WordPress.org. The update checker uses the default upgrade UI that is familiar to most WordPress users. + +<!-- START doctoc generated TOC please keep comment here to allow auto update --> +<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> +**Table of Contents** + +- [Getting Started](#getting-started) + - [Self-hosted Plugins and Themes](#self-hosted-plugins-and-themes) + - [How to Release an Update](#how-to-release-an-update) + - [Notes](#notes) + - [GitHub Integration](#github-integration) + - [How to Release an Update](#how-to-release-an-update-1) + - [Notes](#notes-1) + - [BitBucket Integration](#bitbucket-integration) + - [How to Release an Update](#how-to-release-an-update-2) + - [GitLab Integration](#gitlab-integration) + - [How to Release a GitLab Update](#how-to-release-a-gitlab-update) +- [Migrating from 4.x](#migrating-from-4x) +- [License Management](#license-management) +- [Resources](#resources) + +<!-- END doctoc generated TOC please keep comment here to allow auto update --> + +Getting Started +--------------- + +*Note:* In each of the below examples, part of the instructions are to create an instance of the update checker class. It's recommended to do this either during the `plugins_loaded` action or outside of any hooks. If you do it only during an `admin_*` action, then updates will not be visible to a wide variety of WordPress maanagement tools; they will only be visible to logged-in users on dashboard pages. + +### Self-hosted Plugins and Themes + +1. Download [the latest release](https://github.com/YahnisElsts/plugin-update-checker/releases/latest) and copy the `plugin-update-checker` directory to your plugin or theme. +2. Go to the `examples` subdirectory and open the .json file that fits your project type. Replace the placeholder data with your plugin/theme details. + - Plugin example: + + ```json + { + "name" : "Plugin Name", + "version" : "2.0", + "download_url" : "https://example.com/plugin-name-2.0.zip", + "sections" : { + "description" : "Plugin description here. You can use HTML." + } + } + ``` + + This is a minimal example that leaves out optional fields. See [this table](https://docs.google.com/spreadsheets/d/1eOBbW7Go2qEQXReOOCdidMTf_tDYRq4JfegcO1CBPIs/edit?usp=sharing) for a full list of supported fields and their descriptions. + - Theme example: + + ```json + { + "version": "2.0", + "details_url": "https://example.com/version-2.0-details.html", + "download_url": "https://example.com/example-theme-2.0.zip" + } + ``` + + This is actually a complete example that shows all theme-related fields. `version` and `download_url` should be self-explanatory. The `details_url` key specifies the page that the user will see if they click the "View version 1.2.3 details" link in an update notification. +3. Upload the JSON file to a publicly accessible location. +4. Add the following code to the main plugin file or to the `functions.php` file: + + ```php + require 'path/to/plugin-update-checker/plugin-update-checker.php'; + use YahnisElsts\PluginUpdateChecker\v5\PucFactory; + + $myUpdateChecker = PucFactory::buildUpdateChecker( + 'https://example.com/path/to/details.json', + __FILE__, //Full path to the main plugin file or functions.php. + 'unique-plugin-or-theme-slug' + ); + ``` + Note: If you're using the Composer autoloader, you don't need to explicitly `require` the library. + +#### How to Release an Update + +Change the `version` number in the JSON file and make sure that `download_url` points to the latest version. Update the other fields if necessary. Tip: You can use [wp-update-server](https://github.com/YahnisElsts/wp-update-server) to automate this process. + +By default, the library will check the specified URL for changes every 12 hours. You can force it to check immediately by clicking the "Check for updates" link on the "Plugins" page (it's next to the "Visit plugin site" link). Themes don't have that link, but you can also trigger an update check like this: + + 1. Install [Debug Bar](https://srd.wordpress.org/plugins/debug-bar/). + 2. Click the "Debug" menu in the Admin Bar (a.k.a Toolbar). + 3. Open the "PUC (your-slug)" panel. + 4. Click the "Check Now" button. + +#### Notes +- The second argument passed to `buildUpdateChecker` must be the absolute path to the main plugin file or any file in the theme directory. If you followed the "getting started" instructions, you can just use the `__FILE__` constant. +- The third argument - i.e. the slug - is optional but recommended. In most cases, the slug should be the same as the name of your plugin directory. For example, if your plugin lives in `/wp-content/plugins/my-plugin`, set the slug to `my-plugin`. If the slug is omitted, the update checker will use the name of the main plugin file as the slug (e.g. `my-cool-plugin.php` → `my-cool-plugin`). This can lead to conflicts if your plugin has a generic file name like `plugin.php`. + + This doesn't affect themes because PUC uses the theme directory name as the default slug. Still, if you're planning to use the slug in your own code - e.g. to filter updates or override update checker behaviour - it can be a good idea to set it explicitly. + +### GitHub Integration + +1. Download [the latest release](https://github.com/YahnisElsts/plugin-update-checker/releases/latest) and copy the `plugin-update-checker` directory to your plugin or theme. +2. Add the following code to the main plugin file or `functions.php`: + + ```php + require 'plugin-update-checker/plugin-update-checker.php'; + use YahnisElsts\PluginUpdateChecker\v5\PucFactory; + + $myUpdateChecker = PucFactory::buildUpdateChecker( + 'https://github.com/user-name/repo-name/', + __FILE__, + 'unique-plugin-or-theme-slug' + ); + + //Set the branch that contains the stable release. + $myUpdateChecker->setBranch('stable-branch-name'); + + //Optional: If you're using a private repository, specify the access token like this: + $myUpdateChecker->setAuthentication('your-token-here'); + ``` +3. Plugins only: Add a `readme.txt` file formatted according to the [WordPress.org plugin readme standard](https://wordpress.org/plugins/readme.txt) to your repository. The contents of this file will be shown when the user clicks the "View version 1.2.3 details" link. + +#### How to Release an Update + +This library supports a couple of different ways to release updates on GitHub. Pick the one that best fits your workflow. + +- **GitHub releases** + + Create a new release using the "Releases" feature on GitHub. The tag name and release title don't matter. The description is optional, but if you do provide one, it will be displayed when the user clicks the "View version x.y.z details" link on the "Plugins" page. Note that PUC ignores releases marked as "This is a pre-release". + + If you want to use release assets, call the `enableReleaseAssets()` method after creating the update checker instance: + ```php + $myUpdateChecker->getVcsApi()->enableReleaseAssets(); + ``` + +- **Tags** + + To release version 1.2.3, create a new Git tag named `v1.2.3` or `1.2.3`. That's it. + + PUC doesn't require strict adherence to [SemVer](https://semver.org/). These are all valid tag names: `v1.2.3`, `v1.2-foo`, `1.2.3_rc1-ABC`, `1.2.3.4.5`. However, be warned that it's not smart enough to filter out alpha/beta/RC versions. If that's a problem, you might want to use GitHub releases or branches instead. + +- **Stable branch** + + Point the update checker at a stable, production-ready branch: + ```php + $updateChecker->setBranch('branch-name'); + ``` + PUC will periodically check the `Version` header in the main plugin file or `style.css` and display a notification if it's greater than the installed version. + + Caveat: If you set the branch to `master` (the default), the update checker will look for recent releases and tags first. It'll only use the `master` branch if it doesn't find anything else suitable. + +#### Notes + +The library will pull update details from the following parts of a release/tag/branch: + +- Version number + - The "Version" plugin header. + - The latest GitHub release or tag name. +- Changelog + - The "Changelog" section of `readme.txt`. + - One of the following files: + CHANGES.md, CHANGELOG.md, changes.md, changelog.md + - GitHub release notes. +- Required and tested WordPress versions + - The "Requires at least" and "Tested up to" fields in `readme.txt`. + - The following plugin headers: + `Required WP`, `Tested WP`, `Requires at least`, `Tested up to` +- "Last updated" timestamp + - The creation timestamp of the latest GitHub release. + - The latest commit in the selected tag or branch. +- Number of downloads + - The `download_count` statistic of the latest release. + - If you're not using GitHub releases, there will be no download stats. +- Other plugin details - author, homepage URL, description + - The "Description" section of `readme.txt`. + - Remote plugin headers (i.e. the latest version on GitHub). + - Local plugin headers (i.e. the currently installed version). +- Ratings, banners, screenshots + - Not supported. + +### BitBucket Integration + +1. Download [the latest release](https://github.com/YahnisElsts/plugin-update-checker/releases/latest) and copy the `plugin-update-checker` directory to your plugin or theme. +2. Add the following code to the main plugin file or `functions.php`: + + ```php + require 'plugin-update-checker/plugin-update-checker.php'; + use YahnisElsts\PluginUpdateChecker\v5\PucFactory; + + $myUpdateChecker = PucFactory::buildUpdateChecker( + 'https://bitbucket.org/user-name/repo-name', + __FILE__, + 'unique-plugin-or-theme-slug' + ); + + //Optional: If you're using a private repository, create an OAuth consumer + //and set the authentication credentials like this: + //Note: For now you need to check "This is a private consumer" when + //creating the consumer to work around #134: + // https://github.com/YahnisElsts/plugin-update-checker/issues/134 + $myUpdateChecker->setAuthentication(array( + 'consumer_key' => '...', + 'consumer_secret' => '...', + )); + + //Optional: Set the branch that contains the stable release. + $myUpdateChecker->setBranch('stable-branch-name'); + ``` +3. Optional: Add a `readme.txt` file formatted according to the [WordPress.org plugin readme standard](https://wordpress.org/plugins/readme.txt) to your repository. For plugins, the contents of this file will be shown when the user clicks the "View version 1.2.3 details" link. + +#### How to Release an Update + +BitBucket doesn't have an equivalent to GitHub's releases, so the process is slightly different. You can use any of the following approaches: + +- **`Stable tag` header** + + This is the recommended approach if you're using tags to mark each version. Add a `readme.txt` file formatted according to the [WordPress.org plugin readme standard](https://wordpress.org/plugins/readme.txt) to your repository. Set the "stable tag" header to the tag that represents the latest release. Example: + ```text + Stable tag: v1.2.3 + ``` + The tag doesn't have to start with a "v" or follow any particular format. You can use any name you like as long as it's a valid Git tag. + + Tip: If you explicitly set a stable branch, the update checker will look for a `readme.txt` in that branch. Otherwise it will only look at the `master` branch. + +- **Tags** + + You can skip the "stable tag" bit and just create a new Git tag named `v1.2.3` or `1.2.3`. The update checker will look at the most recent tags and pick the one that looks like the highest version number. + + PUC doesn't require strict adherence to [SemVer](https://semver.org/). These are all valid tag names: `v1.2.3`, `v1.2-foo`, `1.2.3_rc1-ABC`, `1.2.3.4.5`. However, be warned that it's not smart enough to filter out alpha/beta/RC versions. + +- **Stable branch** + + Point the update checker at a stable, production-ready branch: + ```php + $updateChecker->setBranch('branch-name'); + ``` + PUC will periodically check the `Version` header in the main plugin file or `style.css` and display a notification if it's greater than the installed version. Caveat: If you set the branch to `master`, the update checker will still look for tags first. + +### GitLab Integration + +1. Download [the latest release](https://github.com/YahnisElsts/plugin-update-checker/releases/latest) and copy the `plugin-update-checker` directory to your plugin or theme. +2. Add the following code to the main plugin file or `functions.php` and define how you want to check for updates from Gitlab (refer to: [Gitlab: How to Release an Update](#how-to-release-a-gitlab-update)): + + ```php + require 'plugin-update-checker/plugin-update-checker.php'; + use YahnisElsts\PluginUpdateChecker\v5\PucFactory; + + $myUpdateChecker = PucFactory::buildUpdateChecker( + 'https://gitlab.com/user-name/repo-name/', + __FILE__, + 'unique-plugin-or-theme-slug' + ); + + //Optional: If you're using a private repository, specify the access token like this: + $myUpdateChecker->setAuthentication('your-token-here'); + ``` + + Alternatively, if you're using a self-hosted GitLab instance, initialize the update checker like this: + ```php + use YahnisElsts\PluginUpdateChecker\v5p3\Vcs\PluginUpdateChecker; + use YahnisElsts\PluginUpdateChecker\v5p3\Vcs\GitLabApi; + + $myUpdateChecker = new PluginUpdateChecker( + new GitLabApi('https://myserver.com/user-name/repo-name/'), + __FILE__, + 'unique-plugin-or-theme-slug' + ); + //Optional: Add setAuthentication(...) and setBranch(...) as shown above. + ``` + If you're using a self-hosted GitLab instance and [subgroups or nested groups](https://docs.gitlab.com/ce/user/group/subgroups/index.html), you have to tell the update checker which parts of the URL are subgroups: + ```php + use YahnisElsts\PluginUpdateChecker\v5p3\Vcs\PluginUpdateChecker; + use YahnisElsts\PluginUpdateChecker\v5p3\Vcs\GitLabApi; + + $myUpdateChecker = new PluginUpdateChecker( + new GitLabApi( + 'https://myserver.com/group-name/subgroup-level1/subgroup-level2/subgroup-level3/repo-name/', + null, + 'subgroup-level1/subgroup-level2/subgroup-level3' + ), + __FILE__, + 'unique-plugin-or-theme-slug' + ); + ``` + +3. Plugins only: Add a `readme.txt` file formatted according to the [WordPress.org plugin readme standard](https://wordpress.org/plugins/readme.txt) to your repository. The contents of this file will be shown when the user clicks the "View version 1.2.3 details" link. + +#### How to Release a GitLab Update + +A GitLab repository can be checked for updates in 3 different ways. + +- **GitLab releases** + + Create a new release using the "Releases" feature on GitLab. The tag name should match the version number. You can add a `v` prefix to the tag, like `v1.2.3`. Releases that are marked as ["Upcoming Release"](https://docs.gitlab.com/ee/user/project/releases/index.html#upcoming-releases) will be automatically ignored. + + If you want to use custom release assets, call the `enableReleaseAssets()` method after creating the update checker instance: + ```php + $myUpdateChecker->getVcsApi()->enableReleaseAssets(); + ``` + + By default, PUC will use the first available asset link, regardless of type. You can pass a regular expression to `enableReleaseAssets()` to make it pick the first link where the URL matches the regex. For example: + ```php + $myUpdateChecker->getVcsApi()->enableReleaseAssets('/\.zip($|[?&#])/i'); + ``` + + **Tip:** You can use a Gitlab CI/CD Pipeline to automatically generate your update on release using a Generic Package. For more information about generic packages, refer to the following links: + - [Gitlab CI/CD Release Documentation](https://docs.gitlab.com/ee/user/project/releases/#create-release-from-gitlab-ci) + - [Gitlab Release Assets as Generic Package Documentation](https://gitlab.com/gitlab-org/release-cli/-/tree/master/docs/examples/release-assets-as-generic-package/) + - [Example .gitlab-ci.yml file using Release Generic Packages for generating a update package from the Sensei-LMS wordpress plugin](https://gist.github.com/timwiel/9dfd3526c768efad4973254085e065ce) + +- **Tags** + + To release version 1.2.3, create a new Git tag named `v1.2.3` or `1.2.3`. The update checker will look at recent tags and use the one that looks like the highest version number. + + PUC doesn't require strict adherence to [SemVer](https://semver.org/). However, be warned that it's not smart enough to filter out alpha/beta/RC versions. If that's a problem, you might want to use GitLab branches instead. + +- **Stable branch** + + Point the update checker at any stable, production-ready branch: + ```php + $myUpdateChecker->setBranch('stable-branch-name'); + ``` + PUC will periodically check the `Version` header in the main plugin file or `style.css` and display a notification if it's greater than the installed version. Caveat: Even if you set the branch to `main` (the default) or `master` (the historical default), the update checker will still look for recent releases and tags first. + +Migrating from 4.x +------------------ + +Older versions of the library didn't use namespaces. Code that was written for those versions will need to be updated to work with the current version. At a minimum, you'll need to change the factory class name. + +Old code: +```php +$myUpdateChecker = Puc_v4_Factory::buildUpdateChecker( + 'https://example.com/info.json', + __FILE__, + 'my-slug' +); +``` + +New code: +```php +use YahnisElsts\PluginUpdateChecker\v5\PucFactory; + +$myUpdateChecker = PucFactory::buildUpdateChecker( + 'https://example.com/info.json', + __FILE__, + 'my-slug' +); +``` + +Other classes have also been renamed, usually by simply removing the `Puc_vXpY_` prefix and converting `Category_Thing` to `Category\Thing`. Here's a table of the most commonly used classes and their new names: + +| Old class name | New class name | +|-------------------------------------|----------------------------------------------------------------| +| `Puc_v4_Factory` | `YahnisElsts\PluginUpdateChecker\v5\PucFactory` | +| `Puc_v4p13_Factory` | `YahnisElsts\PluginUpdateChecker\v5p3\PucFactory` | +| `Puc_v4p13_Plugin_UpdateChecker` | `YahnisElsts\PluginUpdateChecker\v5p3\Plugin\UpdateChecker` | +| `Puc_v4p13_Theme_UpdateChecker` | `YahnisElsts\PluginUpdateChecker\v5p3\Theme\UpdateChecker` | +| `Puc_v4p13_Vcs_PluginUpdateChecker` | `YahnisElsts\PluginUpdateChecker\v5p3\Vcs\PluginUpdateChecker` | +| `Puc_v4p13_Vcs_ThemeUpdateChecker` | `YahnisElsts\PluginUpdateChecker\v5p3\Vcs\ThemeUpdateChecker` | +| `Puc_v4p13_Vcs_GitHubApi` | `YahnisElsts\PluginUpdateChecker\v5p3\Vcs\GitHubApi` | +| `Puc_v4p13_Vcs_GitLabApi` | `YahnisElsts\PluginUpdateChecker\v5p3\Vcs\GitLabApi` | +| `Puc_v4p13_Vcs_BitBucketApi` | `YahnisElsts\PluginUpdateChecker\v5p3\Vcs\BitBucketApi` | + +License Management +------------------ + +Currently, the update checker doesn't have any built-in license management features. It only provides some hooks that you can use to, for example, append license keys to update requests (`$updateChecker->addQueryArgFilter()`). If you're looking for ways to manage and verify licenses, please post your feedback in [this issue](https://github.com/YahnisElsts/plugin-update-checker/issues/222). + +Resources +--------- + +- [This blog post](https://w-shadow.com/blog/2010/09/02/automatic-updates-for-any-plugin/) has more information about the update checker API. *Slightly out of date.* +- [Debug Bar](https://wordpress.org/plugins/debug-bar/) - useful for testing and debugging the update checker. +- [Update format reference](https://docs.google.com/spreadsheets/d/1eOBbW7Go2qEQXReOOCdidMTf_tDYRq4JfegcO1CBPIs/edit?usp=sharing) - describes all fields supported by the JSON-based update information format used by the update checker. Only covers plugins. Themes use a similar but more limited format. +- [Securing download links](https://w-shadow.com/blog/2013/03/19/plugin-updates-securing-download-links/) - a general overview. +- [A GUI for entering download credentials](https://open-tools.net/documentation/tutorial-automatic-updates.html#wordpress) +- [Theme Update Checker](https://w-shadow.com/blog/2011/06/02/automatic-updates-for-commercial-themes/) - an older, theme-only variant of this update checker. diff --git a/vendor/yahnis-elsts/plugin-update-checker/composer.json b/vendor/yahnis-elsts/plugin-update-checker/composer.json new file mode 100644 index 0000000..27b65b0 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/composer.json @@ -0,0 +1,23 @@ +{ + "name": "yahnis-elsts/plugin-update-checker", + "type": "library", + "description": "A custom update checker for WordPress plugins and themes. Useful if you can't host your plugin in the official WP repository but still want it to support automatic updates.", + "keywords": ["wordpress", "plugin updates", "automatic updates", "theme updates"], + "homepage": "https://github.com/YahnisElsts/plugin-update-checker/", + "license": "MIT", + "authors": [ + { + "name": "Yahnis Elsts", + "email": "whiteshadow@w-shadow.com", + "homepage": "https://w-shadow.com/", + "role": "Developer" + } + ], + "require": { + "php": ">=5.6.20", + "ext-json": "*" + }, + "autoload": { + "files": ["load-v5p3.php"] + } +} diff --git a/vendor/yahnis-elsts/plugin-update-checker/css/puc-debug-bar.css b/vendor/yahnis-elsts/plugin-update-checker/css/puc-debug-bar.css new file mode 100644 index 0000000..649db4f --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/css/puc-debug-bar.css @@ -0,0 +1,70 @@ +.puc-debug-bar-panel-v5 pre { + margin-top: 0; +} + +/* Style the debug data table to match "widefat" table style used by WordPress. */ +table.puc-debug-data { + width: 100%; + clear: both; + margin: 0; + + border-spacing: 0; + background-color: #f9f9f9; + + border-radius: 3px; + border: 1px solid #dfdfdf; + border-collapse: separate; +} + +table.puc-debug-data * { + word-wrap: break-word; +} + +table.puc-debug-data th { + width: 11em; + padding: 7px 7px 8px; + text-align: left; + + font-family: "Georgia", "Times New Roman", "Bitstream Charter", "Times", serif; + font-weight: 400; + font-size: 14px; + line-height: 1.3em; + text-shadow: rgba(255, 255, 255, 0.804) 0 1px 0; +} + +table.puc-debug-data td, table.puc-debug-data th { + border-width: 1px 0; + border-style: solid; + + border-top-color: #fff; + border-bottom-color: #dfdfdf; + + text-transform: none; +} + +table.puc-debug-data td { + color: #555; + font-size: 12px; + padding: 4px 7px 2px; + vertical-align: top; +} + +.puc-ajax-response { + border: 1px solid #dfdfdf; + border-radius: 3px; + padding: 0.5em; + margin: 5px 0; + background-color: white; +} + +.puc-ajax-nonce { + display: none; +} + +.puc-ajax-response dt { + margin: 0; +} + +.puc-ajax-response dd { + margin: 0 0 1em; +} diff --git a/vendor/yahnis-elsts/plugin-update-checker/examples/plugin.json b/vendor/yahnis-elsts/plugin-update-checker/examples/plugin.json new file mode 100644 index 0000000..946b730 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/examples/plugin.json @@ -0,0 +1,52 @@ +{ + "name": "My Example Plugin", + "version": "2.0", + "download_url": "http://example.com/updates/example-plugin.zip", + + "homepage": "http://example.com/", + "requires": "4.5", + "tested": "4.8", + "last_updated": "2017-01-01 16:17:00", + "upgrade_notice": "Here's why you should upgrade...", + + "author": "Janis Elsts", + "author_homepage": "http://example.com/", + + "sections": { + "description": "(Required) Plugin description. Basic HTML can be used in all sections.", + "installation": "(Recommended) Installation instructions.", + "changelog": "(Recommended) Changelog. <p>This section will be displayed by default when the user clicks 'View version x.y.z details'.</p>", + "custom_section": "This is a custom section labeled 'Custom Section'." + }, + + "icons" : { + "1x" : "http://w-shadow.com/files/external-update-example/assets/icon-128x128.png", + "2x" : "http://w-shadow.com/files/external-update-example/assets/icon-256x256.png" + }, + + "banners": { + "low": "http://w-shadow.com/files/external-update-example/assets/banner-772x250.png", + "high": "http://w-shadow.com/files/external-update-example/assets/banner-1544x500.png" + }, + + "translations": [ + { + "language": "fr_FR", + "version": "4.0", + "updated": "2016-04-22 23:22:42", + "package": "http://example.com/updates/translations/french-language-pack.zip" + }, + { + "language": "de_DE", + "version": "5.0", + "updated": "2016-04-22 23:22:42", + "package": "http://example.com/updates/translations/german-language-pack.zip" + } + ], + + "rating": 90, + "num_ratings": 123, + + "downloaded": 1234, + "active_installs": 12345 +} \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/examples/theme.json b/vendor/yahnis-elsts/plugin-update-checker/examples/theme.json new file mode 100644 index 0000000..0e08072 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/examples/theme.json @@ -0,0 +1,5 @@ +{ + "version": "2.0", + "details_url": "http://example.com/version-2.0-details.html", + "download_url": "http://example.com/example-theme-2.0.zip" +} \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/js/debug-bar.js b/vendor/yahnis-elsts/plugin-update-checker/js/debug-bar.js new file mode 100644 index 0000000..80f53f1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/js/debug-bar.js @@ -0,0 +1,54 @@ +jQuery(function($) { + + function runAjaxAction(button, action) { + button = $(button); + var panel = button.closest('.puc-debug-bar-panel-v5'); + var responseBox = button.closest('td').find('.puc-ajax-response'); + + responseBox.text('Processing...').show(); + $.post( + ajaxurl, + { + action : action, + uid : panel.data('uid'), + _wpnonce: panel.data('nonce') + }, + function(data) { + //The response contains HTML that should already be escaped in server-side code. + //phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html + responseBox.html(data); + }, + 'html' + ); + } + + $('.puc-debug-bar-panel-v5 input[name="puc-check-now-button"]').on('click', function() { + runAjaxAction(this, 'puc_v5_debug_check_now'); + return false; + }); + + $('.puc-debug-bar-panel-v5 input[name="puc-request-info-button"]').on('click', function() { + runAjaxAction(this, 'puc_v5_debug_request_info'); + return false; + }); + + + // Debug Bar uses the panel class name as part of its link and container IDs. This means we can + // end up with multiple identical IDs if more than one plugin uses the update checker library. + // Fix it by replacing the class name with the plugin slug. + var panels = $('#debug-menu-targets').find('.puc-debug-bar-panel-v5'); + panels.each(function() { + var panel = $(this); + var uid = panel.data('uid'); + var target = panel.closest('.debug-menu-target'); + + //Change the panel wrapper ID. + target.attr('id', 'debug-menu-target-puc-' + uid); + + //Change the menu link ID as well and point it at the new target ID. + $('#debug-bar-menu').find('.puc-debug-menu-link-' + uid) + .closest('.debug-menu-link') + .attr('id', 'debug-menu-link-puc-' + uid) + .attr('href', '#' + target.attr('id')); + }); +}); \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.mo new file mode 100644 index 0000000000000000000000000000000000000000..59645faba22e5f3b1358ef076a01d5a7fa3aa534 GIT binary patch literal 1186 zcmZ`&%We}f6g5yD3JU~l7MF@jAn=eGUhPB?f>02mg$Po_u5xE?6T{RV*`7X-koW+0 zhy^>uFR+0P5@LzOC$M16M{p*S5}sDhoY=mPbM5P|$7Ws%jDx^&U;rEjo&)uG2OI_7 z0|a~qW`XZO7dWy<h(+)+Sb|@GKL8(r6PQ2SC&U@>8}I`73-}WF&`jfh1$+|or(n2@ z$6kD4Ca@&-k5_~^FyUI~c=Se`J*IW*s48<6*o(o49h3HCEM+5QhFsVosZFH|wN`K> zR?K5#x6H%=Hi*EEd{CkCG&|>KMHn%aMK#ohf(`}GTqVO>w8_qEYsjusZ87I}jgak^ z1b=z=Y*pmY6Da4vZbKUgT;Ekp3VMIKk87Fp(cc<S*zYN;l7gkW>PYmReZ*Oiw{rQQ zQJGG}$>w0>q|R3V?m+e&tAI-6bvUP#wByS%j%9Lz;>&3}Inz$sZ5YaXys7Jor*;dn zy&#i|6wjye#l~(4XI!Zv%K@v6lv>NTmKUcY;;7x~Srga<IoK(YE%0_YR~AZ}PJKbn zbLg%NZpitmom0lIvy+P^v$;0Il;+oTXg!oS*|1Z=x|I5sa~&v&lIT2knyI{|JeMkr zQi`Hhzo?ul<PGaKd`bp4imC4=o%(3-w|mOai7v&bJJSI7ZRIlVHM&x2g#8SEn|HRX z%l(q}A*I#T&MJ3Sx6}A+l7U-G%A?9!ebI=-N^>|VW$KqCtXwwgL#J#*X-o9%M(OOP zBClzLpCXloN)<XhQ5i14i#v9*k*Sg#4<P_;lQZHPToUElm)7WUhcDK>jJ<-gN!%O{ zB>(p8)gMt|<1=e`ScRtXSByfRLdUq(KfSFJ6!629vGE!UXnOYH)9c?7LY#*cWS6#% cwcF+j&+0z~QHeLF5H1o+|4uN~nyX0s0EpISt^fc4 literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.po new file mode 100644 index 0000000..36f3ad7 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2019-09-25 18:15+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: ca\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprova si hi ha actualitzacions" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "L’extensió %s està actualitzada." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nova versió de l’extensió %s està disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No s’ha pogut determinar si hi ha actualitzacions per a %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estat del comprovador d’actualitzacions desconegut \"%s\"" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hi ha cap registre de canvis disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.mo new file mode 100644 index 0000000000000000000000000000000000000000..ac6d20ea77cb6c6ad2aa9204312c53c86078e08c GIT binary patch literal 1077 zcmZWoO>fgc5H(P7$gP|Z>S3s;)T*rGq^c+m;iI8N6={juv{b!B8+#f%adxfUb=pSo z8#o~jobm&Z`UiRnH;&x-8(f*KlYWSm#&5^_=Iz_H=g)(guMUm-6mt}Ho6z`_!zIqr z{4)hme4&`9IH#ym{H9<Ovv(Zl<6XyjMfi~NZ}%MM5#c%EGT|@6Cxm|q?fTpdJ!%mK zJvf#MvNYrdwbP7HA;cPlgdpOggNf__AMiNg?F3zCU-X1L5t9PqkOC^uhMP>o{DPi$ zOoWgoStk}?Vw2#^8xVK`15`Se0^~7R#)6)bXtx_1{8vquZj-YVj0Ee~bs9=`F)(Z^ zWCyvvKapkmk=VpxVHZ=W4BOV7IArTtN3*8%q0soyWHp7{kTv#}G<_(0rDx1rWn~Xa zp1-=X?5%hn5!o&dVta&JJWGYrs=xAl*`raYb8T2taiJ4#r1IfFcFoW4K?Hle8z%5# zKsg4{Yi(0Eko}ibBRU!HAZsG;`%oLwIxOZuzO!}`2TNBh9|Fy4M}<a`DW0%RsruRn zL03+xu9hqI254Gc6!5qTrKQ65*7nBr{ghm<P?N%-Afsm~o!H>1DW(aJMa6z~rO{OP zo11Lynr9DmjEZfDK!&mC_^{TFP2rH$Wgyv}%v6AO&J)rLbc_5QvUey@<+osIz#uXv z)qb&<SZ1uzZO6kRF&h%Y*syi3G36%m!F8|S=IXWFm=C$LtD5(Cb|O`%>#;UIv|5!G zR$8Zi>1jD2yrF_z1yO_4nMeAxaB00^k4vA49LZK{lU6F7qaIz5l8GE}1H5N4ay#S! zQp-%6LZBG`fKY0arDA;HIy*QN<57QnG3|zl#@P)4s<`Zt9XS|}Y)cHMy^`6Vyo*<Y TBl@}XCd%Ji6XQ`rd%Dg)6_QhV literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.po new file mode 100644 index 0000000..a47c5e5 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.po @@ -0,0 +1,45 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-20 10:53+0300\n" +"PO-Revision-Date: 2017-07-05 15:39+0000\n" +"Last-Translator: Vojtěch Sajdl <vojtech@sajdl.com>\n" +"Language-Team: Czech (Czech Republic)\n" +"Language: cs-CZ\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Loco-Source-Locale: cs_CZ\n" +"X-Generator: Loco - https://localise.biz/\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"X-Poedit-SearchPath-0: .\n" +"X-Loco-Parser: loco_parse_po" + +#: Puc/v4p1/Plugin/UpdateChecker.php:358 +msgid "Check for updates" +msgstr "Zkontrolovat aktualizace" + +#: Puc/v4p1/Plugin/UpdateChecker.php:405 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Plugin %s je aktuální." + +#: Puc/v4p1/Plugin/UpdateChecker.php:407 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Nová verze pluginu %s je dostupná." + +#: Puc/v4p1/Plugin/UpdateChecker.php:409 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Neznámý status kontroly aktualizací \"%s\"" + +#: Puc/v4p1/Vcs/PluginUpdateChecker.php:83 +msgid "There is no changelog available." +msgstr "Changelog není dostupný." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.mo new file mode 100644 index 0000000000000000000000000000000000000000..9c59670712307a7dec1419ce48ba2613300f91aa GIT binary patch literal 1010 zcmZWo&u`N(7!5EuloK2gLLWoZK*J&FHf>7P19Tgjwux$VXt&C1zNV&`UD?ilNF4Yl zICDerA0Tnu9f>>QUxAmVTRUOp<@vKee}1uF{@kDY6rkM!9s;|-UEl*ywy(fF;2S`| z4`3en4K#tjfGGPng5Vc01Rj*}tsqzgAA%o&KY~N>XYdp7PcTx)?Izv`gE`>#c%;%Z z=~mPlaBoO`W2qRW(z6RX1GY@ckv7yDNS$$RGLk1!<?<-!FgVadZBF%M0di1*EjcfJ z;b?xr%?EzKG|G!iY4XbFJol0`pVA3ir;H}kr!r%~T_$0-nGOD14N2FNixGK4rQR@T zTl1cKUTml0T~$Asloiz{iHX8m`%Oo*EK3g!Vgrj4sz>pfh*m{CqBu%cmzSdDC_<vx z=Mz<Goz06Q5wB4kC(+tcR7c*fbY66<)Gn9a*o5}faJZcB8_ejekQs{(%j22xz3sit zsmwTxYAvHZYm_-3L67G%|6-I&r5okpTgSe6(Ag5})4X!KK3lP=dnQ#nOKAN_`P!j) z&6;hcqir}<p6X!~u3)AL#VhG}B>f<vFs!xn!pdB18GGy!(zq>zu32xChlg(SsiwzG zik~&61>Ty%_PAB)N~jWcRep!hPmN98u5v!1Znx3pM)xd<pVxcft0PHpZ{3ZZnW`*p zZ_tJ?5kXoF21{{~7vHn7FU{DO7GKIX*nrXSl!2y;FFGy9U1?CS@(crTtIFWfA?wuB ubgirGnN<GV)TGa^>?r#a!z{8deTEILSHoGs%F|hy=lDlbzO2ta4E_O#F(`Ea literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.po new file mode 100644 index 0000000..8f2bc0d --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.po @@ -0,0 +1,42 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-05-20 10:53+0300\n" +"PO-Revision-Date: 2017-10-17 11:07+0200\n" +"Last-Translator: Mikk3lRo\n" +"Language-Team: Mikk3lRo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.4\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Language: da_DK\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p1/Plugin/UpdateChecker.php:358 +msgid "Check for updates" +msgstr "Undersøg for opdateringer" + +#: Puc/v4p1/Plugin/UpdateChecker.php:405 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Plugin'et %s er allerede opdateret." + +#: Puc/v4p1/Plugin/UpdateChecker.php:407 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "En ny version af plugin'et %s er tilgængelig." + +#: Puc/v4p1/Plugin/UpdateChecker.php:409 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Ukendt opdateringsstatus: \"%s\"" + +#: Puc/v4p1/Vcs/PluginUpdateChecker.php:83 +msgid "There is no changelog available." +msgstr "Der er ingen ændringslog tilgængelig." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.mo new file mode 100644 index 0000000000000000000000000000000000000000..0734cae2dc9b76d41f5f6f99b1380ec2f685e1be GIT binary patch literal 980 zcmZuv&2AGh7+j!$6i)Plgi!Sn35g$h$wp9>4M9MfqKXtEnj&tIll`(;vauuEn^K9_ z;K+>wJOH=e`U)I4apXA|chjbourxcLcR$aL?fJ91@+H8y0^9;Rz%}4A;Kz61KJWv$ z4*UWL_zT<wu3iX&D!2;%4YYwrn6F(5f>rP?cpW?f-vECFuYrGp(Rw^k1}lK~;K#+1 zPM?>3^@0@d)0~aXv?4tsH_j~0@*>R?p^|f%<#Ld77_`PboX|)cDrSjvY=hpI4f`&o zX*iZD<y@y{m-Nny6*F?0{Ms<sQxm24)j|u)A<l-ZldiB-y<@9E*XWNtbYeRZ?@NR6 z!kH)?h{dW(_iazK3`>Vih)w9nRIf$rqP8yTPf*77=s_*2)zB#3@jUaJ{ZC&MKYCpD zb)<EoXQZ;ZblSwUonqgeqeGa?>1n1$`gw*|dEss6VZzTU9UMR*Qx-jz)0iqd+dJ*0 z@hGfST3R_)5I&f}q2o{P;VhS#YWUMLmR)nNw<R`~ecr%`jcBW(PBN9ov@ytB<%4*| zicRUPt2xOWMd3ym;Y&FcFQw&~bmN%9u+q&7BXhB(&D6%EaJ!h=X1(E$6J_(RqT5Z1 z?lqPIySgw#Zk4`bDvh1WzvhE|Z4%qbtc$7NZ}j<e|1l-p-)x_eVrhosF5HM3{8WOr zMQ9vxrWo-nm=@PdqoYHEd{}~GA3)?1uhM}uVem!{$Fz5xJhBCDUY+Pnj)lAxra4lK r+@wZMr$^sZ!lpnh&ns;%f8cG%i7PnIeIy4wkqUQYPJXm|CXW9A%d;LH literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.po new file mode 100644 index 0000000..25234ba --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.po @@ -0,0 +1,38 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2016-06-29 20:21+0100\n" +"PO-Revision-Date: 2016-06-29 20:23+0100\n" +"Last-Translator: Igor Lückel <info@igorlueckel.de>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e\n" +"Language: de_DE\n" +"X-Poedit-SearchPath-0: .\n" + +#: github-checker.php:137 +msgid "There is no changelog available." +msgstr "Es ist keine Liste von Programmänderungen verfügbar." + +#: plugin-update-checker.php:852 +msgid "Check for updates" +msgstr "Nach Update suchen" + +#: plugin-update-checker.php:896 +msgid "This plugin is up to date." +msgstr "Das Plugin ist aktuell." + +#: plugin-update-checker.php:898 +msgid "A new version of this plugin is available." +msgstr "Es ist eine neue Version für das Plugin verfügbar." + +#: plugin-update-checker.php:900 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Unbekannter Update Status \"%s\"" diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.mo new file mode 100644 index 0000000000000000000000000000000000000000..85afecd344184a07c3ff0117b87066af6850078c GIT binary patch literal 1140 zcmZ`&O>Yx15H(Oh3I{~bNDP%KQ3)?e3R1OE4ke_hqJ@a2sJF=7ohGImJF>lL%WvR@ z;Ep(Q<O1SEd*naBAK*vuHk-CV6_(z<wRb+=%#MG}&%GB|*MZwW7q|hu1&Z|*xCMLz z2>1ys0DpicaPyK7ZSW>og5QBZ06zf2e&>o1OW-4L1N;eG2mc1Ig6HRixC8Ej;WAm5 z@x*6=BXM<dBE+>R7dj`aHQ;2Q_N=3Pl&Zj9bO-F1v?pUJ87R}|%=Sr*mCn>|#*x@I z`^FxasRL{ffgSmvLhfl{(JzQFU>aq4UmFTKWIVS@h7V}W&TDJP?onZ}=ueH1Z6?75 z@0QK86nX-s9M}!Dfxx{}#iXG3%zaYJqK__WKw<x;%tsU~6;(%~<Lqlrf?QAKt5Rh= z6(`Ha$Z4IG&I|dH$GRv)K7nsc^=iE;tIM)pquQgmwk)d;tJTT|T9>On%Py;7OqI>` z&GvchT2!sHtO;y_>>iB}CGcT*Fv^rRjiT?)b7*dN*W}8%om0l|v6F3+*i@T-Oe?!O zRCeT3HtbZeE~bv<R0pa@%Q!DL^0D$fQehBN6jeG|?o=k%tQ-2641N=~zFBV+_2RX8 z&(Pf_)s`CP0k&-J5^j~MVk%{wg@49J2iB#2L;Da@uh-~tqjwnB?$;AA8sSl6p*<@l zp0y?>_PzGjOdeJ)8FV03Rw1?`T6Q>cc2{A%G!4`dsU+ko({EIQ{$pC7+sScm$Z;R} z9eyZNqK3QLdP=n)S)(Uo+s1&V#n+6IY19;B59^tjCtnOsd}57FG^~$5FZ$!}7<ok| z=dmhBxU|Y<ripzx`S?#d2=llE`6OjIwEwMQ#t~OSIfclPXlJL_0~e)CaHcf1k@yRY CP+5`y literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.po new file mode 100644 index 0000000..80b1c1a --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:13-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.mo new file mode 100644 index 0000000000000000000000000000000000000000..de9c75268fa512015414f8f8314fae704bbe40ea GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGv`E!NS(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r2@hwIx|ys#YuOXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cii CxLK0` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.po new file mode 100644 index 0000000..1ab41b1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:14-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.mo new file mode 100644 index 0000000000000000000000000000000000000000..de9c75268fa512015414f8f8314fae704bbe40ea GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGv`E!NS(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r2@hwIx|ys#YuOXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cii CxLK0` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.po new file mode 100644 index 0000000..1ab41b1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:14-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.mo new file mode 100644 index 0000000000000000000000000000000000000000..de9c75268fa512015414f8f8314fae704bbe40ea GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGv`E!NS(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r2@hwIx|ys#YuOXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cii CxLK0` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.po new file mode 100644 index 0000000..1ab41b1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:14-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.mo new file mode 100644 index 0000000000000000000000000000000000000000..de9c75268fa512015414f8f8314fae704bbe40ea GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGv`E!NS(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r2@hwIx|ys#YuOXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cii CxLK0` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.po new file mode 100644 index 0000000..1ab41b1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:14-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cf71f422ae7911a4d5c62b47aa7f1d87d6c2ff1 GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojG6i_u$7A2&pqJ@a2sJqCWxlK$bc4T|{;2YQ> z*dvxK*??HlF8K%e0X~8=nY2w+Vd=~nd+y`hJJ-KwXFdq5>%eWG3)}$S0mb?T+ycG> z1pET#fWJT!xOqv4Hh3K@!SBHzfu8_jzjZ~31@Ixb0saiGga3e+!Lu_$+yQsNa2c=5 zc;d6bk+?cO5#ri}3!UTD8gQ~pJJwM?N>yMlx&wAh+LN)A43z0}X8WY}l+M(4#*x@G zyT<ODi34m9fgSmvLhfm9-p`3JU>aq4UmFTKWIVG>hWBZYo!8co-J!x_-k%sD+f;%J z-YuJFDf9$NIj|dQ1A#jyib+B5sr$H=c^_TWfWpqF%tsU~6;(%~<Lnzwf?Q4I>r!Pr z5hu&W$Vr`*&P(}<_jFN+d<x%~>eYHxRu^TxMzx3WqsOxPuv)FGp>?_Hv+S}O##C8f zU2mVou0_>K%bLI@$nN0?Q34-?2ct}B(<u7xJcs6HcSSCp**RtW4m;U4iA}ZX$F#Jq zLuE@oW5Z4b>tgCyPIaJqw21R^BcCYGBNYZQMNy@b<xXXC#k!%7$>29(>znmPQ7>Mb z_YB=_Qf;Ae7GT5XF5y<GDyCA_Y53=SxNlwR*R&5Y^?HpSH+lzg?S4H0qY)l87TU8? z;%RGQV&7|TOyyzal0gSjWffv8qGg98XSWr`OVdCdl1f6ZGW}L1=s%|Qg&iN~h8*{i z-{FTcC2F{>t*2D`ku`cewrvb(T71nYnM6%7_OPCcdHmJj#3$C+M8o>%%e+7Ofst2a za^6$r2$xpb)HJaV$DhungD{UvkdITAL;K$<rW|o4lv9WtiFS5!J#bOV1gA<<8;O6K C!C9C9 literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.po new file mode 100644 index 0000000..c404f91 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 14:56-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.mo new file mode 100644 index 0000000000000000000000000000000000000000..de9c75268fa512015414f8f8314fae704bbe40ea GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGv`E!NS(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r2@hwIx|ys#YuOXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cii CxLK0` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.po new file mode 100644 index 0000000..1ab41b1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:14-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.mo new file mode 100644 index 0000000000000000000000000000000000000000..de9c75268fa512015414f8f8314fae704bbe40ea GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGv`E!NS(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r2@hwIx|ys#YuOXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cii CxLK0` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.po new file mode 100644 index 0000000..1ab41b1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:14-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.mo new file mode 100644 index 0000000000000000000000000000000000000000..9ce83f66f47ed754606ba19f3f0885b41a7be0ff GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojG6ht*q7A2&pqJ@a2sJqCWxlK$bc4T|{;2YQ> z*dvxK*??HlF8K%e0X~8=nY2w+Vd=~nd+y`hJJ-KwXFdq5>%eWG3)}$S0mb?T+ycG> z1pET#fWJT!xOqv4Hh3K@!SBHzfu8_jzjZ~31@Ixb0saiGga3e+!Lu_$+yQsNa2c=5 zc;d6bk+?cO5#ri}3!UTD8gQ~pJJwM?N>yMlx&wAh+LN)A43z0}X8WY}l+M(4#*x@G zyT<ODi34m9fgSmvLhfm9-p`3JU>aq4UmFTKWIVG>hWBZYo!8co-J!x_-k%sD+f;%J z-YuJFDf9$NIj|dQ1A#jyib+B5sr$H=c^_TWfWpqF%tsU~6;(%~<Lnzwf?Q4I>r!Pr z5hu&W$Vr`*&P(}<_jFN+d<x%~>eYHxRu^TxMzx3WqsOxPuv)FGp>?_Hv+S}O##C8f zU2mVou0_>K%bLI@$nN0?Q34-?2ct}B(<u7xJcs6HcSSCp**RtW4m;U4iA}ZX$F#Jq zLuE@oW5Z4b>tgCyPIaJqw21R^BcCYGBNYZQMNy@b<xXXC#k!%7$>29(>znmPQ7>Mb z_YB=_Qf;Ae7GT5XF5y<GDyCA_Y53=SxNlwR*R&5Y^?HpSH+lzg?S4H0qY)l87TU8? z;%RGQV&7|TOyyzal0gSjWffv8qGg98XSWr`OVdCdl1f6ZGW}L1=s%|Qg&iN~h8*{i z-{FTcC2F{>t*2D`ku`cewrvb(T71nYnM6%7_OPCcdHmJj#3$C+M8o>%%e+7Ofst2a za^6$r2$xpb)HJaV$DhungD{UvkdITAL;K$<rW|o4lv9WtiFS5!J#bOV1gA<<8;O6N CDOs5S literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.po new file mode 100644 index 0000000..0e29c45 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 14:57-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.mo new file mode 100644 index 0000000000000000000000000000000000000000..92c4f342e311cbbf2ad9cad5699809f21c939a43 GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGluFe^S(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r7EK+LEk3u2w7SXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cil CAX$_E literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.po new file mode 100644 index 0000000..c0db8e3 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:15-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.mo new file mode 100644 index 0000000000000000000000000000000000000000..92c4f342e311cbbf2ad9cad5699809f21c939a43 GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGluFe^S(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r7EK+LEk3u2w7SXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cil CAX$_E literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.po new file mode 100644 index 0000000..c0db8e3 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:15-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.mo new file mode 100644 index 0000000000000000000000000000000000000000..92c4f342e311cbbf2ad9cad5699809f21c939a43 GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojGluFe^S(K2XiWVZ8qV6Jh<~A{%*pcn&gKuDm zV2@a`WCLPFyW}6>2lxoiWYRWOg{3oR?75F~?_B?$o%tZJZUT3KE^rHY2NdfYa0mDf z5bz6_1O5U{;Pw?E+Taba1iuG=1bza9{q{8>7Qjc~2KY0$4*mmP0ng3|aSz-D!)3g# z;)%}!N8<YUM2H&`E_9ApYrx4K?OI3qC{=;I=nmL1X-~#dGEk<^neCI>S2|NW8AoEv z>=}DtCJwMc1a{<u3c07bc|Rw@fN7NFeQhY{knzk489tzWc3xXUc9#l^d4FnzY*Ps? zdADqyrO*>7<-l&J4Fv9<DkcTJXYS)#=6!To0}8vCG9OW}R8$>_j<at#334r!uS=Ej zM4T)eBPVrMIxpob-q%GT@+o{{s#oh(SzVO%8r7EK+LEk3u2w7SXkD)QEW50RF;zC! zHrnU0Yf-h*vL>(zvU@Z_l)#7K(I`{eG>X1E&!M^1U6sq{c1{_;%TBgUVpDDUF)i=t zP}!Ex*sxQ<x|lkaQyr)tE#kb~$S2D4NQFU6QB>(<xl@^3wQlHRGWbo{`ewaR)Qi{V z14H+lR9k4A2iUZ^OSo04im8-!7XCRO9axw8b?rk;y<Vfojox8gdst7vXoN?Nh4!qJ zc-ESj*!S9-Q+ZgqWYB?BS%uh&XxZV&*&T)P(lk&<q>_-UOutnL`j2USVaLb0A;*2> zcle=9i5l)`>nYWKWQ`t=Z5soc7GE<;CQ(z2J*=l<o_sYp@rgAy(Xc-LGVhOnVB{5< zocC2Z!lhL<HBIcp$)^kHAk5<u<l~g((EhiIDMwrh<rE@EqMe;y4_uTo!I{$3M&cil CAX$_E literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.po new file mode 100644 index 0000000..c0db8e3 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 15:15-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.mo new file mode 100644 index 0000000000000000000000000000000000000000..9ce83f66f47ed754606ba19f3f0885b41a7be0ff GIT binary patch literal 1140 zcmZ`&%We}f6g5yl3JXNnNL(saq7ojG6ht*q7A2&pqJ@a2sJqCWxlK$bc4T|{;2YQ> z*dvxK*??HlF8K%e0X~8=nY2w+Vd=~nd+y`hJJ-KwXFdq5>%eWG3)}$S0mb?T+ycG> z1pET#fWJT!xOqv4Hh3K@!SBHzfu8_jzjZ~31@Ixb0saiGga3e+!Lu_$+yQsNa2c=5 zc;d6bk+?cO5#ri}3!UTD8gQ~pJJwM?N>yMlx&wAh+LN)A43z0}X8WY}l+M(4#*x@G zyT<ODi34m9fgSmvLhfm9-p`3JU>aq4UmFTKWIVG>hWBZYo!8co-J!x_-k%sD+f;%J z-YuJFDf9$NIj|dQ1A#jyib+B5sr$H=c^_TWfWpqF%tsU~6;(%~<Lnzwf?Q4I>r!Pr z5hu&W$Vr`*&P(}<_jFN+d<x%~>eYHxRu^TxMzx3WqsOxPuv)FGp>?_Hv+S}O##C8f zU2mVou0_>K%bLI@$nN0?Q34-?2ct}B(<u7xJcs6HcSSCp**RtW4m;U4iA}ZX$F#Jq zLuE@oW5Z4b>tgCyPIaJqw21R^BcCYGBNYZQMNy@b<xXXC#k!%7$>29(>znmPQ7>Mb z_YB=_Qf;Ae7GT5XF5y<GDyCA_Y53=SxNlwR*R&5Y^?HpSH+lzg?S4H0qY)l87TU8? z;%RGQV&7|TOyyzal0gSjWffv8qGg98XSWr`OVdCdl1f6ZGW}L1=s%|Qg&iN~h8*{i z-{FTcC2F{>t*2D`ku`cewrvb(T71nYnM6%7_OPCcdHmJj#3$C+M8o>%%e+7Ofst2a za^6$r2$xpb)HJaV$DhungD{UvkdITAL;K$<rW|o4lv9WtiFS5!J#bOV1gA<<8;O6N CDOs5S literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.po new file mode 100644 index 0000000..0e29c45 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2020-03-21 14:57-0400\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: es_ES\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Comprobar si hay actualizaciones" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "El plugin %s está actualizado." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nueva versión del %s plugin está disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "No se pudo determinar si hay actualizaciones disponibles para %s." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Estado del comprobador de actualización desconocido «%s»" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "No hay un registro de cambios disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.mo new file mode 100644 index 0000000000000000000000000000000000000000..a68f1004811da6f8438dcb46da94dd438ba24843 GIT binary patch literal 1128 zcmZWoO;1xn6n!dcQdhb(E^bJSA7q~I6+fECM^FSqgxEkK?#R$i+b55iX5JLUxX^{j zf~|jmh1EtOfHBeE!D5~yE?l_vFL<UU0&$Yld+*FW=bqcNKQHyX^Ki}qSAa?20`L-W z=L2vP_y}AC_5lKZ1DApGr#!D0u@~_VFa|tCedmnlT|<0<7$R;W&LQq24kGsTcph3i z2Ui}-jt6&f+I<{5XI*}uq*$S4q0?ANQdKhbIHg9?ti_U$@ns$-d?69OH(D3vMXD-I z%|?YAk$R=N(86^|Mddn|HIb;=aZ2f=ShGP!k>mQ_tX!08MILH_4soF=HQY2)>b;uw zdPS|CiLzl66*kv37#%ueT?g!tl`B3eu~99!!4m8t^drg#;awKwS$L1a+fhF33&J2k zBbye>v0L_dUl_1_!S(eAeL;VJkelSGVI|FFnsB3Z1YgZctY~`f$>e<+tcxU3BYIgS z+%K!8Vf4#dlh*_*3BD8&oYRb1O#}_bvZ_WJTBWY^V|~;cQI*e6Oy{O1rpAsI4E-QC zs-zJT238x`#E9qSRwLoD9B|*VPK6noEse9nQJ*tf6`GC7vZ}<g7Exg#Ho2$lk&r@n zHz+Dmi4BE*!7t#YTe1f{6%B6c5&3?um^3v{*tpV5X+#pg0+i`ce!zY0NQbUV8m92Z zz!85&HFa5xc5Ow}_4QBvu~=PEx{^-DsflQQeqdf4qYAFe^&*C|0ONCBwr2P2R`!<c zC%b*H;Xw9--LWl~w6fQBH(SrvTtmy<+V?K~Vz;|Dd$vu!*CFiKy%SuBWb1Ypq&?`Y z;mreY$9_K1)wbUcHZa#ow~3IsnQekE3;`p1V_R<aF4;}HWp@rXvNiX5=(>fZ4MwZu zD0_3T@#CW#X1B@5BH7ztuORM>xV2jLi+l1=f3@F`b_U@Vf-R`G-B$m$|9^wdU*s>7 C2(8ip literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.po new file mode 100644 index 0000000..20b6938 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.po @@ -0,0 +1,38 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2016-02-17 14:21+0100\n" +"PO-Revision-Date: 2016-10-28 14:30+0330\n" +"Last-Translator: studio RVOLA <hello@rvola.com>\n" +"Language-Team: Pro Style <info@prostyle.ir>\n" +"Language: fa_IR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.8\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-SearchPath-0: .\n" + +#: github-checker.php:120 +msgid "There is no changelog available." +msgstr "شرحی برای تغییرات یافت نشد" + +#: plugin-update-checker.php:637 +msgid "Check for updates" +msgstr "بررسی برای بروزرسانی " + +#: plugin-update-checker.php:681 +msgid "This plugin is up to date." +msgstr "شما از آخرین نسخه استفاده میکنید . به‌روز باشید" + +#: plugin-update-checker.php:683 +msgid "A new version of this plugin is available." +msgstr "نسخه جدیدی برای افزونه ارائه شده است ." + +#: plugin-update-checker.php:685 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "وضعیت ناشناخته برای بروزرسانی \"%s\"" diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.mo new file mode 100644 index 0000000000000000000000000000000000000000..24639b694e7ba21e2b5f9997b9f12d2d831ac69a GIT binary patch literal 1208 zcmZuwO>Y}F5M>&-1=K^)9{T|d3>Zk!aJ##85MxybNff&<YNJ9U2fYdO?nq)nkqeS5 z$G7}|+=?EWQ-NHPe~_Mv!pHoF0`0lS{(!!fWXVBF;O!&1Gn_X=&YvG|{46lu2R;J^ zzz4unpdGJ(kAU9*0$u}~z(2q)@Zl99_P|GA3H}NE7w`x0Db~-g3b76T9lQnp7rX=h zWJ8F3@O|*-;AddC%*Q+U!c1UGygT0!;=LueI_IM|;qnoUoTsL)ROBEA6ZT9xkabi} zlpV8iV^TAvjXE)$h-3T6x>LJ!fDKMyPa&$<1lrsRn<7q_YSWChrKqFfjXPxdlxFOM zc9z_TT8pi4VT5Rx0=(tjbB(E>CsM_c{Zv~B99<|T1-&cxc`jQad0PV#doyHHQ*_j3 zoru1754nu;ppp+3DvPB!xhRZW=Gp0gKaf4oDk2kk56%VUX?9a)nasB-yIG|9mua4+ zFqA*=Ot%@Y?RI3E%PglXExyiWdINTcsBxplEC;Nn1$B-Nj`r3fvLx;FoQ-Uw9GumN z7Wr}fsy0g7ZhJvKaNIo}?8}|ComV!D*vmazx=Pz|K|3cpc7BxKvSqKL^9A)CS2|Lj zq{%k^ESB=F3S6r=DJV%gebabl<i7LMP>{uqVi|VxZd)2mcduExMcEhKwf}wB_>y}I zSp_Y0txo@r&rY4M!l4eapy9AP<nHiskzLPAFe(v{WGmh*G*&!Q*4eWu(>Lq+?eP?k zF)7{j)~a{~jr_28=aLXszMS-ticFDAM?5%x>GeqCr5X-2)dAo0U+EzPivvUU?<c>U zks{TUjh*jWW$@nSmKTOp=}<eXmwiCBcPHlj1>|W|+S-OVL<)_cG3N7DIL2GGu9>kh zylMa(YY-0?$#&imXoc4E^6>}L+J(@DYE@L{FPASLou;Y5sci}?VQ+d<jjR^&5C1RD IGVetE2fj;iPyhe` literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.po new file mode 100644 index 0000000..5dfa8ba --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2018-02-12 10:32-0500\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.4\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: Eric Gagnon <eric.gagnon@banq.qc.ca>\n" +"Language: fr_CA\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Vérifier les mises à jour" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "L’extension %s est à jour." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Une nouvelle version de l’extension %s est disponible." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Impossible de déterminer si une mise à jour est disponible pour \"%s\"" + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Un problème inconnu est survenu \"%s\"" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "Il n’y a aucun journal de mise à jour disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..a492d96f6eb4b2d988877b0f15c6adc60613195e GIT binary patch literal 1066 zcmZuw&2AGh5H?Ua1TJs|q*0|xAn<k*idt<*r4rf_k+xAuD-KAJyF1Ccb?lYxO<IWq zFTsHu$M(PzaO@*+MI3kn-T-E^=?|h-zWr?HoAI~f*`N1jJ~0}%2oDHt!fnC_LNSgB zcL^s1Abcat5`GXGgg*pc%&#%_n{Yt5PwV$L7+WAdB%UMwO1wn;o%kW~of*bRIvLmL zN!yIJ*v-jK>1R4EshMJY0DWU2&l2I$v2KbMK|0U|;#BAXDl-5v5>kmhg#p{q2ilDF zG=Mae0WCN$eC}X&&doBPB4jEbNDW?kg)=LlaSS80P8toS4~1gRor&nQO9%WHO_u%@ z=NWhdh2Ma6tl7ud^H#!l%ly$aEiYe*PaRe|TV39?C_H)KuP8WzT3B7=Vey0NLiGIE zldu+sB;?yTl7-i+bql4gP1VW80C^Y1Fro_Ni8QdiyVYKS7peDIG(SHcj{`e0N(8YP zE?3S%BIw)R+ID55wXu5PyBdU*rqLd?=iQ@>40=5D^O+J-*NfY*4t-;%yT+F;bXI8B zN6S}rY!ayl5iIRVUwOyZQKJ>!*a$iX6X~HAgh7q|DVO}EaF_|7Mi2y*j>@f2e9hRQ zi$K%$(b6?)^`e?IZ9LMj4AsZ=i}<%Dw=p(LTM?AL&a=P4qp`7xYfI-N==JJ7toIJ1 z>eE_GOqFo-l7)Fydfb#TmC3>S>g(3#r9)8IIPH*49+J@t+dVz8vM;IS6gn76N6*tQ zuuo=KOM(9N@$(S~5P6*I$*vX(5}YW{gpf#=87-#`4Vg82>hyR>jZan7ItO$fTy955 o^GQ$dXrxafAE8os-pQ0!(Rp-9s3)yWJzYdzPT#&tFf|;ozeSTj4gdfE literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.po new file mode 100644 index 0000000..9f18e2c --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.po @@ -0,0 +1,42 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-07-07 14:53+0200\n" +"PO-Revision-Date: 2017-07-07 14:54+0200\n" +"Language-Team: studio RVOLA <http://www.rvola.com>\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.2\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: Nicolas GEHIN\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p1/Plugin/UpdateChecker.php:358 +msgid "Check for updates" +msgstr "Vérifier les mises à jour" + +#: Puc/v4p1/Plugin/UpdateChecker.php:405 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "L’extension %s est à jour." + +#: Puc/v4p1/Plugin/UpdateChecker.php:407 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Une nouvelle version de l’extension %s est disponible." + +#: Puc/v4p1/Plugin/UpdateChecker.php:409 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Un problème inconnu est survenu \"%s\"" + +#: Puc/v4p1/Vcs/PluginUpdateChecker.php:85 +msgid "There is no changelog available." +msgstr "Il n’y a aucun journal de mise à jour disponible." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.mo new file mode 100644 index 0000000000000000000000000000000000000000..4789ef1da358b7fdef2879615c49eac1fb2dad98 GIT binary patch literal 982 zcmZuvO>fgc5M7{v6i#qKAPz$$#7DIzPDNE5f+!)S6)8m2MckroGO^v*yVmYHB@w@X zTMt~gl@mR1LgEit{Rf<pxbQm|<0vhtD?Ps*@66k`yYutP!be8q0^tUsL%2kEPbkJ0 z!ac$v;WFU|0SLbd*9jNTFjgh568|E!35yipKF8QK;w|DrHzB@C{DF9h_%ku3{v9-B z3xvW$G0v7W|DG>qs~~X?#;8rCB&Z?SFfx$FSrAE}nHY;G7CSLItQBH^1Vg1EO9#TD zVSb1ji!7<29|{>@tb&sz{=Z^b3RXc;>#%J(l4?)Rw5XiKQG>C<W(KOaOqF%D+Qq)* z8w38PH0aHo@zMdGRaLsLeBRP1EFFSBBYh9*HFufUT<*G1cfI=3V$H49D3QO$aa0`k z^t=aUUPl<qeJ!Mkg;m-EUnKc~fmJ!s1+ObT&JSz|k3y@G$;0}SAfbzL`YL%`>CjDN zB0%n=NIaOw9)wwMeY>)`vDrR8k?YhdEhQ~V+HsPSb&K!p{WKPlY!uh34cg|mzs6UN z^9pA})VwYGY7oi5gO#1gR^IaGC{dS|y9x)91=m?|mT9F7`BPyq6*lz1aVp(7(<0_; zN+-qxNzYE9Y1SLXJ=3&#N5ah}xOW@J0$VE6eQcG!JSdIL<zL`rPw9c_M8<m1>ot0K zq7;Shhh5s8*J%F=%RlWFy*G{WZ;&7A5be=EU<?9A5eE68ndV>VSD1gFvNatULm~a8 zlo;jFzMfKm>?J1uRnMEzVeKiY&H7o2REtp|>#z-zQ1e>Sq4nWu+GNF8dgRPZMcI&l E0BAre<NyEw literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.po new file mode 100644 index 0000000..df22657 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.po @@ -0,0 +1,41 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2016-01-11 21:23+0100\n" +"PO-Revision-Date: 2016-01-11 21:25+0100\n" +"Last-Translator: Tamás András Horváth <htomy92@gmail.com>\n" +"Language-Team: \n" +"Language: hu_HU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-SearchPath-0: .\n" + +#: github-checker.php:137 +msgid "There is no changelog available." +msgstr "Nem érhető el a changelog." + +#: plugin-update-checker.php:852 +msgid "Check for updates" +msgstr "Frissítés ellenőrzése" + +#: plugin-update-checker.php:896 +msgid "This plugin is up to date." +msgstr "Ez a plugin naprakész." + +#: plugin-update-checker.php:898 +msgid "A new version of this plugin is available." +msgstr "Új verzió érhető el a kiegészítőhöz" + +#: plugin-update-checker.php:900 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Ismeretlen a frissítés ellenőrző státusza \"%s\"" + +#~ msgid "Every %d hours" +#~ msgstr "Minden %d órában" diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.mo new file mode 100644 index 0000000000000000000000000000000000000000..4b40d32304dd2746496014f89ffc22d7a2b97b53 GIT binary patch literal 1135 zcmZWo%We}f6g5yl3JU}aHn6x<ssMq*B!F5b$^t?Q5iLYCMU_}Y?#xYMI<ZH#r;mSN zhgk3h@CmR)EcpU9d;uT9nY`LkOJ~m5b06nk-}!TO;gi6+2;2a=z$M@VP_A#l72rES zz%O7C_zN_F%V&gG1#f^Q_#^l;@B_Gp{kwBQJOn#%4g3Whfq#QvfGZ0^TnBH0;WA!l z@x*6=BXNFwBE*F$mpaF*HRNQM`qojArz)@)-61<B?a5e5hRO^$vjb9lN@r>(<Eq#) zyT<ODsRL{ffgSmvLg8s~$uEj9WXiK*pbZ5bGG2H>hWBZYo!8co?Ne#7<Yz|6b}Ydu z@0KmH6nX-s9N3Mtfx!MuF)8SsyN_#G^3~HCP}s?oMNYv|S#?!(oPEzpknL2yov4hb z;^d?;a$0Al^IE>)JzW+epTRe#dQ`8==#i{P6h(1u`EFE?qRKj2SEvEYE~`;Ym5uhs z>QU@kHLA3%32cJw9_EM=_#oWRGo?+V?7Q<Enp@p9xpHLZl<|Fba@8a@)n*XW%8m|| zZTXxHI~A;psbe|SfgT|Kww!F_Q{_2VVHi`jTIpnkQ<+?|ZscP!xF&3Uv)(A{#cT7n zp_@&r-Dw;J*tCU9xHVA~(?r%h{7XLEw=VVT+J~5Wy+)54y@R-RubzO>2#*>|?b$?P zy8L+FotSj!wY$esv2w|<1GO@O-ip9==)O)Aslh;7XVeHi)8ZB8D7p3XE2%6g3^^Vk zyTf&ImNAXcA2{L0Q|)tW^o}k^cM~%T6HN(P?`)RYlTpdzgY}6nU^brQEu+X3c2CWQ z7ZEv|%`GMv3QnXbb>S?x-j9=(eq;R@QqL2~(0ja?Qqf!_<@lG%`ECD~W#$oVRr~{k C>Q&|d literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.po new file mode 100644 index 0000000..db62bb1 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2020-08-08 14:36+0300\n" +"PO-Revision-Date: 2022-05-20 00:17+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: d79\n" +"Language: it_IT\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p11/Plugin/Ui.php:128 +msgid "Check for updates" +msgstr "Verifica aggiornamenti" + +#: Puc/v4p11/Plugin/Ui.php:213 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Il plugin %s è aggiornato." + +#: Puc/v4p11/Plugin/Ui.php:215 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Una nuova versione del plugin %s è disponibile." + +#: Puc/v4p11/Plugin/Ui.php:217 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Non è possibile verificare se c'è un aggiornamento disponibile per %s." + +#: Puc/v4p11/Plugin/Ui.php:223 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Stato di controllo aggiornamenti sconosciuto \"%s\"" + +#: Puc/v4p11/Vcs/PluginUpdateChecker.php:98 +msgid "There is no changelog available." +msgstr "Non c'è alcun registro delle modifiche disponibile." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.mo new file mode 100644 index 0000000000000000000000000000000000000000..941b6ba2f4d759727a71a177592dc432753d6a85 GIT binary patch literal 1454 zcmZ{i&2QX97{&((Ukeo<7li0xh_olLy}PJv>NJQDQdCHU3)`wEqKS8Q*NxY<JhR#4 z7TZv&LM2p0D%v7M6)0)xHYgFIRaO2CP6#^6CN~cJ13a^vbW2-Ce*Adsci#8+j^~f( zhrS{hPeOa4Dzpds3DV<F=sD;w=tbxsh(dcFB4ikD!k>m8hL6ENf=|LPzzz6q_)`xP z@+|Zc=6i<-c>z8Ge;Mw;IXs3x1OFX<0KN@B49`DG$m{Sn9I40?&?Ar@2qAb)9)})- z^w52v)L=|BxI0H{VN6?5l}RqhbQp8$1$fnD(hCF1X2X`Gc|j@-u0IJHgw$=Ypw9iU zPT4&3d^YQIlN<@=g0LOzq(TgG^Oy?BWJ}QDyci}&J>I5OF0n=s+2AztTXip>(vv<P z8m9q1&+}O5!eNc-h`iVhLg~Az-M4xoZ248dNnL=)O)mg#ZMQMX0DotBujRZj?`J@l z|1H^ys0^vz9FsV4c$~Y^I8-%`_9<<ebKb8Q6EW}Ymhm>?Y+5Q5_Zx+>QQSw1WxG&* zrLezHK%nsfpZ9cg4~#38`f*cCNTU+7K=@3Cu}vkLqX%#+mrMKJtT(ZFrW-cj$W7rV zv{;=R70#L<*`3?;IGcIb$xR=co*aM{%|dP>3?vVbeK7*2<O|Y@eC7qC`j5tf%dsPs zgT}}pPE*u)Y)l4jSoMOsO-E)unLB2@!vh}o@tlxXJxNPu$$Sl8`cvaACV0eT!=|Qb z-E)mck?*;^9TV2E@oC4g7FaWiYM#%9)sWTD71o?5Se<!RJB+JQ%!RPpk>U0m0JT0h z!V+FH^0^^o>_yzDWB1!^(Q;aD&hc9@^NoWz$ik)p7GNsIilh2C;c=`mI)HtTFX}R4 z$`jJ2Gc%(z3wH6<k~@g_kh9orIB3Wyprss9=|z=gDm$yPPgQnPWhYg7X6xdO?aQZ0 zUZ~`XN>)_zu}XeWNoRX?eQRTlbkA>em)ACb{=R#4LnYT#lB)ESN^Ys-yh^`RODR#= z7dlz`tI95^Y<*B9>GX4}<We_V-|U>*Tv<lqty8~rKl!Xz?ecD}vnu%(xm0>xWhZ*s ze#7(MH_zQ(`X(=MBYhn3Zh!aV*2)d=(q1F0DqU0QiY}aVx)+uJdoNJ(`CZgsYh=AR y=?qBkY{yP0=y0v7<b-}m&upGt=`LSIA1XOL=v_~Dz#oWnO)Vw=Lxhz*kbeRCXDdDc literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.po new file mode 100644 index 0000000..5a5c5ff --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.po @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2019-07-15 17:07+0900\n" +"PO-Revision-Date: 2019-07-15 17:12+0900\n" +"Last-Translator: tak <tak7725@gmail.com>\n" +"Language-Team: \n" +"Language: ja_JP\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.3\n" +"X-Poedit-Basepath: ../../../../../../Applications/XAMPP/xamppfiles/htdocs/" +"kisagai/wordpress/wp-content/plugins/simple-stripe-gateway/Puc\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-KeywordsList: __;_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" + +#: v4p7/Plugin/Ui.php:54 +msgid "View details" +msgstr "詳細を表示" + +#: v4p7/Plugin/Ui.php:77 +#, php-format +msgid "More information about %s" +msgstr "%sについての詳細" + +#: v4p7/Plugin/Ui.php:128 +msgid "Check for updates" +msgstr "アップデートを確認" + +#: v4p7/Plugin/Ui.php:213 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "%s プラグインは、最新バージョンです。" + +#: v4p7/Plugin/Ui.php:215 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "%s プラグインの最新バージョンがあります。" + +#: v4p7/Plugin/Ui.php:217 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "%s のアップデートがあるかどうかを判断できませんでした。" + +#: v4p7/Plugin/Ui.php:223 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "バージョンアップの確認で想定外の状態になりました。ステータス:”%s”" + +#: v4p7/Vcs/PluginUpdateChecker.php:98 +msgid "There is no changelog available." +msgstr "更新履歴はありません。" diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cea26dda30ca887087e965d5b494716e48d8416 GIT binary patch literal 1211 zcmah|&59F25N>r<hzHTLhuVb&MSD!5Vwf0FV^+jnj2gvT=*(1-Hk0n5yJuH@20e+- zA>Q;T9t9u4ClK@z{3ericUi%PFW*e3e!i-y`f+yUy}&sMoC5~HDc}uIo=?CT;4?tL zH((9;33PzdM}+8sx4;to4*U!F0+jJS9ur~}{2hE1{2P1`yuKnt8~g}d`n?6iWpR$; z7iI!i;`ri5h!aaLbuLbK%E^qz)=`nCDzF!WDLW?Z$yiFJ%1k)36H?nsXKIvjB%Yd? zu{&nz02@SLM?R=fcv@TcYa&dU@~oI>LqUg(S8kKx9olB+wKZhNR9dY2T_a@Mm*9|h z*A`g{J%LgV?B?1);CNRtDd_#{zNls0M~5|_u!AX!oPwpY>PYmReZfhP_fz?-QW-DB z$*M7OS!b>Pa3H&mRX`>3E}Ua()*CHZzapF0sL_fW*DltZ^*RjYW8T(f#s9Rs(yZ(@ z(c?l*SPodtW2$Z4-|Fp&Xhii|*P6g4$ib@|*#f@|m-9?%(=I=d^Bg))2OF}rXXljh zV|KD<5}Rr>iK#Wxq4r$fW5Z4b>tgC#PIaJ0)QYZ04g6PK$UDk&uEI2?D5~|d!l_Jd zSU2}E8GKW``cAW5HV2QL^M+PC)VR>z3-H7iF5zyaET&4@-|!Fk)sA(k-_$<DG#s{v z+#bG+8<(01xVEW0>MZqVmCOx1&*+}D-m~#^V_d%9vU$*R{TijsRlrF2D6#XK@UB`3 zsoC&OZ=WVsE}8aGmaL<&nkZZ9Y{nQ|o0HL8>~J-oSb?4^=YPU%_HDq3eKOUvky0)a z53v?AHYx9p{Ybx{WEt~N#JJjuDr_0`Kt9@5rX0)z2_9fgU=?tis|+sK8EE~VBXmdN gF4LUZ2XdTXY!*|$SiQwsPx$KxgJsRi;?qd{0TG{S#Q*>R literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.po new file mode 100644 index 0000000..e1734bb --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2018-03-25 18:15+0200\n" +"PO-Revision-Date: 2018-03-25 18:32+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: Frank Goossens <frank@optimizingmatters.com>\n" +"Language: nl_BE\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Controleer op nieuwe versies" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "De meest recente %s versie is geïnstalleerd." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Er is een nieuwe versie van %s beschikbaar." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Kon niet bepalen of er nieuwe versie van %s beschikbaar is." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Ongekende status bij controle op nieuwe versie: \"%s\"" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "Er is geen changelog beschikbaar." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.mo new file mode 100644 index 0000000000000000000000000000000000000000..16dde622ba6040399cc911e0d5ef1c970a541b88 GIT binary patch literal 1211 zcmah|&59F25N>r<hzHTLhjL*-(H@hi7$!#4xGUnWMvdYvbY?0^n@RW3-LpSFgPz3a z5N~=EkAjcj6A1bUev`?%yR2Ztmv5$1KVQ{U{W!byUf`Sr&H;Vk6z~Qp&nMsv@EIWB z8?X%g1UkU!BSNf#H^3774*U!F0+jJS9uwj`_&fL-_&4|xcx6e5Huwp+^m_}2%lsV0 zFU$n4#PRu!5GNK~>YShMgp(<atfL}NRbVgr6Lw76ld+Uclo@ko$D}ru&eSmDNIW-F zW4Fx00XB%hj(kv|@U*<*mqnN`<ykS-hJp?mFWn)-TeQi}Yir1ksI*w|yGF>iFTo-2 zt}U_@dIF^!*v+(oz|pQ^QqcR?eO}9oj}B`<VFyzdIR#5))sg5q`-+nwAEfd{r7~WK zlT~BnqRv|HabI>FtAI-6JvhhItT$S+epNQFQ==6(u3xG*>vb5)r@X1livMYMwOQG% zqsN6Bv+T2)#Z=pPu(7%)q7l_=U26iHAp1KxvIX7_SMp40(=I=d^Bg+Q`)jhbXXljh zBX)AtBsSG%98+tkL+z!!&xV}}*2UDboa#W0s1@Ca8u+iekav~mT!l$YQB><?g;SYa zvu@^NGWe!=^_^zBYz`hf7Yv>6P~&2IFTgWfxP-fvvY0Aqf5SiIoh|E9zpj0VX)tIH zxINg88<(32xVEl5>MZqVmCQ9fPwBq3-m~#^b5y?Hwt3Jq{TijsRKQ61D6z9!@UB`3 zsoCJs`aVspTr%mQELlfkHBq+I*^Du`HYcOG*y3tFu>z~Eoc}Si*|z~h_Q^y~hf29f zJjPl~*`&NX_Cx)Ol10oz5#wqrs<36$1NmrEnQ|}>BzTB5fmOh5t}?h_XQ1_ej?f*6 gdrUKCAINcnv6)Z(eD&sQJ?5_;43;%3i%%o*2Pb`M*Z=?k literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.po new file mode 100644 index 0000000..7f57a89 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2018-03-25 18:15+0200\n" +"PO-Revision-Date: 2018-03-25 18:32+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: Frank Goossens <frank@optimizingmatters.com>\n" +"Language: nl_NL\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Controleer op nieuwe versies" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "De meest recente %s versie is geïnstalleerd." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Er is een nieuwe versie van %s beschikbaar." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Kon niet bepalen of er nieuwe versie van %s beschikbaar is." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Ongekende status bij controle op nieuwe versie: \"%s\"" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "Er is geen changelog beschikbaar." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.mo new file mode 100644 index 0000000000000000000000000000000000000000..d1c0f283287da07c7060255756947399fde75ca6 GIT binary patch literal 1014 zcmZuv!EVz)6f{scgcF=V;_y_d5=dPW2P%rAAllGEMM|SKMcksreu>>WyVmYHZ4oE_ zfe%0&fCEQPT#)h`h+lzm97qtXGJgB)+1bhN{J6UG*2B02+yFYjW#BbXj*q|<;1fW= zS6~_V4zz%ufGFqZJntKD3|vFMdZFTNp<YLypgu%>gW5oypn^Ib=kY}AEddv&Zz?~t zX;s<@N5?eKhKf9vj;+^A*f6D*l%^<=YRH)$k{ru4lP@#&y+d`Z^og1+00#<e$U5l? zOUo;E*>ed~o)yDXkxO01OB<y4gvM-asuk%0m5depn}ppKHuz^XEd5O`a&nqVzrNQs z`iLVZc4G0o(hp~{qWVi>=CIb?>xs5u>EJ;;!s3t`_28bUuZiG31#98mK-BNl>mZ7K z9;c<(|MMCZuOqD!JtLLPq|+v(S_kJ<$RUd!%h5s)ORm4UU)$Z;-J07B{Ccgem16~& zvmAaLpSs(5CR5cc58qgJt;627SfBIC?FMYbmWp(os$od$FH={0As(}0Q~Bs>j#Ed0 zzwWQ&OVx@^X*riJ3CZ_s-K;P&6WiL1Y)A^Xh1Rwj&GPUtZQWG#fP!1i`T7H0n26hz zt&l2Tf7GAy*@-r>?WER))bBU@-0Yv?7Y3`1XhDUgiIOgSh&r6qJltA3NF!-z!xb`1 zU&+ab$rmK?+2p;ZWb%%R(LxgA)aF`EK94!`y@Pq^C}taJg*2wI_Pr<5brLBa%W3dR uv0NHSC{;9(zXh@CV~k{HTE@P&w?I3B7+Z&@l4Ogy;7B66h9le{qWB9G2Q7U7 literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.po new file mode 100644 index 0000000..70a0f62 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-05-19 15:41-0300\n" +"PO-Revision-Date: 2017-05-19 15:42-0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.8\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x;_x:1,2c\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p1/Plugin/UpdateChecker.php:358 +msgid "Check for updates" +msgstr "Verificar Atualizações" + +#: Puc/v4p1/Plugin/UpdateChecker.php:401 Puc/v4p1/Plugin/UpdateChecker.php:406 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "O plugin %s já está na sua versão mais recente." + +#: Puc/v4p1/Plugin/UpdateChecker.php:408 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Há uma nova versão para o plugin %s disponível para download." + +#: Puc/v4p1/Plugin/UpdateChecker.php:410 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Status \"%s\" desconhecido." + +#: Puc/v4p1/Vcs/PluginUpdateChecker.php:83 +msgid "There is no changelog available." +msgstr "Não há um changelog disponível." + +#~ msgid "The %s plugin is up to date." +#~ msgstr "O plugin %s já está na sua versão mais recente." + +#~ msgid "A new version of the %s plugin is available." +#~ msgstr "Há uma nova versão para o plugin %s disponível para download." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..50b330e9332d5024e9bf5f931e5b1e76dca7cd7a GIT binary patch literal 1337 zcmZuw&u<$=6dq`R${Y|}xNvxlltO7{+1&&h*4<Xcq^P11R&gqB*3_QZOE<ID>}=9X zJv7OUR;mz!8|uGcN~*d9Q*njM>_5O?z=^+rZ+7zw+L52Xc{|@X?|X0Uzuubpo?*R) zcn8rzypFh!aBG5i6Y&&5h(8gth`$jr;*FOWTL!KGIq*B+$(I@X9r!NtKTa@q4)_nS z3w(cuv3cM(K$kxOo&vu83S*E|3vvcJ!x6*dYQ4IT&S$k+L)p7YYni5E)E7qPtTU8a zQj(L(s5ca9Ak%C>VnZaUxRFYat*V<U+f@4kaBzdvlpA4+oMz|pS!RZkMrkof6q&@N za^?~#xk(#R=Sik0TO-Gq%MVDXcC5g2>Q+{yefTldmqzOKM8V+NfnyTzdnm7ZnajQB zJ)p7wmMlhOGICvetgW-JWzX;{eSW=m8SR_n^<emZpN;kx9p2JX7<9rvg*c+n4}I=0 z;X}b<wD8ecf5G=b<k#dz;yOO!1w06O=u>bm`takk(D{w4m~kNnl6Rz7kEpS7Wo7xu zMBw?2R;G+phIej{P|e6&=7Uix64i7sNaxbTtDVby>4>L=%Gadk%c__46E%ov=|*B2 zU-8eRl3JKdN7T+_KQR<~A)eO>|3u_+B+M`(&ug^PLW`7N&h&a7k;3~#n#T)GHyCW= z_taeA$8kWXPm|mFr{W->i{umN$S=g<!O{76(QPY*e?AE5&YfCvAy_;ENdQTBrg`M# z%dF5n*{a)%sP6C3=jZbFW~Tf3)g(6&b-T^3Y<6!&!F<>QVxl>Q<%W>fy&lduB3*Q^ ztsbi*h3*a8=$ZTIy20$j@~-{OKC+L2lXAPfPe^~V)9T@#eT?0te8B7v<qjBAJGOgd zC-#Z`wK}WL?Nf-L-2%sbZ`()Z4sP7`nEeqnM|Tz6$+Wx&dbJ&cyi;zu<StmdwbG8s zK09XW7dv@@CEQW{^>Dv)KQ13o-9)+N{JLMh-GwQXgq3H`cx{G|?z%3j!>U_X4doGg p^$6zwr!DW1J9>c)S9aI#RRwYXL(s<dXEZ#m92}cu`K_IL>|fZP{fYnp literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.po new file mode 100644 index 0000000..33a1199 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ru_RU.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2020-08-08 14:36+0300\n" +"PO-Revision-Date: 2021-12-20 17:59+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: ru_RU\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p11/Plugin/Ui.php:128 +msgid "Check for updates" +msgstr "Проверить обновления" + +#: Puc/v4p11/Plugin/Ui.php:213 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Плагин %s обновлён." + +#: Puc/v4p11/Plugin/Ui.php:215 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Новая версия %s доступна." + +#: Puc/v4p11/Plugin/Ui.php:217 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Не удалось определить, доступны ли обновления для %s." + +#: Puc/v4p11/Plugin/Ui.php:223 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Неизвестный статус средства проверки обновлений \"%s\"" + +#: Puc/v4p11/Vcs/PluginUpdateChecker.php:98 +msgid "There is no changelog available." +msgstr "Журнал изменений отсутствует." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.mo new file mode 100644 index 0000000000000000000000000000000000000000..df47ca7c0a01cff815ffe3965ee4918e72a600fd GIT binary patch literal 1203 zcmZWoO>YxN7@k5(CHH_@u9bL+6a=EP>~5kaT4SnW5)?I|RxzkIYhu5#$63#;W@a}b zzoDEE|E0YkRe}?@{($}hjvRaFvtApg%1F;X`|iA7&pWgKe7p8WV0{IA2lRojf!~38 z{Q-Of{0R{70ayn<0v+J`7eefU55W@r8vHNt7jOgi+p9v{0{;!J_dhLoeNBi*uzTQ} z;MZV;%-0n>;U@4&d^!Ij#I*(2ea=^R!ow3fwvNhTqyl@<pRi-no{Xj8M42(?c1)^L zI#)+IN8-6TG4|9f0^oxT?8pZdN>A$>eqDqKQ<0ZrZ7ArF^V&~j_>?MkURy)<m}-v= zzjQ*i3k5DkcWs%E&`+Qd2X-@U(BSd1V^Zk%bNF1#hL0}y0Ac?xSr!y5)v6=Wb9TzZ zAooY|Mbl-rXiheRkqe!z-Y<RGb*uuE$j1oID2<bCnItmZqGUUZ(|d6m$8eOta;0m< zE599?#4_DRNVfSy<9C1=muk$i&uW%Y>u~>Ychy7^#jUP2flZM8mj$W?J`4AYTxrv; z56F2Ao#*{MxwG<f%J^e;a@P#)NSkp+J4ZUSev?nwuv5XhjCz(wI#3#=_}&=uk@8%q zFv%#2TD`n<DwliK&3r}%=Lyqyw%YYz@Y=a!Hj+5*bQ1cJVuDL!rZAJG`LMG|w{JIF z4?0`eO0l(hx4kO*%$9D*-9|}9jg-$V{md^<tsD6R?L$U`L3_aM!C97kpANyT1LZN7 zT5sOS+8^UC@0CVjtC?#?J|8^Wzfh2s8%}!ADPt&Y;qVz(Q&VBR9a&7OV)58;W%LR8 z!tsn}M`Sb^MNXX;HdkXCiKl#Slv&<;xFN?>nW<Xk;fl^x^GiIn)jT@a?_TMlqAK78 z1yp?}r+g_l%`6I2Ikv%8I%s<Lipg`GZy8!gUTkSqx5ABnu_&;}|Nbq0$wps3WfO`2 E0E%E^ZvX%Q literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.po new file mode 100644 index 0000000..385d801 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2018-10-27 20:36+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n%100<=4 ? 2 : 3);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: Igor Funa\n" +"Language: sl_SI\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Preveri posodobitve" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Vtičnik %s je že posodobljen." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Nova različica vtičnika %s je na razpolago." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Ne morem ugotoviti če se za vtičnik %s na razpolago posodobitve." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Neznan status preverjanja posodobitev za \"%s\"" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "Dnevnik sprememb ni na razpolago." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..4d06fc14f5bb99ac14bc019543e9edacfb457e36 GIT binary patch literal 1006 zcmZWn!EO^V5H(OZgcF=NfHYK!L{+@(rWC4;a)7i&6|EZ46mg5(WU^VZwIkb`wi1W_ z1UI-<2!5a!PAEUX2Otjp5qR58+aN5xeIEOH{5(6q@6LS`7`K4?z$S1T_y82+D{u$+ z1`zNam<N6V4d4$Ti}^JnegH$@Ua@vVh(+)^cnNI53*ax{2jHJzNYBT0d=ZK{;O6;C z>1R4EsX5^8kov|_KI$pYPP7MXnNmmEP<Nno!kI}(ja8bdy^I5~tB2Yg=;;Aykbx~Z zuYB%kzUt<MA25xwJV`bA)Mq^Rf;1n{n5|2VCex=vQFRw0+%|K;f2U#TUvWMnZ>aDa zh?X_)x$EUdPrfbl$J4a3e3G0xthBb<vT0d)c#x|&98)cfp387q)<TNHczJ0tTna-7 z<r^NSh1XeK6w2rsMaywmTMTQ^ZK684N?5j8?Z;Hv+SppVG7$w~rD?Qh?PdFDgxfqH z`X{4IrMg~});ji$-S)a%xzbssU7xL7(_Pa`brRFcUg|6F<SW)}l{Yq~mf>FNsTPF6 zQ|y$Xe5o9dlpn+t1eI2nTb0RmWA|N58vg>JYt-sRX)tX(()6%F(L((y!H&somz$-p zm`Y=p>0k5Ffw4WenK~a+r&I56y>l2xk852pO5yOz!hKenyev*kZrs^fo4JRT?G9S7 zDnpp9h@Hvlkht&BMEU5v3oTx*tXO4F{Zwm5h*{I*ME8m<hmK6pSy`4~Daq0#5Zl9I z_o55?lT%AW6yKUGLvPI{rnBQuRd;s$c_u%S>!Zv5guX~VIY|;YsJcM3XG8e7a;khF F{sQ>&EFS;> literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.po new file mode 100644 index 0000000..b894814 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.po @@ -0,0 +1,42 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-05-20 10:53+0300\n" +"PO-Revision-Date: 2017-10-16 15:02+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.4\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: sv_SE\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p1/Plugin/UpdateChecker.php:358 +msgid "Check for updates" +msgstr "Sök efter uppdateringar" + +#: Puc/v4p1/Plugin/UpdateChecker.php:405 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Tillägget %s är uppdaterat." + +#: Puc/v4p1/Plugin/UpdateChecker.php:407 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Det finns en ny version av tillägget %s." + +#: Puc/v4p1/Plugin/UpdateChecker.php:409 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Okänd status för kontroll av uppdatering “%s”" + +#: Puc/v4p1/Vcs/PluginUpdateChecker.php:83 +msgid "There is no changelog available." +msgstr "Det finns ingen ändringslogg tillgänglig." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.mo new file mode 100644 index 0000000000000000000000000000000000000000..58be2f9306dd0e01aa725c03d583ca53bdd536a0 GIT binary patch literal 1118 zcmZWn&u<e)6rMr~k~tuXxF8O%ks=l7EOyeW=^CS!;G_tmTE(E;qRH-yJ>A(EYi8EL z|3fcT#W_dLkt#u@Tq?V#{trF(&_ANz+WCbT?YG~~&U@c{@6G)4+0q+<aTT}&^nq)@ zFF-xs12=#_00RC7mVy6(4siVwA-dpgumt}G{vG%exQ+SvvJflaU%^fAJMca5zu>RH zH<yIC1^xkyl=--XH<kr{iBIQ$gt&6Twa@w37;;w7zVlR#auqp<{*XPB4rCo=LuChS z+<??rX`}WGC*q|otUItL35bCLdkRs-D$w#uSQc@}G&0pdTZ%dwUizLaAJCY6(9V+E zr#fOKoCaaH3mbftz2Pd8!%w7~Bl}WY7~DT~ObUL_(&x3TgydrnDD1;6s}V&<b=8UJ zdG|ACQ9jM(tA)$-#GG6-MxNB!==~^v;<2s^kx!7D(rR<HC0lsDrq;J<^PBt4wPv&N z9IdO=fMuUmnNnl>>2~*AyOlH>8_q_yQT8Vzs6>7pAB>FBwq5t#2acVW{Y|-k9_N(} z`|M@cW-ixukka~|j*T6;#g@H_&ZpFKoa;zy(BF}ZiF~XAk5n9{lq8Lwsk}0B)A=%_ zWN}QGhR$lct{0!3FD!lDq1N5@xxfoo`HVLfu2NdqI+K6KlLP1T@LY$O((Z11m)pCq z)7F=(85oTSsIm5L78biD4y@}7W$9s|y!x(w8C3#4u^b<r^$uO}7hJIN*|3K~WD}({ z#MboKW^4?XY}jim&`|FTaTL!gW0aj8;m&HKJ?#NG&kprphq^GjpouFI@fd5i<Oy3E zoNFNvE(}j}hGV9@@>N+aE;g<#7Y2uh1&iB_Og+~Q(_=q9E~m#-@;IwvA`q&lZxM4* h*%@3qXG)dNj%J6mBiduQgCI)C^*rfJ|1>cX{{#HHSPlRH literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.po new file mode 100644 index 0000000..ba5e291 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-tr_TR.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2017-11-24 17:02+0200\n" +"PO-Revision-Date: 2021-11-15 19:07+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: Emre Erkan <kara@karalamalar.net>\n" +"Language: tr\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p3/Plugin/UpdateChecker.php:395 +msgid "Check for updates" +msgstr "Güncellemeleri kontrol et" + +#: Puc/v4p3/Plugin/UpdateChecker.php:548 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "%s eklentisi güncel." + +#: Puc/v4p3/Plugin/UpdateChecker.php:550 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "%s eklentisinin yeni bir sürümü mevcut." + +#: Puc/v4p3/Plugin/UpdateChecker.php:552 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "%s için güncelleme olup olmadığı belirlenemedi." + +#: Puc/v4p3/Plugin/UpdateChecker.php:558 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Bilinmeyen güncelleme denetleyicisi durumu \"%s\"" + +#: Puc/v4p3/Vcs/PluginUpdateChecker.php:95 +msgid "There is no changelog available." +msgstr "Kullanılabilir bir değişiklik yok." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.mo new file mode 100644 index 0000000000000000000000000000000000000000..79494e524ebd28dcba540d54c7f4949d5a436508 GIT binary patch literal 1309 zcmZuwO>YxN7#`a6L*`J?a}O_(LZM-{yPHs=HA@9<pr}Mxty5L%!CLHzy<{_M&CVtu zaR74Qf|Nts+))04#YZs>4(heN%>IG?f}VQqrO)i<3(}EaKQpuM^S;mXuKm}?6TdL5 z4-lUqT8QI_M+mz{h!cpH2txdcm_+=I2oWD0V{9I{0OY`*fFHiY*zdqkasK07#^!+k z0KW!KPcZfwPy>GiZUIjM{{@0lF3=g$8LrrS<qc!+@1oUNu0~&UmT4(fln=U*78z^x zg%T8JBvb12BiR#4+M{SSij(MOA{@3Tmu0#pcL~Tr1)(U@k<K%koXRGd?h6_uc`ufv zW1WbJOC-e_tqPUJsibs?Y{pc!mxOMI8XRFa(md%xkEX8BLaoFS0+;p_Qv|*H^wP^z z<{Z@kV{f+12c%Q7t{v7?=`GRG{92cPU#Sds#qnw|eAj2Kd85S}N<<n?_*WnY<h#Dh z-8p>7n+;~Zn09Ae7m55^u^L;)2YDX%eD1sCoe$2Pn+DIVUB`^`s3&+!L@NQ+7OpMK zABgZAx7J9d7E<%podLROaa(^rNTOKQ?F&+w(BWe13ZFa3Q<2P;gyQqElXhd-3ux|U ztZP5;t3nDD=~M;OOhq@=<U2m@s{_9rWnvKNen5^>YbLph5`HCBD_KAi?-R!?oT=Nv zU>ly6Q=S`!9-TTxcI%!DJ&(R5mynM0#n9h-bRnFz+mhj4@O-*^x1wD1X3v1)f#RR3 zA1L`Q%~eM<DtiG{{`Pf#BkruFs+(PpGaXR7U2lte`*z@+^*caJG{dm$5R%I4{)_|4 zm)nb%4)qa{>hzoN%w4#yF|%c!7x&C_^Q71Wj*16nL}tf~5l_rE9*oVn*kI-{wy(^v z_?gTzvs2tJ9u({5b(#0n?2!4jSO<S>hGx51C-cI*DmKm7sfZ|UStu|vFUgWo2?dJ# zgc^qh{C1>$@u>QfL4lPtBz%E^BAdmA{e{1!XIS;LY0s>hQtXC3j-Uzxi-(oXvt)N~ e(TmOhac^_B%Vwy(g_1+_)VeFXzd5TNhy4cu&FZoM literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.po new file mode 100644 index 0000000..b84b16e --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-uk_UA.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2020-08-08 14:36+0300\n" +"PO-Revision-Date: 2021-12-20 17:55+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"Last-Translator: \n" +"Language: uk_UA\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p11/Plugin/Ui.php:128 +msgid "Check for updates" +msgstr "Перевірити оновлення" + +#: Puc/v4p11/Plugin/Ui.php:213 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "Плагін %s оновлено." + +#: Puc/v4p11/Plugin/Ui.php:215 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "Нова версія %s доступна." + +#: Puc/v4p11/Plugin/Ui.php:217 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "Не вдалося визначити, чи доступні оновлення для %s." + +#: Puc/v4p11/Plugin/Ui.php:223 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "Невідомий статус перевірки оновлень \"%s\"" + +#: Puc/v4p11/Vcs/PluginUpdateChecker.php:98 +msgid "There is no changelog available." +msgstr "Немає доступного журналу змін." diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.mo b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.mo new file mode 100644 index 0000000000000000000000000000000000000000..86d114472907c99814f248ed3e063f8bd0ce5819 GIT binary patch literal 1174 zcmZ`&U2hXd6dfQGu!_|3hCt{lC@;Wl*DeoXO%Py0#Ye!DfOx{1*b{qUGh^+{Ccsnp zsMHjpBDD|{EI|Z8RfXaT5KkZ;`Um(06$QNJjR*b!XT2c?MT~TGcIMuD?zywO|E=q} z!LZf<8-WV27I+9G>lN@l@ISB~_y7>Fb{S*6U<dpy_!xKqd>T9mZh$%XHTV(m-SRZ= z-xZ9l!}&|_Ch!|DftUBB@y+1m+y!p|9|dm!UjRdftp-riSvX=VfmOgaos)D9wCb)x zO_tBns17NrSA>;@4e3yluW&RbtgjV`5gl3TGi<mflaL{$sazAPDg#|5F)sW-j0DnQ zC)8P`C)9!za-c0kGFI5gP;Z~<WhZ?(K^19HW0<W;ss~ZkS7dz~$eul<5FVGINgC@> zN;3M)rzEugtlN_6f{ua;%-N)Y499#0x1*m1BLVY^<(-lHjI-1Oru?#HR41z`xg3WT zLw!b;Ek97<CsUW+f;pbvA72<cQ#{Ilmg9ah2;YZVk8*A<$K5Q??VxPV%eq_Le%H+$ z7RK`7P$&}!t3!{DOR%DYJ}#Jc*8JV3b8sfvJ7qn#3ni)=iK^toQjB@DxcBHntyDOY z89FdD*tM5++)P0$D;4^jufvFy=j;#lK=>-3yvNW;J8)unKkx76C4NR_$OlzfSA13V zsDH$_nN$2HsbrWMEoxcuE#;i;&X0(sTfSEqSr@kEk>g~FK@^IB@5i@fJW_bq*qVWC zKDjhJ4!HSl<#8Q_Wm!lKd6YU@)IB86Pw22>4*SM>R4V05GG999Ww+(Z;LlW~2+Or1 z9B>yNGAzC~8Q+<UZ$F7|{=@JswP&ti)4D(N_Qh;`vB}~`vvFgp^?S4Z=U-_IiShJY z>&5h&$xAG5{N27Y*9~;k+P^)GCojH#HiN$c;_b%Ocg+X!<zEv0*7HAFQ`eSCCSnN3 q(|6;?H`=rFt@)YwR<m{e!B<n;x91b3Tg|vJ2~X{*U*pEZMCKy|o{_Qu literal 0 HcmV?d00001 diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.po b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.po new file mode 100644 index 0000000..d4f7056 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.po @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2022-01-29 12:09+0800\n" +"PO-Revision-Date: 2022-01-29 12:10+0800\n" +"Last-Translator: Seaton Jiang <hi@seatonjiang.com>\n" +"Language-Team: \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.3\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v4p11/Plugin/Ui.php:54 +msgid "View details" +msgstr "查看详情" + +#: Puc/v4p11/Plugin/Ui.php:77 +#, php-format +msgid "More information about %s" +msgstr "%s 的更多信息" + +#: Puc/v4p11/Plugin/Ui.php:128 +msgid "Check for updates" +msgstr "检查更新" + +#: Puc/v4p11/Plugin/Ui.php:214 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "%s 目前是最新版本。" + +#: Puc/v4p11/Plugin/Ui.php:216 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "%s 当前有可用的更新。" + +#: Puc/v4p11/Plugin/Ui.php:218 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "%s 无法确定是否有可用的更新。" + +#: Puc/v4p11/Plugin/Ui.php:224 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "未知的更新检查状态:%s" + +#: Puc/v4p11/Vcs/PluginUpdateChecker.php:100 +msgid "There is no changelog available." +msgstr "没有可用的更新日志。" diff --git a/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker.pot b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker.pot new file mode 100644 index 0000000..4985307 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker.pot @@ -0,0 +1,49 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: plugin-update-checker\n" +"POT-Creation-Date: 2022-07-29 15:34+0300\n" +"PO-Revision-Date: 2016-01-10 20:59+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"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.1.1\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_x:1,2c;_x\n" +"X-Poedit-SearchPath-0: .\n" + +#: Puc/v5p3/Plugin/Ui.php:128 +msgid "Check for updates" +msgstr "" + +#: Puc/v5p3/Plugin/Ui.php:214 +#, php-format +msgctxt "the plugin title" +msgid "The %s plugin is up to date." +msgstr "" + +#: Puc/v5p3/Plugin/Ui.php:216 +#, php-format +msgctxt "the plugin title" +msgid "A new version of the %s plugin is available." +msgstr "" + +#: Puc/v5p3/Plugin/Ui.php:218 +#, php-format +msgctxt "the plugin title" +msgid "Could not determine if updates are available for %s." +msgstr "" + +#: Puc/v5p3/Plugin/Ui.php:224 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: Puc/v5p3/Vcs/PluginUpdateChecker.php:100 +msgid "There is no changelog available." +msgstr "" diff --git a/vendor/yahnis-elsts/plugin-update-checker/license.txt b/vendor/yahnis-elsts/plugin-update-checker/license.txt new file mode 100644 index 0000000..7fff536 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/license.txt @@ -0,0 +1,7 @@ +Copyright (c) 2023 Jānis Elsts + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/yahnis-elsts/plugin-update-checker/load-v5p3.php b/vendor/yahnis-elsts/plugin-update-checker/load-v5p3.php new file mode 100644 index 0000000..1de3d58 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/load-v5p3.php @@ -0,0 +1,34 @@ +<?php + +namespace YahnisElsts\PluginUpdateChecker\v5p3; + +use YahnisElsts\PluginUpdateChecker\v5\PucFactory as MajorFactory; +use YahnisElsts\PluginUpdateChecker\v5p3\PucFactory as MinorFactory; + +require __DIR__ . '/Puc/v5p3/Autoloader.php'; +new Autoloader(); + +require __DIR__ . '/Puc/v5p3/PucFactory.php'; +require __DIR__ . '/Puc/v5/PucFactory.php'; + +//Register classes defined in this version with the factory. +foreach ( + array( + 'Plugin\\UpdateChecker' => Plugin\UpdateChecker::class, + 'Theme\\UpdateChecker' => Theme\UpdateChecker::class, + + 'Vcs\\PluginUpdateChecker' => Vcs\PluginUpdateChecker::class, + 'Vcs\\ThemeUpdateChecker' => Vcs\ThemeUpdateChecker::class, + + 'GitHubApi' => Vcs\GitHubApi::class, + 'BitBucketApi' => Vcs\BitBucketApi::class, + 'GitLabApi' => Vcs\GitLabApi::class, + ) + as $pucGeneralClass => $pucVersionedClass +) { + MajorFactory::addVersion($pucGeneralClass, $pucVersionedClass, '5.3'); + //Also add it to the minor-version factory in case the major-version factory + //was already defined by another, older version of the update checker. + MinorFactory::addVersion($pucGeneralClass, $pucVersionedClass, '5.3'); +} + diff --git a/vendor/yahnis-elsts/plugin-update-checker/phpcs.xml b/vendor/yahnis-elsts/plugin-update-checker/phpcs.xml new file mode 100644 index 0000000..a8fe148 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/phpcs.xml @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<ruleset name="PUC_PHPCS_Settings"> + <description>PHPCS settings for Plugin Update Checker</description> + + <arg name="basepath" value="."/> + <arg name="warning-severity" value="5"/> + <arg name="error-severity" value="5"/> + <arg value="sp"/> + + <!-- Check the current directory by default --> + <file>./</file> + + <!-- Include the WordPress-VIP-Go standard --> + <rule ref="WordPress-VIP-Go"> + <!-- This library is not exclusive to WP VIP, so it doesn't use vip_safe_wp_remote_get() and such. --> + <exclude name="WordPressVIPMinimum.Functions.RestrictedFunctions.wp_remote_get_wp_remote_get" /> + </rule> + + <!-- Exclude external and third-party libraries --> + <exclude-pattern type="relative">^vendor/*</exclude-pattern> +</ruleset> diff --git a/vendor/yahnis-elsts/plugin-update-checker/plugin-update-checker.php b/vendor/yahnis-elsts/plugin-update-checker/plugin-update-checker.php new file mode 100644 index 0000000..7a9268c --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/plugin-update-checker.php @@ -0,0 +1,10 @@ +<?php +/** + * Plugin Update Checker Library 5.3 + * http://w-shadow.com/ + * + * Copyright 2022 Janis Elsts + * Released under the MIT license. See license.txt for details. + */ + +require dirname(__FILE__) . '/load-v5p3.php'; \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/vendor/Parsedown.php b/vendor/yahnis-elsts/plugin-update-checker/vendor/Parsedown.php new file mode 100644 index 0000000..11a212f --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/vendor/Parsedown.php @@ -0,0 +1,4 @@ +<?php +if ( !class_exists('Parsedown', false) ) { + require __DIR__ . '/ParsedownModern.php'; +} diff --git a/vendor/yahnis-elsts/plugin-update-checker/vendor/ParsedownModern.php b/vendor/yahnis-elsts/plugin-update-checker/vendor/ParsedownModern.php new file mode 100644 index 0000000..5d96071 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/vendor/ParsedownModern.php @@ -0,0 +1,1538 @@ +<?php + +# +# +# Parsedown +# http://parsedown.org +# +# (c) Emanuil Rusev +# http://erusev.com +# +# For the full license information, view the LICENSE file that was distributed +# with this source code. +# +# + +class Parsedown +{ + # ~ + + const version = '1.6.0'; + + # ~ + + function text($text) + { + # make sure no definitions are set + $this->DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + $class = 'language-'.$matches[1]; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body'];; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(?<!'.$marker.')\1(?!'.$marker.')/s', $Excerpt['text'], $matches)) + { + $text = $matches[2]; + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + $text = preg_replace("/[ ]*\n/", ' ', $text); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']); + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^<!---?[^>-](?:-?[^-])*-->/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $matches[0][0], + 'attributes' => array( + 'href' => $matches[0][0], + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "<br />\n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "<br />\n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.$value.'"'; + } + } + + if (isset($Element['text'])) + { + $markup .= '>'; + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($Element['text']); + } + else + { + $markup .= $Element['text']; + } + + $markup .= '</'.$Element['name'].'>'; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '<p>') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "</p>"); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + # + # Static Methods + # + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'sub', 'mark', + 'u', 'xm', 'sup', 'nobr', + 'var', 'ruby', + 'wbr', 'span', + 'time', + ); +} \ No newline at end of file diff --git a/vendor/yahnis-elsts/plugin-update-checker/vendor/PucReadmeParser.php b/vendor/yahnis-elsts/plugin-update-checker/vendor/PucReadmeParser.php new file mode 100644 index 0000000..a794c49 --- /dev/null +++ b/vendor/yahnis-elsts/plugin-update-checker/vendor/PucReadmeParser.php @@ -0,0 +1,352 @@ +<?php + +if ( !class_exists('PucReadmeParser', false) ): + +/** + * This is a slightly modified version of github.com/markjaquith/WordPress-Plugin-Readme-Parser + * It uses Parsedown instead of the "Markdown Extra" parser. + */ + +class PucReadmeParser { + + function __construct() { + // This space intentionally blank + } + + function parse_readme( $file ) { + $file_contents = @implode('', @file($file)); + return $this->parse_readme_contents( $file_contents ); + } + + function parse_readme_contents( $file_contents ) { + $file_contents = str_replace(array("\r\n", "\r"), "\n", $file_contents); + $file_contents = trim($file_contents); + if ( 0 === strpos( $file_contents, "\xEF\xBB\xBF" ) ) + $file_contents = substr( $file_contents, 3 ); + + // Markdown transformations + $file_contents = preg_replace( "|^###([^#]+)#*?\s*?\n|im", '=$1='."\n", $file_contents ); + $file_contents = preg_replace( "|^##([^#]+)#*?\s*?\n|im", '==$1=='."\n", $file_contents ); + $file_contents = preg_replace( "|^#([^#]+)#*?\s*?\n|im", '===$1==='."\n", $file_contents ); + + // === Plugin Name === + // Must be the very first thing. + if ( !preg_match('|^===(.*)===|', $file_contents, $_name) ) + return array(); // require a name + $name = trim($_name[1], '='); + $name = $this->sanitize_text( $name ); + + $file_contents = $this->chop_string( $file_contents, $_name[0] ); + + + // Requires at least: 1.5 + if ( preg_match('|Requires at least:(.*)|i', $file_contents, $_requires_at_least) ) + $requires_at_least = $this->sanitize_text($_requires_at_least[1]); + else + $requires_at_least = NULL; + + + // Tested up to: 2.1 + if ( preg_match('|Tested up to:(.*)|i', $file_contents, $_tested_up_to) ) + $tested_up_to = $this->sanitize_text( $_tested_up_to[1] ); + else + $tested_up_to = NULL; + + // Requires PHP: 5.2.4 + if ( preg_match('|Requires PHP:(.*)|i', $file_contents, $_requires_php) ) { + $requires_php = $this->sanitize_text( $_requires_php[1] ); + } else { + $requires_php = null; + } + + // Stable tag: 10.4-ride-the-fire-eagle-danger-day + if ( preg_match('|Stable tag:(.*)|i', $file_contents, $_stable_tag) ) + $stable_tag = $this->sanitize_text( $_stable_tag[1] ); + else + $stable_tag = NULL; // we assume trunk, but don't set it here to tell the difference between specified trunk and default trunk + + + // Tags: some tag, another tag, we like tags + if ( preg_match('|Tags:(.*)|i', $file_contents, $_tags) ) { + $tags = preg_split('|,[\s]*?|', trim($_tags[1])); + foreach ( array_keys($tags) as $t ) + $tags[$t] = $this->sanitize_text( $tags[$t] ); + } else { + $tags = array(); + } + + + // Contributors: markjaquith, mdawaffe, zefrank + $contributors = array(); + if ( preg_match('|Contributors:(.*)|i', $file_contents, $_contributors) ) { + $temp_contributors = preg_split('|,[\s]*|', trim($_contributors[1])); + foreach ( array_keys($temp_contributors) as $c ) { + $tmp_sanitized = $this->user_sanitize( $temp_contributors[$c] ); + if ( strlen(trim($tmp_sanitized)) > 0 ) + $contributors[$c] = $tmp_sanitized; + unset($tmp_sanitized); + } + } + + + // Donate Link: URL + if ( preg_match('|Donate link:(.*)|i', $file_contents, $_donate_link) ) + $donate_link = esc_url( $_donate_link[1] ); + else + $donate_link = NULL; + + + // togs, conts, etc are optional and order shouldn't matter. So we chop them only after we've grabbed their values. + foreach ( array('tags', 'contributors', 'requires_at_least', 'tested_up_to', 'stable_tag', 'donate_link') as $chop ) { + if ( $$chop ) { + $_chop = '_' . $chop; + $file_contents = $this->chop_string( $file_contents, ${$_chop}[0] ); + } + } + + $file_contents = trim($file_contents); + + + // short-description fu + if ( !preg_match('/(^(.*?))^[\s]*=+?[\s]*.+?[\s]*=+?/ms', $file_contents, $_short_description) ) + $_short_description = array( 1 => &$file_contents, 2 => &$file_contents ); + $short_desc_filtered = $this->sanitize_text( $_short_description[2] ); + $short_desc_length = strlen($short_desc_filtered); + $short_description = substr($short_desc_filtered, 0, 150); + if ( $short_desc_length > strlen($short_description) ) + $truncated = true; + else + $truncated = false; + if ( $_short_description[1] ) + $file_contents = $this->chop_string( $file_contents, $_short_description[1] ); // yes, the [1] is intentional + + // == Section == + // Break into sections + // $_sections[0] will be the title of the first section, $_sections[1] will be the content of the first section + // the array alternates from there: title2, content2, title3, content3... and so forth + $_sections = preg_split('/^[\s]*==[\s]*(.+?)[\s]*==/m', $file_contents, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY); + + $sections = array(); + for ( $i=0; $i < count($_sections); $i +=2 ) { + $title = $this->sanitize_text( $_sections[$i] ); + if ( isset($_sections[$i+1]) ) { + $content = preg_replace('/(^[\s]*)=[\s]+(.+?)[\s]+=/m', '$1<h4>$2</h4>', $_sections[$i+1]); + $content = $this->filter_text( $content, true ); + } else { + $content = ''; + } + $sections[str_replace(' ', '_', strtolower($title))] = array('title' => $title, 'content' => $content); + } + + + // Special sections + // This is where we nab our special sections, so we can enforce their order and treat them differently, if needed + // upgrade_notice is not a section, but parse it like it is for now + $final_sections = array(); + foreach ( array('description', 'installation', 'frequently_asked_questions', 'screenshots', 'changelog', 'change_log', 'upgrade_notice') as $special_section ) { + if ( isset($sections[$special_section]) ) { + $final_sections[$special_section] = $sections[$special_section]['content']; + unset($sections[$special_section]); + } + } + if ( isset($final_sections['change_log']) && empty($final_sections['changelog']) ) + $final_sections['changelog'] = $final_sections['change_log']; + + + $final_screenshots = array(); + if ( isset($final_sections['screenshots']) ) { + preg_match_all('|<li>(.*?)</li>|s', $final_sections['screenshots'], $screenshots, PREG_SET_ORDER); + if ( $screenshots ) { + foreach ( (array) $screenshots as $ss ) + $final_screenshots[] = $ss[1]; + } + } + + // Parse the upgrade_notice section specially: + // 1.0 => blah, 1.1 => fnord + $upgrade_notice = array(); + if ( isset($final_sections['upgrade_notice']) ) { + $split = preg_split( '#<h4>(.*?)</h4>#', $final_sections['upgrade_notice'], -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY ); + if ( count($split) >= 2 ) { + for ( $i = 0; $i < count( $split ); $i += 2 ) { + $upgrade_notice[$this->sanitize_text( $split[$i] )] = substr( $this->sanitize_text( $split[$i + 1] ), 0, 300 ); + } + } + unset( $final_sections['upgrade_notice'] ); + } + + // No description? + // No problem... we'll just fall back to the old style of description + // We'll even let you use markup this time! + $excerpt = false; + if ( !isset($final_sections['description']) ) { + $final_sections = array_merge(array('description' => $this->filter_text( $_short_description[2], true )), $final_sections); + $excerpt = true; + } + + + // dump the non-special sections into $remaining_content + // their order will be determined by their original order in the readme.txt + $remaining_content = ''; + foreach ( $sections as $s_name => $s_data ) { + $remaining_content .= "\n<h3>{$s_data['title']}</h3>\n{$s_data['content']}"; + } + $remaining_content = trim($remaining_content); + + + // All done! + // $r['tags'] and $r['contributors'] are simple arrays + // $r['sections'] is an array with named elements + $r = array( + 'name' => $name, + 'tags' => $tags, + 'requires_at_least' => $requires_at_least, + 'tested_up_to' => $tested_up_to, + 'requires_php' => $requires_php, + 'stable_tag' => $stable_tag, + 'contributors' => $contributors, + 'donate_link' => $donate_link, + 'short_description' => $short_description, + 'screenshots' => $final_screenshots, + 'is_excerpt' => $excerpt, + 'is_truncated' => $truncated, + 'sections' => $final_sections, + 'remaining_content' => $remaining_content, + 'upgrade_notice' => $upgrade_notice + ); + + return $r; + } + + function chop_string( $string, $chop ) { // chop a "prefix" from a string: Agressive! uses strstr not 0 === strpos + if ( $_string = strstr($string, $chop) ) { + $_string = substr($_string, strlen($chop)); + return trim($_string); + } else { + return trim($string); + } + } + + function user_sanitize( $text, $strict = false ) { // whitelisted chars + if ( function_exists('user_sanitize') ) // bbPress native + return user_sanitize( $text, $strict ); + + if ( $strict ) { + $text = preg_replace('/[^a-z0-9-]/i', '', $text); + $text = preg_replace('|-+|', '-', $text); + } else { + $text = preg_replace('/[^a-z0-9_-]/i', '', $text); + } + return $text; + } + + function sanitize_text( $text ) { // not fancy + $text = function_exists('wp_strip_all_tags') + ? wp_strip_all_tags($text) + //phpcs:ignore WordPressVIPMinimum.Functions.StripTags.StripTagsOneParameter -- Using wp_strip_all_tags() if available + : strip_tags($text); + + $text = esc_html($text); + $text = trim($text); + return $text; + } + + function filter_text( $text, $markdown = false ) { // fancy, Markdown + $text = trim($text); + + $text = call_user_func( array( __CLASS__, 'code_trick' ), $text, $markdown ); // A better parser than Markdown's for: backticks -> CODE + + if ( $markdown ) { // Parse markdown. + if ( !class_exists('Parsedown', false) ) { + /** @noinspection PhpIncludeInspection */ + require_once(dirname(__FILE__) . '/Parsedown' . (version_compare(PHP_VERSION, '5.3.0', '>=') ? '' : 'Legacy') . '.php'); + } + $instance = Parsedown::instance(); + $text = $instance->text($text); + } + + $allowed = array( + 'a' => array( + 'href' => array(), + 'title' => array(), + 'rel' => array()), + 'blockquote' => array('cite' => array()), + 'br' => array(), + 'p' => array(), + 'code' => array(), + 'pre' => array(), + 'em' => array(), + 'strong' => array(), + 'ul' => array(), + 'ol' => array(), + 'li' => array(), + 'h3' => array(), + 'h4' => array() + ); + + $text = balanceTags($text); + + $text = wp_kses( $text, $allowed ); + $text = trim($text); + return $text; + } + + function code_trick( $text, $markdown ) { // Don't use bbPress native function - it's incompatible with Markdown + // If doing markdown, first take any user formatted code blocks and turn them into backticks so that + // markdown will preserve things like underscores in code blocks + if ( $markdown ) + $text = preg_replace_callback("!(<pre><code>|<code>)(.*?)(</code></pre>|</code>)!s", array( __CLASS__,'decodeit'), $text); + + $text = str_replace(array("\r\n", "\r"), "\n", $text); + if ( !$markdown ) { + // This gets the "inline" code blocks, but can't be used with Markdown. + $text = preg_replace_callback("|(`)(.*?)`|", array( __CLASS__, 'encodeit'), $text); + // This gets the "block level" code blocks and converts them to PRE CODE + $text = preg_replace_callback("!(^|\n)`(.*?)`!s", array( __CLASS__, 'encodeit'), $text); + } else { + // Markdown can do inline code, we convert bbPress style block level code to Markdown style + $text = preg_replace_callback("!(^|\n)([ \t]*?)`(.*?)`!s", array( __CLASS__, 'indent'), $text); + } + return $text; + } + + function indent( $matches ) { + $text = $matches[3]; + $text = preg_replace('|^|m', $matches[2] . ' ', $text); + return $matches[1] . $text; + } + + function encodeit( $matches ) { + if ( function_exists('encodeit') ) // bbPress native + return encodeit( $matches ); + + $text = trim($matches[2]); + $text = htmlspecialchars($text, ENT_QUOTES); + $text = str_replace(array("\r\n", "\r"), "\n", $text); + $text = preg_replace("|\n\n\n+|", "\n\n", $text); + $text = str_replace('&lt;', '<', $text); + $text = str_replace('&gt;', '>', $text); + $text = "<code>$text</code>"; + if ( "`" != $matches[1] ) + $text = "<pre>$text</pre>"; + return $text; + } + + function decodeit( $matches ) { + if ( function_exists('decodeit') ) // bbPress native + return decodeit( $matches ); + + $text = $matches[2]; + $trans_table = array_flip(get_html_translation_table(HTML_ENTITIES)); + $text = strtr($text, $trans_table); + $text = str_replace('<br />', '', $text); + $text = str_replace('&', '&', $text); + $text = str_replace(''', "'", $text); + if ( '<pre><code>' == $matches[1] ) + $text = "\n$text\n"; + return "`$text`"; + } + +} // end class + +endif;