Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsgiehl <stefan@matomo.org>2022-03-22 12:36:48 +0300
committersgiehl <stefan@matomo.org>2022-03-22 12:37:42 +0300
commitf4383587f09213c119e43ae4a17ddb5694207db1 (patch)
treebdc74132ad722b13e14eda787bf6cc2287be6f65
parent680b1866b41297811d93db114f31cad13ce95215 (diff)
parentbc5175b483a5c88b389761624f5b65dfbfc85978 (diff)
Merge branch '4.x-dev' into m-2030-goals-per-page
-rw-r--r--.github/workflows/update-intl.yml122
-rw-r--r--composer.lock56
-rwxr-xr-xconfig/global.ini.php1
-rw-r--r--core/Archive/ArchiveInvalidator.php1
-rw-r--r--core/Archive/DataTableFactory.php1
-rw-r--r--core/ArchiveProcessor/ArchivingStatus.php2
-rw-r--r--core/ArchiveProcessor/Parameters.php3
-rw-r--r--core/ArchiveProcessor/Rules.php3
-rw-r--r--core/AssetManager.php30
-rw-r--r--core/AssetManager/UIAsset.php1
-rw-r--r--core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php1
-rw-r--r--core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php35
-rw-r--r--core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php1
-rw-r--r--core/Changes/Model.php1
-rw-r--r--core/CliMulti/Output.php1
-rw-r--r--core/CliMulti/OutputInterface.php3
-rw-r--r--core/CliMulti/Process.php5
-rw-r--r--core/CliMulti/StaticOutput.php2
-rw-r--r--core/Columns/Dimension.php1
-rw-r--r--core/Columns/Discriminator.php1
-rw-r--r--core/Common.php1
-rw-r--r--core/CronArchive.php2
-rw-r--r--core/CronArchive/QueueConsumer.php4
-rw-r--r--core/CronArchive/SegmentArchiving.php1
-rw-r--r--core/DataAccess/ArchiveSelector.php1
-rw-r--r--core/DataTable.php1
-rw-r--r--core/DataTable/Map.php1
-rw-r--r--core/DataTable/Row.php1
-rw-r--r--core/Date.php6
-rw-r--r--core/Db.php1
-rw-r--r--core/DeviceDetector/DeviceDetectorFactory.php1
-rw-r--r--core/Exception/NotYetInstalledException.php2
-rw-r--r--core/FrontController.php9
-rw-r--r--core/Http/ControllerResolver.php1
-rw-r--r--core/Mail/Transport.php1
-rw-r--r--core/Metrics.php1
-rw-r--r--core/Plugin/Manager.php1
-rw-r--r--core/Plugin/MetadataLoader.php1
-rw-r--r--core/ReportRenderer/Html.php1
-rw-r--r--core/ReportRenderer/Pdf.php1
-rw-r--r--core/Session/SessionAuth.php2
-rw-r--r--core/Session/SessionFingerprint.php1
-rw-r--r--core/SupportedBrowser.php1
-rw-r--r--core/Tracker/Cache.php1
-rw-r--r--core/Tracker/Db/Pdo/Mysql.php1
-rw-r--r--core/Tracker/FingerprintSalt.php6
-rw-r--r--core/Tracker/GoalManager.php5
-rw-r--r--core/Tracker/Request.php2
-rw-r--r--core/Updater/Migration/Custom.php2
-rw-r--r--core/Updater/Migration/Db/DropColumns.php1
-rw-r--r--core/Updates/4.0.0-b1.php1
-rw-r--r--core/Updates/4.0.0-rc3.php1
-rw-r--r--core/Updates/4.0.0-rc4.php1
-rw-r--r--core/Updates/4.0.1-b1.php6
-rw-r--r--core/Updates/4.1.2-b2.php6
-rw-r--r--core/Updates/4.3.0-b3.php3
-rw-r--r--core/Updates/4.3.0-b4.php1
-rw-r--r--core/Updates/4.3.0-rc2.php3
-rw-r--r--core/Updates/4.5.0-b1.php1
-rw-r--r--core/Updates/4.6.0-b1.php1
-rw-r--r--core/Validators/CharacterLength.php1
-rw-r--r--core/View/HtmlReportEmailHeaderView.php1
-rw-r--r--js/piwik.js2
-rw-r--r--js/piwik.min.js2
-rw-r--r--lang/en.json4
-rw-r--r--lang/it.json1
-rw-r--r--matomo.js2
-rw-r--r--node_modules/jquery-ui-dist/AUTHORS.txt2
-rw-r--r--node_modules/jquery-ui-dist/images/ui-icons_444444_256x240.pngbin7090 -> 7090 bytes
-rw-r--r--node_modules/jquery-ui-dist/images/ui-icons_555555_256x240.pngbin7074 -> 7074 bytes
-rw-r--r--node_modules/jquery-ui-dist/images/ui-icons_777620_256x240.pngbin4618 -> 4618 bytes
-rw-r--r--node_modules/jquery-ui-dist/images/ui-icons_777777_256x240.pngbin7111 -> 7111 bytes
-rw-r--r--node_modules/jquery-ui-dist/images/ui-icons_cc0000_256x240.pngbin4618 -> 4618 bytes
-rw-r--r--node_modules/jquery-ui-dist/images/ui-icons_ffffff_256x240.pngbin6487 -> 6487 bytes
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.css2
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.js299
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.min.css2
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.min.js4
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.structure.css2
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.structure.min.css2
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.theme.css2
-rw-r--r--node_modules/jquery-ui-dist/jquery-ui.theme.min.css2
-rw-r--r--node_modules/jquery-ui-dist/package.json12
-rw-r--r--package-lock.json14
-rw-r--r--package.json2
-rw-r--r--phpcs.xml12
-rw-r--r--piwik.js2
-rw-r--r--plugins/API/API.php4
-rw-r--r--plugins/API/Controller.php1
-rw-r--r--plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php1
-rw-r--r--plugins/API/ProcessedReport.php1
-rw-r--r--plugins/API/lang/id.json15
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml2
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml4
-rw-r--r--plugins/API/tests/Unit/WidgetMetadataTest.php3
-rw-r--r--plugins/Actions/Columns/DestinationPage.php1
-rw-r--r--plugins/Actions/Columns/ExitPageUrl.php1
-rw-r--r--plugins/Actions/Columns/IdPageview.php1
-rw-r--r--plugins/Actions/Columns/Keyword.php1
-rw-r--r--plugins/Actions/Columns/KeywordwithNoSearchResult.php1
-rw-r--r--plugins/Actions/Columns/PageUrl.php1
-rw-r--r--plugins/Actions/Columns/PageViewPosition.php2
-rw-r--r--plugins/Actions/Columns/SearchDestinationPage.php1
-rw-r--r--plugins/Actions/Columns/SearchNoResultKeyword.php1
-rw-r--r--plugins/Actions/Columns/VisitTotalInteractions.php1
-rw-r--r--plugins/Actions/DataTable/Filter/Actions.php1
-rw-r--r--plugins/Actions/Reports/GetEntryPageUrls.php2
-rw-r--r--plugins/Actions/Reports/GetExitPageUrls.php2
-rw-r--r--plugins/Actions/VisitorDetails.php5
-rw-r--r--plugins/Actions/lang/id.json20
-rw-r--r--plugins/Annotations/API.php3
m---------plugins/Bandwidth0
-rw-r--r--plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php1
-rw-r--r--plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php2
-rw-r--r--plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php1
-rw-r--r--plugins/BulkTracking/tests/Integration/BulkTrackingTest.php1
-rw-r--r--plugins/BulkTracking/tests/Integration/RequestsTest.php2
-rw-r--r--plugins/BulkTracking/tests/Integration/TrackerTest.php1
-rw-r--r--plugins/Contents/API.php2
-rw-r--r--plugins/Contents/Actions/ActionContent.php1
-rw-r--r--plugins/Contents/Archiver.php1
-rw-r--r--plugins/CoreAdminHome/API.php1
-rw-r--r--plugins/CoreAdminHome/Commands/InvalidateReportData.php3
-rw-r--r--plugins/CoreAdminHome/Commands/MigrateTokenAuths.php4
-rw-r--r--plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php1
-rw-r--r--plugins/CoreAdminHome/Tasks.php3
-rw-r--r--plugins/CoreAdminHome/tests/Framework/Mock/API.php1
-rw-r--r--plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php2
-rw-r--r--plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php1
-rw-r--r--plugins/CoreAdminHome/tests/Integration/TasksTest.php3
-rw-r--r--plugins/CoreConsole/Commands/ComputeJsAssetSize.php3
-rw-r--r--plugins/CoreConsole/Commands/DevelopmentEnable.php1
-rw-r--r--plugins/CoreConsole/Commands/GenerateDimension.php1
-rw-r--r--plugins/CoreHome/Categories/VisitorsCategory.php1
-rw-r--r--plugins/CoreHome/Columns/Metrics/ConversionRate.php1
-rw-r--r--plugins/CoreHome/Columns/Metrics/VisitsPercent.php1
-rw-r--r--plugins/CoreHome/Columns/UserId.php2
-rw-r--r--plugins/CoreHome/Columns/VisitGoalBuyer.php1
-rw-r--r--plugins/CoreHome/Columns/VisitTotalTime.php1
-rw-r--r--plugins/CoreHome/Columns/VisitorId.php1
-rw-r--r--plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php1
-rw-r--r--plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php1
-rw-r--r--plugins/CoreHome/Controller.php1
-rw-r--r--plugins/CoreHome/Menu.php2
-rw-r--r--plugins/CoreHome/Tracker/VisitRequestProcessor.php1
-rw-r--r--plugins/CoreHome/Widgets/GetDonateForm.php1
-rw-r--r--plugins/CoreHome/Widgets/GetSystemSummary.php1
-rw-r--r--plugins/CoreHome/angularjs/common/filters/evolution.js36
-rw-r--r--plugins/CoreHome/lang/zh-cn.json3
-rw-r--r--plugins/CoreHome/stylesheets/layout.less6
-rw-r--r--plugins/CoreHome/tests/Integration/Column/UserIdTest.php2
-rw-r--r--plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php9
-rw-r--r--plugins/CoreHome/tests/Unit/EvolutionMetricTest.php1
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.js145
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.min.js15
-rw-r--r--plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts2
-rw-r--r--plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts17
-rw-r--r--plugins/CoreHome/vue/src/QuickAccess/QuickAccess.less1
-rw-r--r--plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue2
-rw-r--r--plugins/CoreHome/vue/src/SiteSelector/Site.ts1
-rw-r--r--plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue1
-rw-r--r--plugins/CoreHome/vue/src/getFormattedEvolution.ts37
-rw-r--r--plugins/CoreHome/vue/src/index.ts5
-rw-r--r--plugins/CoreHome/vue/src/lazyInitSingleton.ts34
-rw-r--r--plugins/CorePluginsAdmin/API.php1
-rw-r--r--plugins/CorePluginsAdmin/Controller.php2
-rw-r--r--plugins/CorePluginsAdmin/Menu.php1
-rw-r--r--plugins/CorePluginsAdmin/tests/Integration/ApiTest.php1
-rw-r--r--plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js22
-rw-r--r--plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js2
-rw-r--r--plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue2
-rw-r--r--plugins/CoreUpdater/Commands/Update.php1
-rw-r--r--plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php1
-rw-r--r--plugins/CoreUpdater/Updater.php4
-rw-r--r--plugins/CoreUpdater/lang/it.json4
-rw-r--r--plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php1
-rw-r--r--plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php2
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator.php3
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/Cloud.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/Graph.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/JqplotGraph.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparkline.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparklines.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparklines/Config.php1
-rw-r--r--plugins/CoreVisualizations/Widgets/SingleMetricView.php1
-rw-r--r--plugins/CoreVue/Commands/Build.php4
-rw-r--r--plugins/CoreVue/Commands/GenerateVueComponent.php1
-rw-r--r--plugins/CoreVue/polyfills/dist/MatomoPolyfills.js71
-rw-r--r--plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js8
-rw-r--r--plugins/CoreVue/polyfills/src/index.ts18
-rw-r--r--plugins/CoreVue/types/index.d.ts11
m---------plugins/CustomAlerts0
-rw-r--r--plugins/CustomDimensions/API.php2
-rw-r--r--plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php2
-rw-r--r--plugins/CustomDimensions/Commands/AddCustomDimension.php1
-rw-r--r--plugins/CustomDimensions/Commands/Info.php2
-rw-r--r--plugins/CustomDimensions/Commands/RemoveCustomDimension.php1
-rw-r--r--plugins/CustomDimensions/Controller.php2
-rw-r--r--plugins/CustomDimensions/CustomDimensions.php14
-rw-r--r--plugins/CustomDimensions/Dao/AutoSuggest.php2
-rw-r--r--plugins/CustomDimensions/Dao/Configuration.php1
-rw-r--r--plugins/CustomDimensions/Dao/LogTable.php1
-rw-r--r--plugins/CustomDimensions/DataArray.php1
-rw-r--r--plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php1
-rw-r--r--plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php2
-rw-r--r--plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php1
-rw-r--r--plugins/CustomDimensions/Dimension/Extraction.php2
-rw-r--r--plugins/CustomDimensions/Dimension/Scope.php1
-rw-r--r--plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php1
-rw-r--r--plugins/CustomDimensions/Updates/0.1.2.php1
-rw-r--r--plugins/CustomDimensions/VisitorDetails.php1
-rw-r--r--plugins/CustomDimensions/angularjs/manage/edit.controller.js141
-rw-r--r--plugins/CustomDimensions/angularjs/manage/edit.directive.html102
-rw-r--r--plugins/CustomDimensions/angularjs/manage/edit.directive.js30
-rw-r--r--plugins/CustomDimensions/angularjs/manage/edit.directive.less25
-rw-r--r--plugins/CustomDimensions/angularjs/manage/list.controller.js19
-rw-r--r--plugins/CustomDimensions/angularjs/manage/list.directive.html55
-rw-r--r--plugins/CustomDimensions/angularjs/manage/list.directive.js27
-rw-r--r--plugins/CustomDimensions/angularjs/manage/manage.controller.js68
-rw-r--r--plugins/CustomDimensions/angularjs/manage/manage.directive.html30
-rw-r--r--plugins/CustomDimensions/angularjs/manage/manage.directive.js27
-rw-r--r--plugins/CustomDimensions/angularjs/manage/model.js124
-rw-r--r--plugins/CustomDimensions/lang/en.json3
-rw-r--r--plugins/CustomDimensions/lang/nb.json1
-rw-r--r--plugins/CustomDimensions/templates/manage.twig2
-rw-r--r--plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php1
-rw-r--r--plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml136
-rw-r--r--plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js1089
-rw-r--r--plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js33
-rw-r--r--plugins/CustomDimensions/vue/dist/umd.metadata.json6
-rw-r--r--plugins/CustomDimensions/vue/src/CustomDimensions.store.ts133
-rw-r--r--plugins/CustomDimensions/vue/src/Edit/Edit.adapter.ts23
-rw-r--r--plugins/CustomDimensions/vue/src/Edit/Edit.less25
-rw-r--r--plugins/CustomDimensions/vue/src/Edit/Edit.vue352
-rw-r--r--plugins/CustomDimensions/vue/src/List/List.adapter.ts14
-rw-r--r--plugins/CustomDimensions/vue/src/List/List.less (renamed from plugins/CustomDimensions/angularjs/manage/list.directive.less)0
-rw-r--r--plugins/CustomDimensions/vue/src/List/List.vue180
-rw-r--r--plugins/CustomDimensions/vue/src/Manage/Manage.adapter.ts14
-rw-r--r--plugins/CustomDimensions/vue/src/Manage/Manage.vue134
-rw-r--r--plugins/CustomDimensions/vue/src/index.ts15
-rw-r--r--plugins/CustomDimensions/vue/src/types.ts36
-rw-r--r--plugins/CustomDimensions/vue/src/utilities.ts10
-rw-r--r--plugins/CustomJsTracker/Commands/UpdateTracker.php1
m---------plugins/CustomVariables0
-rw-r--r--plugins/DBStats/DBStats.php2
-rw-r--r--plugins/DBStats/MySQLMetadataProvider.php1
-rw-r--r--plugins/DBStats/Reports/GetAdminDataSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetIndividualMetricsSummary.php2
-rw-r--r--plugins/DBStats/Reports/GetIndividualReportsSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetMetricDataSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetMetricDataSummaryByYear.php1
-rw-r--r--plugins/DBStats/Reports/GetReportDataSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetReportDataSummaryByYear.php1
-rw-r--r--plugins/DBStats/Reports/GetTrackerDataSummary.php1
-rw-r--r--plugins/Dashboard/API.php1
-rw-r--r--plugins/Dashboard/Controller.php1
-rw-r--r--plugins/Dashboard/Menu.php1
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png4
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png4
m---------plugins/DeviceDetectorCache0
-rw-r--r--plugins/DevicePlugins/Columns/Plugin.php1
-rw-r--r--plugins/DevicesDetection/Columns/BrowserName.php1
-rw-r--r--plugins/DevicesDetection/Columns/DeviceModel.php1
-rw-r--r--plugins/DevicesDetection/Columns/DeviceType.php1
-rw-r--r--plugins/DevicesDetection/Columns/Os.php1
-rw-r--r--plugins/DevicesDetection/Controller.php2
-rw-r--r--plugins/DevicesDetection/Reports/Base.php1
-rw-r--r--plugins/DevicesDetection/Reports/GetType.php1
-rw-r--r--plugins/DevicesDetection/Updates/1.14.php1
-rw-r--r--plugins/DevicesDetection/lang/nb.json8
-rw-r--r--plugins/Diagnostics/ConfigReader.php1
-rw-r--r--plugins/Diagnostics/Controller.php3
-rw-r--r--plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/CronArchivingCheck.php4
-rw-r--r--plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/DbReaderCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/GdExtensionCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/HttpClientCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/PageSpeedCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/ReportInformational.php4
-rw-r--r--plugins/Diagnostics/Diagnostic/TimezoneCheck.php1
-rw-r--r--plugins/Diagnostics/tests/Integration/ConfigReaderTest.php1
-rw-r--r--plugins/Ecommerce/Categories/EcommerceOverviewSubcategory.php3
-rw-r--r--plugins/Ecommerce/Columns/ProductCategory.php1
-rw-r--r--plugins/Ecommerce/Columns/ProductViewCategory.php3
-rw-r--r--plugins/Ecommerce/Controller.php1
-rw-r--r--plugins/Ecommerce/Reports/BaseItem.php2
-rw-r--r--plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php1
-rw-r--r--plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php1
-rw-r--r--plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php1
-rw-r--r--plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php1
-rw-r--r--plugins/Ecommerce/VisitorDetails.php6
-rw-r--r--plugins/Ecommerce/Widgets/GetEcommerceLog.php1
-rw-r--r--plugins/Ecommerce/lang/en.json1
-rw-r--r--plugins/Ecommerce/lang/nb.json4
-rw-r--r--plugins/Events/API.php3
-rw-r--r--plugins/Events/Archiver.php1
-rw-r--r--plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php1
-rw-r--r--plugins/Events/Events.php1
-rw-r--r--plugins/Events/Widgets/EventsByDimension.php1
-rw-r--r--plugins/ExampleLogTables/ExampleLogTables.php2
-rw-r--r--plugins/ExamplePlugin/API.php1
-rw-r--r--plugins/ExamplePlugin/Archiver.php2
-rw-r--r--plugins/ExamplePlugin/Controller.php1
-rw-r--r--plugins/ExamplePlugin/Widgets/MyExampleWidget.php1
-rw-r--r--plugins/ExampleReport/Reports/GetExampleReport.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleActionDimension.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleConversionDimension.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleDimension.php1
-rw-r--r--plugins/ExampleTracker/Columns/ExampleVisitDimension.php2
-rw-r--r--plugins/ExampleUI/Controller.php3
-rw-r--r--plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php1
-rw-r--r--plugins/ExampleUI/Reports/GetTemperaturesEvolution.php4
-rw-r--r--plugins/ExampleVisualization/Visualizations/SimpleTable.php1
-rw-r--r--plugins/ExampleVue/Widgets/GetExampleVue.php1
-rw-r--r--plugins/Feedback/API.php1
-rw-r--r--plugins/Feedback/Controller.php4
-rw-r--r--plugins/Feedback/Feedback.php4
-rw-r--r--plugins/Feedback/lang/nb.json16
-rw-r--r--plugins/Feedback/stylesheets/feedback.less4
-rw-r--r--plugins/Feedback/tests/Integration/FeedbackTest.php1
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png4
-rw-r--r--plugins/GeoIp2/LocationProvider/GeoIp2/Php.php2
-rw-r--r--plugins/Goals/Categories/GoalsOverviewSubcategory.php3
-rw-r--r--plugins/Goals/Columns/DaysToConversion.php1
-rw-r--r--plugins/Goals/Columns/VisitsUntilConversion.php1
-rw-r--r--plugins/Goals/Controller.php31
-rw-r--r--plugins/Goals/Conversions.php3
-rw-r--r--plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php1
-rw-r--r--plugins/Goals/Goals.php51
-rw-r--r--plugins/Goals/Reports/Base.php2
-rw-r--r--plugins/Goals/Reports/Get.php2
-rw-r--r--plugins/Goals/Updates/3.0.0-b1.php1
-rw-r--r--plugins/Goals/Visualizations/Goals.php4
-rw-r--r--plugins/Goals/Widgets/AddNewGoal.php2
-rw-r--r--plugins/Goals/Widgets/EditGoals.php2
-rw-r--r--plugins/Goals/angularjs/manage-goals/manage-goals.controller.js215
-rw-r--r--plugins/Goals/angularjs/manage-goals/manage-goals.directive.js38
-rw-r--r--plugins/Goals/templates/_addEditGoal.twig42
-rw-r--r--plugins/Goals/templates/_formAddGoal.twig183
-rw-r--r--plugins/Goals/templates/_listGoalEdit.twig122
-rw-r--r--plugins/Goals/tests/Integration/APITest.php1
-rw-r--r--plugins/Goals/vue/dist/Goals.umd.js936
-rw-r--r--plugins/Goals/vue/dist/Goals.umd.min.js16
-rw-r--r--plugins/Goals/vue/dist/umd.metadata.json3
-rw-r--r--plugins/Goals/vue/src/Goal.ts24
-rw-r--r--plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts64
-rw-r--r--plugins/Goals/vue/src/ManageGoals/ManageGoals.vue821
-rw-r--r--plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts38
-rw-r--r--plugins/Goals/vue/src/index.ts4
-rw-r--r--plugins/ImageGraph/ImageGraph.php1
-rw-r--r--plugins/Insights/Controller.php1
-rw-r--r--plugins/Insights/DataTable/Filter/MinGrowth.php1
-rw-r--r--plugins/Insights/Visualizations/Insight/RequestConfig.php1
-rw-r--r--plugins/Insights/tests/Unit/BaseUnitTest.php1
-rw-r--r--plugins/Insights/tests/Unit/FilterOrderByTest.php1
-rw-r--r--plugins/Insights/tests/Unit/InsightReportTest.php1
-rw-r--r--plugins/Installation/FormSuperUser.php1
-rw-r--r--plugins/Installation/Widgets/GetSystemCheck.php1
-rw-r--r--plugins/Installation/tests/System/APITest.php1
-rw-r--r--plugins/Intl/Commands/GenerateIntl.php34
-rw-r--r--plugins/Intl/lang/be.json6
-rw-r--r--plugins/Intl/lang/ca.json66
-rw-r--r--plugins/Intl/lang/cs.json2
-rw-r--r--plugins/Intl/lang/cy.json2
-rw-r--r--plugins/Intl/lang/de.json2
-rw-r--r--plugins/Intl/lang/el.json26
-rw-r--r--plugins/Intl/lang/en.json2
-rw-r--r--plugins/Intl/lang/es-ar.json76
-rw-r--r--plugins/Intl/lang/es.json18
-rw-r--r--plugins/Intl/lang/et.json28
-rw-r--r--plugins/Intl/lang/eu.json18
-rw-r--r--plugins/Intl/lang/fa.json16
-rw-r--r--plugins/Intl/lang/he.json10
-rw-r--r--plugins/Intl/lang/hi.json4
-rw-r--r--plugins/Intl/lang/hr.json4
-rw-r--r--plugins/Intl/lang/hu.json4
-rw-r--r--plugins/Intl/lang/id.json4
-rw-r--r--plugins/Intl/lang/is.json2
-rw-r--r--plugins/Intl/lang/ka.json2
-rw-r--r--plugins/Intl/lang/lv.json2
-rw-r--r--plugins/Intl/lang/nb.json2
-rw-r--r--plugins/Intl/lang/nn.json4
-rw-r--r--plugins/Intl/lang/pl.json4
-rw-r--r--plugins/Intl/lang/pt-br.json2
-rw-r--r--plugins/Intl/lang/pt.json2
-rw-r--r--plugins/Intl/lang/sl.json12
-rw-r--r--plugins/Intl/lang/sq.json2
-rw-r--r--plugins/Intl/lang/sr.json48
-rw-r--r--plugins/Intl/lang/te.json4
-rw-r--r--plugins/Intl/lang/th.json2
-rw-r--r--plugins/Intl/lang/tl.json2
-rw-r--r--plugins/Intl/lang/uk.json18
-rw-r--r--plugins/Intl/lang/vi.json2
-rw-r--r--plugins/Intl/lang/zh-tw.json4
-rw-r--r--plugins/LanguagesManager/Commands/TranslationBase.php4
-rw-r--r--plugins/LanguagesManager/LanguagesManager.php13
-rw-r--r--plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js36
-rw-r--r--plugins/LanguagesManager/angularjs/translationsearch/translationsearch.controller.js68
-rw-r--r--plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.html44
-rw-r--r--plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.js31
-rw-r--r--plugins/LanguagesManager/templates/searchTranslation.twig9
-rw-r--r--plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php1
-rw-r--r--plugins/LanguagesManager/vue/dist/LanguagesManager.umd.js401
-rw-r--r--plugins/LanguagesManager/vue/dist/LanguagesManager.umd.min.js20
-rw-r--r--plugins/LanguagesManager/vue/dist/umd.metadata.json5
-rw-r--r--plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.adapter.ts31
-rw-r--r--plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.ts36
-rw-r--r--plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.adapter.ts14
-rw-r--r--plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue183
-rw-r--r--plugins/LanguagesManager/vue/src/index.ts12
-rw-r--r--plugins/Live/API.php1
-rw-r--r--plugins/Live/Controller.php1
-rw-r--r--plugins/Live/Live.php1
-rw-r--r--plugins/Live/ProfileSummary/Summary.php1
-rw-r--r--plugins/Live/Reports/GetSimpleLastVisitCount.php1
-rw-r--r--plugins/Live/Visitor.php3
-rw-r--r--plugins/Live/angularjs/live-widget-refresh/live-widget-refresh.directive.js64
-rw-r--r--plugins/Live/tests/System/ApiCounterTest.php1
-rw-r--r--plugins/Live/vue/dist/Live.umd.js225
-rw-r--r--plugins/Live/vue/dist/Live.umd.min.js9
-rw-r--r--plugins/Live/vue/dist/umd.metadata.json5
-rw-r--r--plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.adapter.ts33
-rw-r--r--plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.ts50
-rw-r--r--plugins/Live/vue/src/index.ts10
m---------plugins/LogViewer0
-rw-r--r--plugins/Login/Commands/UnblockBlockedIps.php1
-rw-r--r--plugins/Login/Controller.php4
-rw-r--r--plugins/Login/Security/BruteForceDetection.php2
-rw-r--r--plugins/Login/SessionInitializer.php2
-rw-r--r--plugins/Login/tests/Integration/LoginTest.php3
-rw-r--r--plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php3
-rw-r--r--plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_noentries.png4
-rw-r--r--plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_withentries.png4
m---------plugins/LoginLdap0
-rw-r--r--plugins/Marketplace/Commands/SetLicenseKey.php1
-rw-r--r--plugins/Marketplace/Marketplace.php18
-rw-r--r--plugins/Marketplace/Widgets/GetPremiumFeatures.php2
-rw-r--r--plugins/Marketplace/Widgets/Marketplace.php4
-rw-r--r--plugins/Marketplace/angularjs/licensekey/licensekey.controller.js63
-rw-r--r--plugins/Marketplace/templates/licenseform.twig85
-rw-r--r--plugins/Marketplace/templates/paid-plugins-install-list.twig18
-rw-r--r--plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php1
-rw-r--r--plugins/Marketplace/vue/dist/Marketplace.umd.js489
-rw-r--r--plugins/Marketplace/vue/dist/Marketplace.umd.min.js8
-rw-r--r--plugins/Marketplace/vue/dist/umd.metadata.json6
-rw-r--r--plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue57
-rw-r--r--plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue244
-rw-r--r--plugins/Marketplace/vue/src/index.ts8
-rw-r--r--plugins/MobileMessaging/API.php1
-rw-r--r--plugins/MobileMessaging/MobileMessaging.php1
-rw-r--r--plugins/MobileMessaging/SMSProvider.php1
-rw-r--r--plugins/Monolog/tests/Integration/LogTest.php3
-rw-r--r--plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php4
-rw-r--r--plugins/Morpheus/Controller.php1
-rw-r--r--plugins/Morpheus/javascripts/piwikHelper.js53
-rw-r--r--plugins/Morpheus/plugin.json4
-rw-r--r--plugins/MultiSites/Controller.php3
-rw-r--r--plugins/MultiSites/Dashboard.php5
-rw-r--r--plugins/MultiSites/MultiSites.php12
-rw-r--r--plugins/MultiSites/angularjs/dashboard/dashboard-model.service.js227
-rw-r--r--plugins/MultiSites/angularjs/site/site.controller.js51
-rw-r--r--plugins/MultiSites/angularjs/site/site.directive.html40
-rw-r--r--plugins/MultiSites/angularjs/site/site.directive.js42
-rw-r--r--plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites.png4
-rw-r--r--plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_changed_sort_order.png4
-rw-r--r--plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_page_1.png4
-rw-r--r--plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_range.png4
-rw-r--r--plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_search.png4
-rw-r--r--plugins/MultiSites/vue/dist/MultiSites.umd.js1140
-rw-r--r--plugins/MultiSites/vue/dist/MultiSites.umd.min.js20
-rw-r--r--plugins/MultiSites/vue/dist/umd.metadata.json5
-rw-r--r--plugins/MultiSites/vue/src/Dashboard/Dashboard.adapter.ts39
-rw-r--r--plugins/MultiSites/vue/src/Dashboard/Dashboard.less (renamed from plugins/MultiSites/angularjs/dashboard/dashboard.directive.less)4
-rw-r--r--plugins/MultiSites/vue/src/Dashboard/Dashboard.store.ts359
-rw-r--r--plugins/MultiSites/vue/src/Dashboard/Dashboard.vue407
-rw-r--r--plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.adapter.ts34
-rw-r--r--plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue172
-rw-r--r--plugins/MultiSites/vue/src/index.ts13
-rw-r--r--plugins/Overlay/Controller.php2
-rw-r--r--plugins/Overlay/Overlay.php2
-rw-r--r--plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php6
-rw-r--r--plugins/PagePerformance/Reports/Get.php1
-rw-r--r--plugins/PrivacyManager/Controller.php2
-rw-r--r--plugins/PrivacyManager/Dao/LogDataAnonymizer.php1
-rw-r--r--plugins/PrivacyManager/ReferrerAnonymizer.php1
-rw-r--r--plugins/PrivacyManager/SystemSettings.php3
-rw-r--r--plugins/PrivacyManager/lang/ca.json213
-rw-r--r--plugins/PrivacyManager/lang/nb.json37
-rw-r--r--plugins/PrivacyManager/tests/Integration/DataPurgingTest.php1
-rw-r--r--plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php1
-rw-r--r--plugins/ProfessionalServices/Promo.php1
m---------plugins/Provider0
-rw-r--r--plugins/Proxy/Controller.php3
m---------plugins/QueuedTracking0
-rw-r--r--plugins/Referrers/Columns/Campaign.php1
-rw-r--r--plugins/Referrers/Columns/Referrer.php1
-rw-r--r--plugins/Referrers/Columns/SearchEngine.php1
-rw-r--r--plugins/Referrers/Columns/SocialNetwork.php1
-rw-r--r--plugins/Referrers/Columns/Website.php1
-rw-r--r--plugins/Referrers/Columns/WebsitePage.php1
-rw-r--r--plugins/Referrers/Controller.php8
-rw-r--r--plugins/Referrers/DataTable/Filter/KeywordNotDefined.php1
-rw-r--r--plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php1
-rw-r--r--plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php1
-rw-r--r--plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php2
-rw-r--r--plugins/Referrers/DataTable/Filter/UrlsForSocial.php2
-rw-r--r--plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php1
-rw-r--r--plugins/Referrers/Referrers.php1
-rw-r--r--plugins/Referrers/Reports/Get.php1
-rw-r--r--plugins/Referrers/Reports/GetKeywords.php2
-rw-r--r--plugins/Referrers/Reports/GetReferrerType.php1
-rw-r--r--plugins/Referrers/Reports/GetSocials.php1
-rw-r--r--plugins/Referrers/Reports/GetWebsites.php2
-rw-r--r--plugins/Referrers/Widgets/GetCampaignUrlBuilder.php1
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php1
-rw-r--r--plugins/Referrers/tests/Unit/ReferrersTest.php3
-rw-r--r--plugins/Referrers/tests/Unit/SocialTest.php1
-rw-r--r--plugins/Resolution/API.php2
-rw-r--r--plugins/Resolution/Columns/Configuration.php1
-rw-r--r--plugins/Resolution/Columns/Resolution.php1
-rw-r--r--plugins/SEO/Metric/Aggregator.php1
-rw-r--r--plugins/SEO/config/ui-test.php1
-rw-r--r--plugins/SEO/tests/Integration/SEOTest.php3
-rw-r--r--plugins/ScheduledReports/Controller.php4
-rw-r--r--plugins/ScheduledReports/Model.php1
-rw-r--r--plugins/ScheduledReports/Tasks.php1
-rw-r--r--plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php1
m---------plugins/SecurityInfo0
-rw-r--r--plugins/SegmentEditor/API.php6
-rw-r--r--plugins/SegmentEditor/SegmentEditor.php1
-rw-r--r--plugins/SegmentEditor/SegmentFormatter.php1
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_complex_segment.png4
-rw-r--r--plugins/SitesManager/API.php3
-rw-r--r--plugins/SitesManager/Controller.php4
-rw-r--r--plugins/SitesManager/Menu.php1
-rw-r--r--plugins/SitesManager/Model.php1
-rw-r--r--plugins/SitesManager/SiteUrls.php1
-rw-r--r--plugins/SitesManager/SitesManager.php1
-rw-r--r--plugins/SitesManager/lang/tr.json2
-rw-r--r--plugins/SitesManager/tests/Fixtures/ManySites.php2
-rw-r--r--plugins/SitesManager/tests/Integration/SitesManagerTest.php1
-rw-r--r--plugins/SitesManager/tests/Unit/APITest.php2
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.js214
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.min.js12
-rw-r--r--plugins/SitesManager/vue/src/CurrencyStore/CurrencyStore.ts16
-rw-r--r--plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts10
-rw-r--r--plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue4
-rw-r--r--plugins/SitesManager/vue/src/SiteFields/SiteFields.vue4
-rw-r--r--plugins/SitesManager/vue/src/SiteTypesStore/SiteTypesStore.ts20
-rw-r--r--plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue2
-rw-r--r--plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue4
-rw-r--r--plugins/SitesManager/vue/src/TimezoneStore/TimezoneStore.ts26
m---------plugins/TagManager0
m---------plugins/TasksTimetable0
m---------plugins/TrackingSpamPrevention0
-rw-r--r--plugins/Transitions/API.php3
-rw-r--r--plugins/Transitions/Widgets/GetTransitions.php1
-rw-r--r--plugins/TwoFactorAuth/Controller.php2
-rw-r--r--plugins/TwoFactorAuth/SystemSettings.php1
-rw-r--r--plugins/TwoFactorAuth/lang/nb.json12
-rw-r--r--plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php3
-rw-r--r--plugins/UserCountry/Controller.php2
-rw-r--r--plugins/UserCountry/LocationProvider/DisabledProvider.php2
-rw-r--r--plugins/UserCountry/VisitorGeolocator.php3
-rw-r--r--plugins/UserCountry/functions.php1
-rw-r--r--plugins/UserCountryMap/Controller.php3
-rw-r--r--plugins/UserCountryMap/lang/id.json3
-rw-r--r--plugins/UserId/API.php2
-rw-r--r--plugins/UserId/Columns/UserId.php1
-rw-r--r--plugins/UserId/Reports/GetUsers.php2
-rw-r--r--plugins/UserId/UserId.php1
-rw-r--r--plugins/UserId/lang/id.json7
-rw-r--r--plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php2
-rw-r--r--plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php1
-rw-r--r--plugins/UserId/tests/System/ApiTest.php1
-rw-r--r--plugins/UserId/tests/System/OverwriteUserIdTest.php1
-rw-r--r--plugins/UserLanguage/API.php2
-rw-r--r--plugins/UserLanguage/Reports/Base.php1
-rw-r--r--plugins/UsersManager/API.php2
-rw-r--r--plugins/UsersManager/Controller.php4
-rw-r--r--plugins/UsersManager/Model.php3
-rw-r--r--plugins/UsersManager/NewsletterSignup.php1
-rw-r--r--plugins/UsersManager/Sql/UserTableFilter.php1
-rw-r--r--plugins/UsersManager/UsersManager.php3
-rw-r--r--plugins/UsersManager/lang/ca.json209
-rw-r--r--plugins/UsersManager/tests/Integration/ModelTest.php5
-rw-r--r--plugins/UsersManager/tests/Integration/UsersManagerTest.php1
-rw-r--r--plugins/UsersManager/vue/dist/UsersManager.umd.js53
-rw-r--r--plugins/UsersManager/vue/dist/UsersManager.umd.min.js4
-rw-r--r--plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue2
-rw-r--r--plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.adapter.ts2
-rw-r--r--plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.ts8
-rw-r--r--plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue4
-rw-r--r--plugins/VisitFrequency/API.php1
-rw-r--r--plugins/VisitFrequency/Controller.php1
-rw-r--r--plugins/VisitFrequency/VisitFrequency.php2
-rw-r--r--plugins/VisitTime/Archiver.php1
-rw-r--r--plugins/VisitTime/Columns/DayOfTheWeek.php1
-rw-r--r--plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php1
-rw-r--r--plugins/VisitTime/lang/nb.json2
m---------plugins/VisitorGenerator0
-rw-r--r--plugins/VisitorInterest/Columns/PagesPerVisit.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitDuration.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php1
-rw-r--r--plugins/VisitorInterest/VisitorInterest.php4
-rw-r--r--plugins/VisitsSummary/API.php1
-rw-r--r--plugins/VisitsSummary/Controller.php2
-rw-r--r--plugins/VisitsSummary/Reports/Get.php3
-rw-r--r--plugins/VisitsSummary/Widgets/Index.php3
-rw-r--r--plugins/VisitsSummary/lang/id.json5
-rw-r--r--plugins/VisitsSummary/lang/nb.json2
-rw-r--r--plugins/WebsiteMeasurable/Settings/Urls.php2
-rw-r--r--plugins/Widgetize/Controller.php4
-rw-r--r--plugins/Widgetize/lang/id.json7
-rw-r--r--tests/PHPUnit/Fixtures/DisablePluginArchive.php2
-rw-r--r--tests/PHPUnit/Fixtures/JSTrackingUIFixture.php1
-rw-r--r--tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php1
-rw-r--r--tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php1
-rw-r--r--tests/PHPUnit/Fixtures/OmniFixture.php2
-rw-r--r--tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php1
-rw-r--r--tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php2
-rw-r--r--tests/PHPUnit/Fixtures/UITestFixture.php4
-rw-r--r--tests/PHPUnit/Fixtures/VisitsInCurrentYear.php6
-rw-r--r--tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php1
-rw-r--r--tests/PHPUnit/Framework/Fixture.php2
-rw-r--r--tests/PHPUnit/Framework/Mock/FakeAccess.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php1
-rw-r--r--tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php1
-rw-r--r--tests/PHPUnit/Framework/TestCase/SystemTestCase.php2
-rw-r--r--tests/PHPUnit/Framework/TestCase/UnitTestCase.php1
-rw-r--r--tests/PHPUnit/Framework/TestRequest/Collection.php1
-rw-r--r--tests/PHPUnit/Framework/TestingEnvironmentManipulator.php1
-rw-r--r--tests/PHPUnit/Integration/.gitignore1
-rw-r--r--tests/PHPUnit/Integration/AccessTest.php2
-rw-r--r--tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php3
-rw-r--r--tests/PHPUnit/Integration/ArchiveProcessingTest.php4
-rw-r--r--tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php1
-rw-r--r--tests/PHPUnit/Integration/ArchiveWebTest.php2
-rw-r--r--tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php10
-rw-r--r--tests/PHPUnit/Integration/AssetManagerTest.php140
-rw-r--r--tests/PHPUnit/Integration/Columns/UpdaterTest.php1
-rw-r--r--tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php4
-rw-r--r--tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php1
-rw-r--r--tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php3
-rw-r--r--tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php1
-rw-r--r--tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php2
-rw-r--r--tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php2
-rw-r--r--tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php1
-rw-r--r--tests/PHPUnit/Integration/EmailValidatorTest.php1
-rw-r--r--tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php1
-rw-r--r--tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php2
-rw-r--r--tests/PHPUnit/Integration/Plugin/CategoriesTest.php1
-rw-r--r--tests/PHPUnit/Integration/Plugin/ManagerTest.php3
-rw-r--r--tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php4
-rw-r--r--tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php2
-rw-r--r--tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php2
-rw-r--r--tests/PHPUnit/Integration/PluginTest.php2
-rw-r--r--tests/PHPUnit/Integration/ReleaseCheckListTest.php4
-rw-r--r--tests/PHPUnit/Integration/SegmentTest.php1
-rw-r--r--tests/PHPUnit/Integration/SequenceTest.php1
-rw-r--r--tests/PHPUnit/Integration/SessionTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/IntegrationTestCase.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php2
-rw-r--r--tests/PHPUnit/Integration/SupportedBrowserTest.php5
-rw-r--r--tests/PHPUnit/Integration/Tracker/DbTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php8
-rw-r--r--tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/RequestSetTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/VisitTest.php2
-rw-r--r--tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php1
-rw-r--r--tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php3
-rw-r--r--tests/PHPUnit/System/ApiGetReportMetadataTest.php1
-rw-r--r--tests/PHPUnit/System/ArchiveInvalidationTest.php3
-rw-r--r--tests/PHPUnit/System/BlobReportLimitingTest.php4
-rw-r--r--tests/PHPUnit/System/ConsoleTest.php12
-rw-r--r--tests/PHPUnit/System/FlattenReportsTest.php1
-rw-r--r--tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php1
-rw-r--r--tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php1
-rw-r--r--tests/PHPUnit/System/TrackerTest.php22
-rw-r--r--tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php5
-rw-r--r--tests/PHPUnit/System/Utf8mb4Test.php5
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml26
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml24
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml42
-rw-r--r--tests/PHPUnit/Unit/AssetManagerTest.php1
-rw-r--r--tests/PHPUnit/Unit/Category/CategoryTest.php1
-rw-r--r--tests/PHPUnit/Unit/Category/SubcategoryTest.php1
-rw-r--r--tests/PHPUnit/Unit/CliMulti/RequestParserTest.php1
-rw-r--r--tests/PHPUnit/Unit/Config/IniFileChainTest.php1
-rw-r--r--tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php1
-rw-r--r--tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php1
-rw-r--r--tests/PHPUnit/Unit/DataTable/ManagerTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataTable/MapTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataTableTest.php1
-rw-r--r--tests/PHPUnit/Unit/FilesystemTest.php1
-rw-r--r--tests/PHPUnit/Unit/Period/RangeTest.php1
-rw-r--r--tests/PHPUnit/Unit/Period/WeekTest.php2
-rw-r--r--tests/PHPUnit/Unit/PeriodTest.php1
-rw-r--r--tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php1
-rw-r--r--tests/PHPUnit/Unit/Scheduler/TimetableTest.php1
-rw-r--r--tests/PHPUnit/Unit/Translation/FilesTest.php2
-rw-r--r--tests/PHPUnit/bootstrap.php2
-rw-r--r--tests/UI/expected-screenshots/Menus_mobile_top.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_initially.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_search_1.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_search_2.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_search_category.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_search_no_result.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_search_sites.png4
-rw-r--r--tests/UI/expected-screenshots/QuickAccess_shortcut.png4
-rw-r--r--tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png4
-rw-r--r--tests/UI/expected-screenshots/Theme_home.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard5_mobile.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_widgetize_allwebsites.png4
-rw-r--r--tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png4
-rw-r--r--vue.config.js7
753 files changed, 10171 insertions, 3910 deletions
diff --git a/.github/workflows/update-intl.yml b/.github/workflows/update-intl.yml
new file mode 100644
index 0000000000..b6249c9edf
--- /dev/null
+++ b/.github/workflows/update-intl.yml
@@ -0,0 +1,122 @@
+name: Update Intl data
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "0 10 1 * *"
+
+permissions:
+ actions: read
+ checks: none
+ contents: write
+ deployments: none
+ issues: read
+ packages: none
+ pull-requests: write
+ repository-projects: none
+ security-events: none
+ statuses: none
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Fetch latest CLDR version"
+ id: cldr
+ run: |
+ CLDRRELEASES=$( curl \
+ --request GET \
+ --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
+ --header 'content-type: application/json' \
+ --url https://api.github.com/repos/unicode-org/cldr-json/releases?per_page=15 )
+ for row in $(echo "${CLDRRELEASES}" | jq -r '.[] | @base64'); do
+ _jq() {
+ echo ${row} | base64 --decode | jq -r ${1}
+ }
+ if [[ $(_jq '.prerelease') == false ]]
+ then
+ echo ::set-output name=cldr-version::$(_jq '.tag_name')
+ break
+ fi
+ done
+ shell: bash
+ - name: "Check CLDR version"
+ if: steps.cldr.outputs.cldr-version == ''
+ uses: actions/github-script@v3
+ with:
+ script: |
+ core.setFailed('Unable to find current CLDR version')
+ - uses: actions/checkout@v2
+ with:
+ lfs: false
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: '8.0'
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+ - name: Cache dependencies
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+ - name: Install dependencies
+ run: composer install --prefer-dist
+ - name: Quick Matomo Install
+ run: |
+ cat <<-EOF > ./config/config.ini.php
+ [General]
+ always_load_commands_from_plugin=Intl
+
+ [Development]
+ enabled = 1
+ EOF
+
+ cat ./config/config.ini.php
+ - name: Prepare git config
+ run: |
+ cat <<- EOF > $HOME/.netrc
+ machine github.com
+ login $GITHUB_ACTOR
+ password $GITHUB_TOKEN
+ machine api.github.com
+ login $GITHUB_ACTOR
+ password $GITHUB_TOKEN
+ EOF
+ chmod 600 $HOME/.netrc
+ git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com"
+ git config --global user.name "$GITHUB_ACTOR"
+ git push origin --delete update-intl || true
+ git branch -D update-intl || true
+ git branch update-intl
+ git checkout -f update-intl
+ - name: Update Intl data
+ run: php ./console translations:generate-intl-data --cldr-version="${{ steps.cldr.outputs.cldr-version }}"
+ - name: Push changes
+ id: push
+ run: |
+ if [[ $( git diff --numstat plugins/Intl/lang/*.json ) ]]
+ then
+ cd $GITHUB_WORKSPACE
+ git add plugins/Intl/lang/*.json
+ git commit -m "Updates Intl data from CLDR ${{ steps.cldr.outputs.cldr-version }}"
+ git push --set-upstream origin update-intl
+ echo ::set-output name=updated::1
+ fi
+ - name: Create PR
+ run: |
+ curl \
+ --request POST \
+ --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
+ --header 'content-type: application/json' \
+ --data '{
+ "title":"[automatic Intl data updates from CLDR ${{ steps.cldr.outputs.cldr-version }}]",
+ "body":"Updated Intl plugin data with changes from CLDR ${{ steps.cldr.outputs.cldr-version }}",
+ "head":"update-intl",
+ "base":"4.x-dev"
+ }' \
+ --url https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls
+ shell: bash
+ if: steps.push.outputs.updated \ No newline at end of file
diff --git a/composer.lock b/composer.lock
index 08206b92f2..b9570a4785 100644
--- a/composer.lock
+++ b/composer.lock
@@ -151,16 +151,16 @@
},
{
"name": "davaxi/sparkline",
- "version": "2.1.0",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/davaxi/Sparkline.git",
- "reference": "dc73091cdda1d4218a99794e91a3232917620ed5"
+ "reference": "7b1a978ec8c4d5f9eb9aa7b1af2efbc0130c6484"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/davaxi/Sparkline/zipball/dc73091cdda1d4218a99794e91a3232917620ed5",
- "reference": "dc73091cdda1d4218a99794e91a3232917620ed5",
+ "url": "https://api.github.com/repos/davaxi/Sparkline/zipball/7b1a978ec8c4d5f9eb9aa7b1af2efbc0130c6484",
+ "reference": "7b1a978ec8c4d5f9eb9aa7b1af2efbc0130c6484",
"shasum": ""
},
"require": {
@@ -202,7 +202,7 @@
"issues": "https://github.com/davaxi/Sparkline/issues",
"source": "https://github.com/davaxi/Sparkline/releases"
},
- "time": "2022-01-13T14:03:40+00:00"
+ "time": "2022-03-11T13:07:09+00:00"
},
{
"name": "geoip2/geoip2",
@@ -398,16 +398,16 @@
},
{
"name": "matomo/device-detector",
- "version": "5.0.4",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/matomo-org/device-detector.git",
- "reference": "99ea1953fc7f23f785e593ce1499a00586645530"
+ "reference": "cd1283126b4cf5081fdc0381b5b5e7849333cfa4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/99ea1953fc7f23f785e593ce1499a00586645530",
- "reference": "99ea1953fc7f23f785e593ce1499a00586645530",
+ "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/cd1283126b4cf5081fdc0381b5b5e7849333cfa4",
+ "reference": "cd1283126b4cf5081fdc0381b5b5e7849333cfa4",
"shasum": ""
},
"require": {
@@ -463,7 +463,7 @@
"source": "https://github.com/matomo-org/matomo",
"wiki": "https://dev.matomo.org/"
},
- "time": "2022-02-18T19:51:56+00:00"
+ "time": "2022-03-08T09:22:55+00:00"
},
{
"name": "matomo/doctrine-cache-fork",
@@ -870,16 +870,16 @@
},
{
"name": "monolog/monolog",
- "version": "1.26.1",
+ "version": "1.27.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5"
+ "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5",
- "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a",
+ "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a",
"shasum": ""
},
"require": {
@@ -940,7 +940,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/1.26.1"
+ "source": "https://github.com/Seldaek/monolog/tree/1.27.0"
},
"funding": [
{
@@ -952,7 +952,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-28T08:32:12+00:00"
+ "time": "2022-03-13T20:29:46+00:00"
},
{
"name": "mustangostang/spyc",
@@ -1835,7 +1835,7 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -1897,7 +1897,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
},
"funding": [
{
@@ -1917,7 +1917,7 @@
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
@@ -1980,7 +1980,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0"
},
"funding": [
{
@@ -2000,7 +2000,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -2063,7 +2063,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
},
"funding": [
{
@@ -3429,16 +3429,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "8.5.23",
+ "version": "8.5.25",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "efb20ff3623b9d09bf190a68fdfe574538a8d496"
+ "reference": "9ff23f4dfde040ccd3b8db876192d1184b934158"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb20ff3623b9d09bf190a68fdfe574538a8d496",
- "reference": "efb20ff3623b9d09bf190a68fdfe574538a8d496",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ff23f4dfde040ccd3b8db876192d1184b934158",
+ "reference": "9ff23f4dfde040ccd3b8db876192d1184b934158",
"shasum": ""
},
"require": {
@@ -3510,7 +3510,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.23"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.25"
},
"funding": [
{
@@ -3522,7 +3522,7 @@
"type": "github"
}
],
- "time": "2022-01-21T05:50:34+00:00"
+ "time": "2022-03-16T16:24:13+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
diff --git a/config/global.ini.php b/config/global.ini.php
index 4da5694f47..34dc50cf70 100755
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -639,6 +639,7 @@ assume_secure_protocol = 0
; By enabling this flag we will for example not allow the installation of a plugin via the UI as a plugin would be only
; installed on one server or a config one change would be only made on one server instead of all servers.
; This flag doesn't need to be enabled when the config file is on a shared filesystem such as NFS or EFS.
+; When enabled, Matomo will return the response code 200 instead of 503 in maintenance mode.
multi_server_environment = 0
; List of proxy headers for client IP addresses
diff --git a/core/Archive/ArchiveInvalidator.php b/core/Archive/ArchiveInvalidator.php
index 1dacecfcbe..0ef586fe8c 100644
--- a/core/Archive/ArchiveInvalidator.php
+++ b/core/Archive/ArchiveInvalidator.php
@@ -30,7 +30,6 @@ use Piwik\Segment;
use Piwik\SettingsServer;
use Piwik\Site;
use Piwik\Tracker\Cache;
-use Piwik\Tracker\Model as TrackerModel;
use Psr\Log\LoggerInterface;
/**
diff --git a/core/Archive/DataTableFactory.php b/core/Archive/DataTableFactory.php
index d2c2479448..0725fd1b54 100644
--- a/core/Archive/DataTableFactory.php
+++ b/core/Archive/DataTableFactory.php
@@ -11,7 +11,6 @@ namespace Piwik\Archive;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Period;
use Piwik\Segment;
use Piwik\Site;
diff --git a/core/ArchiveProcessor/ArchivingStatus.php b/core/ArchiveProcessor/ArchivingStatus.php
index 54dfae9dae..5f0bd763b2 100644
--- a/core/ArchiveProcessor/ArchivingStatus.php
+++ b/core/ArchiveProcessor/ArchivingStatus.php
@@ -9,11 +9,9 @@
namespace Piwik\ArchiveProcessor;
-use Piwik\Common;
use Piwik\Concurrency\Lock;
use Piwik\Concurrency\LockBackend;
use Piwik\Container\StaticContainer;
-use Piwik\SettingsPiwik;
class ArchivingStatus
{
diff --git a/core/ArchiveProcessor/Parameters.php b/core/ArchiveProcessor/Parameters.php
index c328170637..4d9975ca9e 100644
--- a/core/ArchiveProcessor/Parameters.php
+++ b/core/ArchiveProcessor/Parameters.php
@@ -9,9 +9,6 @@
namespace Piwik\ArchiveProcessor;
-use Piwik\Cache;
-use Piwik\DataAccess\Model;
-use Piwik\DataAccess\RawLogDao;
use Piwik\Date;
use Piwik\Log;
use Piwik\Period;
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index 4f0fd85be6..d1ff2e0880 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -9,18 +9,15 @@
namespace Piwik\ArchiveProcessor;
use Exception;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Config\GeneralConfig;
use Piwik\DataAccess\ArchiveWriter;
-use Piwik\DataAccess\Model;
use Piwik\Date;
use Piwik\Log;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CoreAdminHome\Controller;
-use Piwik\Scheduler\Task;
use Piwik\Segment;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
diff --git a/core/AssetManager.php b/core/AssetManager.php
index c2ad38ef96..c403969f77 100644
--- a/core/AssetManager.php
+++ b/core/AssetManager.php
@@ -279,10 +279,40 @@ class AssetManager extends Singleton
} else {
$assetsToRemove[] = $this->getMergedNonCoreJSAsset();
}
+
+ $assetFetcher = $this->getPluginUmdJScriptFetcher();
+ foreach ($assetFetcher->getChunkFiles() as $chunk) {
+ $files = $chunk->getFiles();
+
+ $foundInChunk = false;
+ foreach ($files as $file) {
+ if (strpos($file, "/$pluginName.umd.") !== false) {
+ $foundInChunk = true;
+ }
+ }
+
+ if ($foundInChunk) {
+ $outputFile = $chunk->getOutputFile();
+ $asset = $this->getMergedUIAsset($outputFile);
+ if ($asset->exists()) {
+ $assetsToRemove[] = $asset;
+ }
+ break;
+ }
+ }
}
} else {
$assetsToRemove[] = $this->getMergedCoreJSAsset();
$assetsToRemove[] = $this->getMergedNonCoreJSAsset();
+
+ $assetFetcher = $this->getPluginUmdJScriptFetcher();
+ foreach ($assetFetcher->getChunkFiles() as $chunk) {
+ $outputFile = $chunk->getOutputFile();
+ $asset = $this->getMergedUIAsset($outputFile);
+ if ($asset->exists()) {
+ $assetsToRemove[] = $asset;
+ }
+ }
}
$this->removeAssets($assetsToRemove);
diff --git a/core/AssetManager/UIAsset.php b/core/AssetManager/UIAsset.php
index cc26ba9564..012d5ab1ea 100644
--- a/core/AssetManager/UIAsset.php
+++ b/core/AssetManager/UIAsset.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\AssetManager;
-use Exception;
abstract class UIAsset
{
diff --git a/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php b/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php
index 5a31a25505..4248db9393 100644
--- a/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php
@@ -9,7 +9,6 @@
namespace Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
-use Piwik\Development;
use Piwik\Piwik;
class JScriptUIAssetFetcher extends UIAssetFetcher
diff --git a/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php b/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
index d56283bbaa..f86f7f5102 100644
--- a/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
@@ -12,7 +12,6 @@ namespace Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
use Piwik\Config;
use Piwik\Development;
-use Piwik\Exception\Exception;
use Piwik\Plugin\Manager;
class PluginUmdAssetFetcher extends UIAssetFetcher
@@ -177,21 +176,31 @@ class PluginUmdAssetFetcher extends UIAssetFetcher
$plugins = self::orderPluginsByPluginDependencies($plugins, false);
foreach ($plugins as $plugin) {
- $pluginDir = self::getRelativePluginDirectory($plugin);
+ $fileLocation = self::getUmdFileToUseForPlugin($plugin);
+ if ($fileLocation) {
+ $this->fileLocations[] = $fileLocation;
+ }
+ }
+ }
- $devUmd = "$pluginDir/vue/dist/$plugin.development.umd.js";
- $minifiedUmd = "$pluginDir/vue/dist/$plugin.umd.min.js";
- $umdSrcFolder = "$pluginDir/vue/src";
-
- // in case there are dist files but no src files, which can happen during development
- if (is_dir(PIWIK_INCLUDE_PATH . '/' . $umdSrcFolder)) {
- if (Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devUmd)) {
- $this->fileLocations[] = $devUmd;
- } else if (is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) {
- $this->fileLocations[] = $minifiedUmd;
- }
+ public static function getUmdFileToUseForPlugin($plugin)
+ {
+ $pluginDir = self::getRelativePluginDirectory($plugin);
+
+ $devUmd = "$pluginDir/vue/dist/$plugin.development.umd.js";
+ $minifiedUmd = "$pluginDir/vue/dist/$plugin.umd.min.js";
+ $umdSrcFolder = "$pluginDir/vue/src";
+
+ // in case there are dist files but no src files, which can happen during development
+ if (is_dir(PIWIK_INCLUDE_PATH . '/' . $umdSrcFolder)) {
+ if (Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devUmd)) {
+ return $devUmd;
+ } else if (is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) {
+ return $minifiedUmd;
}
}
+
+ return null;
}
public static function orderPluginsByPluginDependencies($plugins, $keepUnresolved = true)
diff --git a/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php b/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
index cca95ef384..68004330e7 100644
--- a/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
@@ -9,7 +9,6 @@
namespace Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
-use Piwik\Development;
use Piwik\Piwik;
class StylesheetUIAssetFetcher extends UIAssetFetcher
diff --git a/core/Changes/Model.php b/core/Changes/Model.php
index a9b46ad7a3..0988ca96d3 100644
--- a/core/Changes/Model.php
+++ b/core/Changes/Model.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Changes;
-use Piwik\Exception\Exception;
use Piwik\Piwik;
use Piwik\Common;
use Piwik\Date;
diff --git a/core/CliMulti/Output.php b/core/CliMulti/Output.php
index eced3854af..84fbaefb9f 100644
--- a/core/CliMulti/Output.php
+++ b/core/CliMulti/Output.php
@@ -8,7 +8,6 @@
namespace Piwik\CliMulti;
use Piwik\CliMulti;
-use Piwik\Common;
use Piwik\Filesystem;
class Output implements OutputInterface
diff --git a/core/CliMulti/OutputInterface.php b/core/CliMulti/OutputInterface.php
index 33d1978797..8eead52bd0 100644
--- a/core/CliMulti/OutputInterface.php
+++ b/core/CliMulti/OutputInterface.php
@@ -7,9 +7,6 @@
*/
namespace Piwik\CliMulti;
-use Piwik\CliMulti;
-use Piwik\Common;
-use Piwik\Filesystem;
interface OutputInterface
{
diff --git a/core/CliMulti/Process.php b/core/CliMulti/Process.php
index 6016f72918..a2e6f86e67 100644
--- a/core/CliMulti/Process.php
+++ b/core/CliMulti/Process.php
@@ -288,6 +288,11 @@ class Process
{
$exec = $command . ' > /dev/null 2>&1; echo $?';
$returnCode = @shell_exec($exec);
+
+ if (false === $returnCode || null === $returnCode) {
+ return false;
+ }
+
$returnCode = trim($returnCode);
return 0 == (int) $returnCode;
}
diff --git a/core/CliMulti/StaticOutput.php b/core/CliMulti/StaticOutput.php
index d298cc7bca..8c2291db64 100644
--- a/core/CliMulti/StaticOutput.php
+++ b/core/CliMulti/StaticOutput.php
@@ -7,9 +7,7 @@
*/
namespace Piwik\CliMulti;
-use Piwik\CliMulti;
use Piwik\Common;
-use Piwik\Filesystem;
class StaticOutput implements OutputInterface
{
diff --git a/core/Columns/Dimension.php b/core/Columns/Dimension.php
index c4ad3d9c8d..0875e1e753 100644
--- a/core/Columns/Dimension.php
+++ b/core/Columns/Dimension.php
@@ -12,7 +12,6 @@ use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\ArchivedMetric;
-use Piwik\Plugin\ComponentFactory;
use Piwik\Plugin\Segment;
use Exception;
use Piwik\CacheId;
diff --git a/core/Columns/Discriminator.php b/core/Columns/Discriminator.php
index 7f85684986..98a85d20ac 100644
--- a/core/Columns/Discriminator.php
+++ b/core/Columns/Discriminator.php
@@ -9,7 +9,6 @@
namespace Piwik\Columns;
use Exception;
-use Piwik\Plugins\Actions\Actions\ActionSiteSearch;
/**
* @api
diff --git a/core/Common.php b/core/Common.php
index 9a8d45d6b7..44d9e2cfdf 100644
--- a/core/Common.php
+++ b/core/Common.php
@@ -13,7 +13,6 @@ use Piwik\CliMulti\Process;
use Piwik\Container\StaticContainer;
use Piwik\Intl\Data\Provider\LanguageDataProvider;
use Piwik\Intl\Data\Provider\RegionDataProvider;
-use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
use Piwik\Tracker\Cache as TrackerCache;
/**
diff --git a/core/CronArchive.php b/core/CronArchive.php
index dcde1460fc..de55cddcc0 100644
--- a/core/CronArchive.php
+++ b/core/CronArchive.php
@@ -23,8 +23,6 @@ use Piwik\CronArchive\QueueConsumer;
use Piwik\CronArchive\SharedSiteIds;
use Piwik\CronArchive\StopArchiverException;
use Piwik\DataAccess\ArchiveSelector;
-use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\DataAccess\ArchiveWriter;
use Piwik\DataAccess\Model;
use Piwik\DataAccess\RawLogDao;
use Piwik\Exception\UnexpectedWebsiteFoundException;
diff --git a/core/CronArchive/QueueConsumer.php b/core/CronArchive/QueueConsumer.php
index 2f4902e588..7e920fa6bc 100644
--- a/core/CronArchive/QueueConsumer.php
+++ b/core/CronArchive/QueueConsumer.php
@@ -14,18 +14,14 @@ use Piwik\ArchiveProcessor\Loader;
use Piwik\ArchiveProcessor\Parameters;
use Piwik\ArchiveProcessor\Rules;
use Piwik\CliMulti\RequestParser;
-use Piwik\Common;
use Piwik\CronArchive;
use Piwik\DataAccess\ArchiveSelector;
use Piwik\DataAccess\Model;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Period;
use Piwik\Period\Factory as PeriodFactory;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugins\SitesManager\API;
use Piwik\Segment;
use Piwik\Site;
use Piwik\Timer;
diff --git a/core/CronArchive/SegmentArchiving.php b/core/CronArchive/SegmentArchiving.php
index 1464eeb295..f7dc4636e9 100644
--- a/core/CronArchive/SegmentArchiving.php
+++ b/core/CronArchive/SegmentArchiving.php
@@ -14,7 +14,6 @@ use Piwik\Archive\ArchiveInvalidator;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\CronArchive;
use Piwik\Date;
use Piwik\Db;
use Piwik\Period\Range;
diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php
index c0a19a6033..721163804a 100644
--- a/core/DataAccess/ArchiveSelector.php
+++ b/core/DataAccess/ArchiveSelector.php
@@ -20,7 +20,6 @@ use Piwik\Db;
use Piwik\Period;
use Piwik\Period\Range;
use Piwik\Segment;
-use Piwik\SettingsServer;
use Psr\Log\LoggerInterface;
/**
diff --git a/core/DataTable.php b/core/DataTable.php
index 1530e8d6be..16a5dbf64f 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -11,7 +11,6 @@ namespace Piwik;
use Closure;
use Exception;
-use Piwik\Archive\DataTableFactory;
use Piwik\DataTable\DataTableInterface;
use Piwik\DataTable\Manager;
use Piwik\DataTable\Renderer\Html;
diff --git a/core/DataTable/Map.php b/core/DataTable/Map.php
index 8700d8822d..351cb4d058 100644
--- a/core/DataTable/Map.php
+++ b/core/DataTable/Map.php
@@ -11,7 +11,6 @@ namespace Piwik\DataTable;
use Closure;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\Renderer\Console;
use Piwik\DataTable\Renderer\Html;
/**
diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php
index 731ad4f977..878c1a61cf 100644
--- a/core/DataTable/Row.php
+++ b/core/DataTable/Row.php
@@ -12,7 +12,6 @@ use Exception;
use Piwik\Container\StaticContainer;
use Piwik\DataTable;
use Piwik\Date;
-use Piwik\Log;
use Piwik\Metrics;
use Piwik\Period;
use Psr\Log\LoggerInterface;
diff --git a/core/Date.php b/core/Date.php
index a214751b8e..6c5b4d7854 100644
--- a/core/Date.php
+++ b/core/Date.php
@@ -889,6 +889,10 @@ class Date
case "ss":
case "s":
return $this->toString('s');
+ // would normally also include AM, PM, Noon and Midnight
+ case "b":
+ // would normally be a textual presentation like "in the afternoon"
+ case "B":
// am / pm
case "a":
return $this->toString('a') == 'am' ? $translator->translate('Intl_Time_AM') : $translator->translate('Intl_Time_PM');
@@ -911,7 +915,7 @@ class Date
}
protected static $tokens = array(
- 'G', 'y', 'M', 'L', 'd', 'h', 'H', 'k', 'K', 'm', 's', 'E', 'c', 'e', 'D', 'F', 'w', 'W', 'a', 'z', 'Z', 'v',
+ 'G', 'y', 'M', 'L', 'd', 'h', 'H', 'k', 'K', 'm', 's', 'E', 'c', 'e', 'D', 'F', 'w', 'W', 'a', 'b', 'B', 'z', 'Z', 'v',
);
/**
diff --git a/core/Db.php b/core/Db.php
index d3df9003ed..b047d1d8fd 100644
--- a/core/Db.php
+++ b/core/Db.php
@@ -9,7 +9,6 @@
namespace Piwik;
use Exception;
-use Piwik\DataAccess\TableMetadata;
use Piwik\Db\Adapter;
/**
diff --git a/core/DeviceDetector/DeviceDetectorFactory.php b/core/DeviceDetector/DeviceDetectorFactory.php
index 83931aaa1c..bc81a74a57 100644
--- a/core/DeviceDetector/DeviceDetectorFactory.php
+++ b/core/DeviceDetector/DeviceDetectorFactory.php
@@ -9,7 +9,6 @@
namespace Piwik\DeviceDetector;
use DeviceDetector\DeviceDetector;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
class DeviceDetectorFactory
diff --git a/core/Exception/NotYetInstalledException.php b/core/Exception/NotYetInstalledException.php
index c1635f5056..a8ebbb7d8a 100644
--- a/core/Exception/NotYetInstalledException.php
+++ b/core/Exception/NotYetInstalledException.php
@@ -8,8 +8,6 @@
*/
namespace Piwik\Exception;
-use Piwik\Common;
-use Piwik\Url;
use Throwable;
class NotYetInstalledException extends InvalidRequestParameterException
diff --git a/core/FrontController.php b/core/FrontController.php
index 97f7d47eb6..3227ffa330 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -11,6 +11,7 @@ namespace Piwik;
use Exception;
use Piwik\API\Request;
+use Piwik\Config\GeneralConfig;
use Piwik\Container\StaticContainer;
use Piwik\DataTable\Manager;
use Piwik\Exception\AuthenticationFailedException;
@@ -493,10 +494,14 @@ class FrontController extends Singleton
protected function handleMaintenanceMode()
{
- if ((Config::getInstance()->General['maintenance_mode'] != 1) || Common::isPhpCliMode()) {
+ if ((GeneralConfig::getConfigValue('maintenance_mode') != 1) || Common::isPhpCliMode() ) {
return;
}
- Common::sendResponseCode(503);
+
+ // as request matomo behind load balancer should not return 503. https://github.com/matomo-org/matomo/issues/18054
+ if (GeneralConfig::getConfigValue('multi_server_environment') != 1) {
+ Common::sendResponseCode(503);
+ }
$logoUrl = 'plugins/Morpheus/images/logo.svg';
$faviconUrl = 'plugins/CoreHome/images/favicon.png';
diff --git a/core/Http/ControllerResolver.php b/core/Http/ControllerResolver.php
index 82b2891327..b518b38a05 100644
--- a/core/Http/ControllerResolver.php
+++ b/core/Http/ControllerResolver.php
@@ -10,7 +10,6 @@ namespace Piwik\Http;
use DI\FactoryInterface;
use Exception;
-use Piwik\Plugin\Controller;
use Piwik\Plugin\ReportsProvider;
use Piwik\Plugin\WidgetsProvider;
diff --git a/core/Mail/Transport.php b/core/Mail/Transport.php
index edf6b13755..e88440b0ae 100644
--- a/core/Mail/Transport.php
+++ b/core/Mail/Transport.php
@@ -15,7 +15,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Mail;
use Piwik\Piwik;
-use Piwik\Version;
class Transport
{
diff --git a/core/Metrics.php b/core/Metrics.php
index c7de42bb8d..a4d347ea1c 100644
--- a/core/Metrics.php
+++ b/core/Metrics.php
@@ -9,7 +9,6 @@
namespace Piwik;
use Piwik\Cache as PiwikCache;
-use Piwik\Container\StaticContainer;
require_once PIWIK_INCLUDE_PATH . "/core/Piwik.php";
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index a3339f027d..61538b596d 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -16,7 +16,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
-use Piwik\Date;
use Piwik\Development;
use Piwik\EventDispatcher;
use Piwik\Exception\PluginDeactivatedException;
diff --git a/core/Plugin/MetadataLoader.php b/core/Plugin/MetadataLoader.php
index a6fb420255..df478d5432 100644
--- a/core/Plugin/MetadataLoader.php
+++ b/core/Plugin/MetadataLoader.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugin;
use Exception;
use Piwik\Piwik;
use Piwik\Version;
-use Piwik\Plugin;
/**
* @see core/Version.php
diff --git a/core/ReportRenderer/Html.php b/core/ReportRenderer/Html.php
index ef3029cf6a..71b77c00dc 100644
--- a/core/ReportRenderer/Html.php
+++ b/core/ReportRenderer/Html.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\ReportRenderer;
-use Piwik\Mail;
use Piwik\Piwik;
use Piwik\ReportRenderer;
use Piwik\View;
diff --git a/core/ReportRenderer/Pdf.php b/core/ReportRenderer/Pdf.php
index d7ac33c9fb..2ec74f4739 100644
--- a/core/ReportRenderer/Pdf.php
+++ b/core/ReportRenderer/Pdf.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\Filesystem;
use Piwik\NumberFormatter;
use Piwik\Piwik;
-use Piwik\Plugins\API\API;
use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\ReportRenderer;
use Piwik\TCPDF;
diff --git a/core/Session/SessionAuth.php b/core/Session/SessionAuth.php
index bff91c113e..0f2d1cadad 100644
--- a/core/Session/SessionAuth.php
+++ b/core/Session/SessionAuth.php
@@ -11,11 +11,9 @@ namespace Piwik\Session;
use Piwik\Auth;
use Piwik\AuthResult;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Plugins\UsersManager\Model;
use Piwik\Plugins\UsersManager\Model as UsersModel;
use Piwik\Session;
use Psr\Log\LoggerInterface;
diff --git a/core/Session/SessionFingerprint.php b/core/Session/SessionFingerprint.php
index 231ba17ea6..fa6a4fd22c 100644
--- a/core/Session/SessionFingerprint.php
+++ b/core/Session/SessionFingerprint.php
@@ -9,7 +9,6 @@
namespace Piwik\Session;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Date;
diff --git a/core/SupportedBrowser.php b/core/SupportedBrowser.php
index 6f9abe6310..3f9f195df0 100644
--- a/core/SupportedBrowser.php
+++ b/core/SupportedBrowser.php
@@ -9,7 +9,6 @@
namespace Piwik;
-use Piwik\Http;
use Piwik\Piwik;
use Piwik\Container\StaticContainer;
use Piwik\DeviceDetector\DeviceDetectorFactory;
diff --git a/core/Tracker/Cache.php b/core/Tracker/Cache.php
index 4cce6e4131..67ab93b71d 100644
--- a/core/Tracker/Cache.php
+++ b/core/Tracker/Cache.php
@@ -17,7 +17,6 @@ use Piwik\Option;
use Piwik\Piwik;
use Piwik\Tracker;
use Psr\Log\LoggerInterface;
-use function DI\object;
/**
* Simple cache mechanism used in Tracker to avoid requesting settings from mysql on every request
diff --git a/core/Tracker/Db/Pdo/Mysql.php b/core/Tracker/Db/Pdo/Mysql.php
index 1e83b7135a..8b1a536704 100644
--- a/core/Tracker/Db/Pdo/Mysql.php
+++ b/core/Tracker/Db/Pdo/Mysql.php
@@ -12,7 +12,6 @@ use Exception;
use PDO;
use PDOException;
use PDOStatement;
-use Piwik\Config;
use Piwik\Tracker\Db;
use Piwik\Tracker\Db\DbException;
diff --git a/core/Tracker/FingerprintSalt.php b/core/Tracker/FingerprintSalt.php
index 9896c074ca..c3d056ba74 100644
--- a/core/Tracker/FingerprintSalt.php
+++ b/core/Tracker/FingerprintSalt.php
@@ -11,13 +11,7 @@ namespace Piwik\Tracker;
use Piwik\Common;
use Piwik\Date;
-use Piwik\Exception\InvalidRequestParameterException;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Option;
-use Piwik\Piwik;
-use Piwik\SettingsServer;
-use Piwik\Site;
-use Piwik\Db as PiwikDb;
class FingerprintSalt
{
diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php
index 1d1e3314d1..ea37d447b5 100644
--- a/core/Tracker/GoalManager.php
+++ b/core/Tracker/GoalManager.php
@@ -19,7 +19,6 @@ use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CustomVariables\CustomVariables;
use Piwik\Plugins\Events\Actions\ActionEvent;
-use Piwik\Tracker;
use Piwik\Tracker\Visit\VisitProperties;
/**
@@ -561,8 +560,10 @@ class GoalManager
foreach ($cleanedItems as $item) {
$actionsToLookup = array();
- list($sku, $name, $category, $price, $quantity) = $item;
+ list($sku_check, $name_check, $category, $price, $quantity) = $item;
+ $sku = is_array($sku_check) ? join(',', $sku_check) : $sku_check;
$actionsToLookup[] = array(trim($sku), Action::TYPE_ECOMMERCE_ITEM_SKU);
+ $name = is_array($name_check) ? join(',', $name_check) : $name_check;
$actionsToLookup[] = array(trim($name), Action::TYPE_ECOMMERCE_ITEM_NAME);
// Only one category
diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php
index 2dd8be5579..58911a25a5 100644
--- a/core/Tracker/Request.php
+++ b/core/Tracker/Request.php
@@ -10,7 +10,6 @@ namespace Piwik\Tracker;
use Exception;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Cookie;
use Piwik\Exception\InvalidRequestParameterException;
@@ -18,7 +17,6 @@ use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\IP;
use Matomo\Network\IPUtils;
use Piwik\Piwik;
-use Piwik\Plugins\PrivacyManager\PrivacyManager;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\ProxyHttp;
use Piwik\Segment\SegmentExpression;
diff --git a/core/Updater/Migration/Custom.php b/core/Updater/Migration/Custom.php
index c69dca9fd6..3e4e92bea5 100644
--- a/core/Updater/Migration/Custom.php
+++ b/core/Updater/Migration/Custom.php
@@ -7,8 +7,6 @@
*/
namespace Piwik\Updater\Migration;
-use Piwik\Config;
-use Piwik\Container\StaticContainer;
use Piwik\Updater\Migration;
/**
diff --git a/core/Updater/Migration/Db/DropColumns.php b/core/Updater/Migration/Db/DropColumns.php
index 5df61ddf08..f71c179694 100644
--- a/core/Updater/Migration/Db/DropColumns.php
+++ b/core/Updater/Migration/Db/DropColumns.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Updater\Migration\Db;
-use Piwik\Db;
use Piwik\DbHelper;
/**
diff --git a/core/Updates/4.0.0-b1.php b/core/Updates/4.0.0-b1.php
index 13c7bdd868..1aaa6cfee1 100644
--- a/core/Updates/4.0.0-b1.php
+++ b/core/Updates/4.0.0-b1.php
@@ -25,7 +25,6 @@ use Piwik\Plugins\PagePerformance\Columns\TimeNetwork;
use Piwik\Plugins\PagePerformance\Columns\TimeOnLoad;
use Piwik\Plugins\PagePerformance\Columns\TimeServer;
use Piwik\Plugins\PagePerformance\Columns\TimeTransfer;
-use Piwik\Plugins\UsersManager\Model;
use Piwik\Common;
use Piwik\Config;
use Piwik\Plugins\UserCountry\LocationProvider;
diff --git a/core/Updates/4.0.0-rc3.php b/core/Updates/4.0.0-rc3.php
index 86c9ca0189..cda763e666 100644
--- a/core/Updates/4.0.0-rc3.php
+++ b/core/Updates/4.0.0-rc3.php
@@ -9,7 +9,6 @@
namespace Piwik\Updates;
-use Piwik\Config;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/core/Updates/4.0.0-rc4.php b/core/Updates/4.0.0-rc4.php
index ad408f1ed4..2315f491cc 100644
--- a/core/Updates/4.0.0-rc4.php
+++ b/core/Updates/4.0.0-rc4.php
@@ -9,7 +9,6 @@
namespace Piwik\Updates;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
diff --git a/core/Updates/4.0.1-b1.php b/core/Updates/4.0.1-b1.php
index 852b3b934b..c3b4d503d7 100644
--- a/core/Updates/4.0.1-b1.php
+++ b/core/Updates/4.0.1-b1.php
@@ -10,12 +10,6 @@
namespace Piwik\Updates;
use Piwik\Common;
-use Piwik\Config;
-use Piwik\Container\StaticContainer;
-use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\Date;
-use Piwik\DbHelper;
-use Piwik\Plugin\ReleaseChannels;
use Piwik\SettingsPiwik;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
diff --git a/core/Updates/4.1.2-b2.php b/core/Updates/4.1.2-b2.php
index 0c38c38480..bbabf2ca99 100644
--- a/core/Updates/4.1.2-b2.php
+++ b/core/Updates/4.1.2-b2.php
@@ -9,13 +9,7 @@
namespace Piwik\Updates;
-use Piwik\Container\StaticContainer;
-use Piwik\CronArchive;
use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\Date;
-use Piwik\Plugins\SegmentEditor\API;
-use Piwik\Archive\ArchiveInvalidator;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/core/Updates/4.3.0-b3.php b/core/Updates/4.3.0-b3.php
index d9588f1d3f..14a79f575c 100644
--- a/core/Updates/4.3.0-b3.php
+++ b/core/Updates/4.3.0-b3.php
@@ -11,10 +11,7 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
-use Piwik\Db;
-use Piwik\Common;
/**
* Update for version 4.3.0-b3.
diff --git a/core/Updates/4.3.0-b4.php b/core/Updates/4.3.0-b4.php
index de579b9c1e..f0ced8b9eb 100644
--- a/core/Updates/4.3.0-b4.php
+++ b/core/Updates/4.3.0-b4.php
@@ -11,7 +11,6 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
use Piwik\Db;
use Piwik\Common;
diff --git a/core/Updates/4.3.0-rc2.php b/core/Updates/4.3.0-rc2.php
index 9246997727..09ad6f2f23 100644
--- a/core/Updates/4.3.0-rc2.php
+++ b/core/Updates/4.3.0-rc2.php
@@ -11,10 +11,7 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
-use Piwik\Db;
-use Piwik\Common;
/**
* Update for version 4.3.0-rc2.
diff --git a/core/Updates/4.5.0-b1.php b/core/Updates/4.5.0-b1.php
index 1ac0cae445..3cd30ac854 100644
--- a/core/Updates/4.5.0-b1.php
+++ b/core/Updates/4.5.0-b1.php
@@ -9,7 +9,6 @@
namespace Piwik\Updates;
-use Piwik\DbHelper;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/core/Updates/4.6.0-b1.php b/core/Updates/4.6.0-b1.php
index 557ed9b953..d48a72ea42 100644
--- a/core/Updates/4.6.0-b1.php
+++ b/core/Updates/4.6.0-b1.php
@@ -11,7 +11,6 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
class Updates_4_6_0_b1 extends PiwikUpdates
diff --git a/core/Validators/CharacterLength.php b/core/Validators/CharacterLength.php
index d40b11bfcb..6e235bf081 100644
--- a/core/Validators/CharacterLength.php
+++ b/core/Validators/CharacterLength.php
@@ -9,7 +9,6 @@
namespace Piwik\Validators;
-use Piwik\Common;
use Piwik\Piwik;
class CharacterLength extends BaseValidator
diff --git a/core/View/HtmlReportEmailHeaderView.php b/core/View/HtmlReportEmailHeaderView.php
index 2320146e52..bfbbfaaadd 100644
--- a/core/View/HtmlReportEmailHeaderView.php
+++ b/core/View/HtmlReportEmailHeaderView.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\Date;
use Piwik\Mail\EmailStyles;
use Piwik\Plugin\ThemeStyles;
-use Piwik\Plugins\API\API;
use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\Scheduler\Schedule\Schedule;
use Piwik\SettingsPiwik;
diff --git a/js/piwik.js b/js/piwik.js
index 9a5076fd5c..41dd1af52e 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -3095,7 +3095,7 @@ if (typeof window.Matomo !== 'object') {
}
function deleteCookie(cookieName, path, domain) {
- setCookie(cookieName, '', -86400, path, domain);
+ setCookie(cookieName, '', -129600000, path, domain);
}
/*
diff --git a/js/piwik.min.js b/js/piwik.min.js
index 655b743505..ea636ad0cc 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -35,7 +35,7 @@ if(dv===dt){return true}if(dt.slice(0,1)==="."){if(dv===dt.slice(1)){return true
du<aC.length;du++){dt=O(aC[du].toLowerCase());if(dw===dt){return true}if(dt.slice(0,1)==="."){if(dw===dt.slice(1)){return true}dv=dw.length-dt.length;if((dv>0)&&(dw.slice(dv)===dt)){return true}}}return false}function cv(dt,dv){dt=dt.replace("send_image=0","send_image=1");var du=new Image(1,1);du.onload=function(){H=0;if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:true})}};du.onerror=function(){if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:false})}};du.src=aI+(aI.indexOf("?")<0?"?":"&")+dt}function cM(dt){if(dj==="POST"){return true}return dt&&(dt.length>2000||dt.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dx,dA,dz){var dv=aP();if(!dv){return false}var dw={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dB=false;var du=aI;try{var dt=new Blob([dx],dw);if(dz&&!cM(dx)){dt=new Blob([],dw);du=du+(du.indexOf("?")<0?"?":"&")+dx}dB=g.sendBeacon(du,dt)}catch(dy){return false
}if(dB&&typeof dA==="function"){dA({request:dx,trackerUrl:aI,success:true,isSendBeacon:true})}return dB}function de(du,dv,dt){if(!M(dt)||null===dt){dt=true}if(m&&bc(du,dv,dt)){return}setTimeout(function(){if(m&&bc(du,dv,dt)){return}var dy;try{var dx=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dx.open("POST",aI,true);dx.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dz=m&&bc(du,dv,dt);if(!dz&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dv==="function")){dv({request:du,trackerUrl:aI,success:true,xhr:this})}}};dx.setRequestHeader("Content-Type",cE);dx.withCredentials=true;dx.send(du)}catch(dw){dy=m&&bc(du,dv,dt);if(!dy&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false})}}}},50)}function cl(du){var dt=new Date();var dv=dt.getTime()+du;if(!r||dv>r){r=dv}}function bg(){bi=true;
cF=new Date().getTime()}function dm(){var dt=new Date().getTime();return !cF||(dt-cF)>bb}function aD(){if(dm()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dm()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dq(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dm()){bX()}}})}function cK(dx){var du=new Date();var dt=du.getTime();c8=dt;if(cJ&&dt<cJ){var dv=cJ-dt;setTimeout(dx,dv);cl(dv+50);cJ+=50;return}if(cJ===false){var dw=800;cJ=dt+dw}dx()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(du,dt,dv){aT();if(!bJ){cT.push(du);return}aA=true;if(!cY&&du){if(cI&&bJ){du+="&consent=1"}cK(function(){if(c5&&bc(du,dv,true)){cl(100);return}if(cM(du)){de(du,dv)}else{cv(du,dv)}cl(dt)})}if(!aS){dq()}}function cq(dt){if(cY){return false}return(dt&&dt.length)}function dd(dt,dx){if(!dx||dx>=dt.length){return[dt]}var du=0;var dv=dt.length;var dw=[];
-for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-86400,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
+for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-129600000,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
dh[du]=(dw&&dw.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dv=parseInt(ab.width,10);var dt=parseInt(ab.height,10);dh.res=parseInt(dv,10)+"x"+parseInt(dt,10);return dh}function b3(){var du=aY("cvar"),dt=aH(du);if(dt&&dt.length){dt=W.JSON.parse(dt);if(Z(dt)){return dt}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var du=bl();var dv=aF();var dt=String(du)+dv;return dt}function dc(dv){dv=String(dv);var dy=aF();var dw=dy.length;var dx=dv.substr(-1*dw,dw);
var du=parseInt(dv.substr(0,dv.length-dw),10);if(du&&dx&&dx===dy){var dt=bl();if(a5<=0){return true}if(dt>=du&&dt<=(du+a5)){return true}}return false}function dr(dt){if(!cV){return""}var dx=e(dt,az);if(!dx){return""}dx=String(dx);var dv=new RegExp("^[a-zA-Z0-9]+$");if(dx.length===32&&dv.test(dx)){var du=dx.substr(16,32);if(dc(du)){var dw=dx.substr(0,16);return dw}}return""}function cW(){if(!bU){bU=dr(bT)}var dv=new Date(),dt=Math.round(dv.getTime()/1000),du=aY("id"),dy=aH(du),dx,dw;if(dy){dx=dy.split(".");dx.unshift("0");if(bU.length){dx[1]=bU}return dx}if(bU.length){dw=bU}else{if("0"===cb()){dw=""}else{dw=cZ()}}dx=["1",dw,dt];return dx}function a4(){var dw=cW(),du=dw[0],dv=dw[1],dt=dw[2];return{newVisitor:du,uuid:dv,createTs:dt}}function aL(){var dw=new Date(),du=dw.getTime(),dx=a4().createTs;var dt=parseInt(dx,10);var dv=(dt*1000)+cS-du;return dv}function aR(dt){if(!cc){return}var dv=new Date(),du=Math.round(dv.getTime()/1000);if(!M(dt)){dt=a4()}var dw=dt.uuid+"."+dt.createTs+".";dn(aY("id"),dw,aL(),bw,c7,bY,aN)
}function bS(){var dt=aH(aY("ref"));if(dt.length){try{dt=W.JSON.parse(dt);if(Z(dt)){return dt}}catch(du){}}return["","",0,""]}function bD(dv){var du=bq+"testcookie_domain";var dt="testvalue";dn(du,dt,10000,null,dv,bY,aN);if(aH(du)===dt){b5(du,null,dv);return true}return false}function aJ(){var du=bs;bs=false;var dt,dv;for(dt=0;dt<bB.length;dt++){dv=aY(bB[dt]);if(dv!==cU&&dv!==bj&&0!==aH(dv)){b5(dv,bw,c7)}}bs=du}function b9(dt){cc=dt}function ds(dx){if(!dx||!Z(dx)){return}var dw=[];var dv;for(dv in dx){if(Object.prototype.hasOwnProperty.call(dx,dv)){dw.push(dv)}}var dy={};dw.sort();var dt=dw.length;var du;for(du=0;du<dt;du++){dy[dw[du]]=dx[dw[du]]}return dy}function ci(){dn(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dw="";var du="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dv=du.length;var dt;for(dt=0;dt<6;dt++){dw+=du.charAt(Math.floor(Math.random()*dv))}return dw}function aE(du){if(ct!==""){du+=ct;bn=true;return du}if(!h){return du}var dv=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
diff --git a/lang/en.json b/lang/en.json
index 79a9b92c41..048e9c04d3 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -534,7 +534,9 @@
"YouMustBeLoggedIn": "You must be logged in to access this functionality.",
"YouMustUpgradePhpVersionToReceiveLatestPiwik": "You must upgrade your PHP version in order to receive the latest Matomo update.",
"YourChangesHaveBeenSaved": "Your changes have been saved.",
- "YourSessionHasExpired": "Your session has expired due to inactivity. Please log in to continue."
+ "YourSessionHasExpired": "Your session has expired due to inactivity. Please log in to continue.",
+ "Update": "Update",
+ "Create": "Create"
},
"Mobile": {
"AboutPiwikMobile": "About Matomo Mobile",
diff --git a/lang/it.json b/lang/it.json
index 102b4914b0..8293570104 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -149,6 +149,7 @@
"Description": "Descrizione",
"Desktop": "Desktop",
"Details": "Dettagli",
+ "Disabled": "Disabilitato",
"Discount": "Sconto",
"DisplaySimpleTable": "Visualizza una tabella semplice",
"DisplayTableWithGoalMetrics": "Visualizza una tabella con le metriche dei Goal (Obiettivi)",
diff --git a/matomo.js b/matomo.js
index 655b743505..ea636ad0cc 100644
--- a/matomo.js
+++ b/matomo.js
@@ -35,7 +35,7 @@ if(dv===dt){return true}if(dt.slice(0,1)==="."){if(dv===dt.slice(1)){return true
du<aC.length;du++){dt=O(aC[du].toLowerCase());if(dw===dt){return true}if(dt.slice(0,1)==="."){if(dw===dt.slice(1)){return true}dv=dw.length-dt.length;if((dv>0)&&(dw.slice(dv)===dt)){return true}}}return false}function cv(dt,dv){dt=dt.replace("send_image=0","send_image=1");var du=new Image(1,1);du.onload=function(){H=0;if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:true})}};du.onerror=function(){if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:false})}};du.src=aI+(aI.indexOf("?")<0?"?":"&")+dt}function cM(dt){if(dj==="POST"){return true}return dt&&(dt.length>2000||dt.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dx,dA,dz){var dv=aP();if(!dv){return false}var dw={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dB=false;var du=aI;try{var dt=new Blob([dx],dw);if(dz&&!cM(dx)){dt=new Blob([],dw);du=du+(du.indexOf("?")<0?"?":"&")+dx}dB=g.sendBeacon(du,dt)}catch(dy){return false
}if(dB&&typeof dA==="function"){dA({request:dx,trackerUrl:aI,success:true,isSendBeacon:true})}return dB}function de(du,dv,dt){if(!M(dt)||null===dt){dt=true}if(m&&bc(du,dv,dt)){return}setTimeout(function(){if(m&&bc(du,dv,dt)){return}var dy;try{var dx=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dx.open("POST",aI,true);dx.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dz=m&&bc(du,dv,dt);if(!dz&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dv==="function")){dv({request:du,trackerUrl:aI,success:true,xhr:this})}}};dx.setRequestHeader("Content-Type",cE);dx.withCredentials=true;dx.send(du)}catch(dw){dy=m&&bc(du,dv,dt);if(!dy&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false})}}}},50)}function cl(du){var dt=new Date();var dv=dt.getTime()+du;if(!r||dv>r){r=dv}}function bg(){bi=true;
cF=new Date().getTime()}function dm(){var dt=new Date().getTime();return !cF||(dt-cF)>bb}function aD(){if(dm()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dm()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dq(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dm()){bX()}}})}function cK(dx){var du=new Date();var dt=du.getTime();c8=dt;if(cJ&&dt<cJ){var dv=cJ-dt;setTimeout(dx,dv);cl(dv+50);cJ+=50;return}if(cJ===false){var dw=800;cJ=dt+dw}dx()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(du,dt,dv){aT();if(!bJ){cT.push(du);return}aA=true;if(!cY&&du){if(cI&&bJ){du+="&consent=1"}cK(function(){if(c5&&bc(du,dv,true)){cl(100);return}if(cM(du)){de(du,dv)}else{cv(du,dv)}cl(dt)})}if(!aS){dq()}}function cq(dt){if(cY){return false}return(dt&&dt.length)}function dd(dt,dx){if(!dx||dx>=dt.length){return[dt]}var du=0;var dv=dt.length;var dw=[];
-for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-86400,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
+for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-129600000,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
dh[du]=(dw&&dw.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dv=parseInt(ab.width,10);var dt=parseInt(ab.height,10);dh.res=parseInt(dv,10)+"x"+parseInt(dt,10);return dh}function b3(){var du=aY("cvar"),dt=aH(du);if(dt&&dt.length){dt=W.JSON.parse(dt);if(Z(dt)){return dt}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var du=bl();var dv=aF();var dt=String(du)+dv;return dt}function dc(dv){dv=String(dv);var dy=aF();var dw=dy.length;var dx=dv.substr(-1*dw,dw);
var du=parseInt(dv.substr(0,dv.length-dw),10);if(du&&dx&&dx===dy){var dt=bl();if(a5<=0){return true}if(dt>=du&&dt<=(du+a5)){return true}}return false}function dr(dt){if(!cV){return""}var dx=e(dt,az);if(!dx){return""}dx=String(dx);var dv=new RegExp("^[a-zA-Z0-9]+$");if(dx.length===32&&dv.test(dx)){var du=dx.substr(16,32);if(dc(du)){var dw=dx.substr(0,16);return dw}}return""}function cW(){if(!bU){bU=dr(bT)}var dv=new Date(),dt=Math.round(dv.getTime()/1000),du=aY("id"),dy=aH(du),dx,dw;if(dy){dx=dy.split(".");dx.unshift("0");if(bU.length){dx[1]=bU}return dx}if(bU.length){dw=bU}else{if("0"===cb()){dw=""}else{dw=cZ()}}dx=["1",dw,dt];return dx}function a4(){var dw=cW(),du=dw[0],dv=dw[1],dt=dw[2];return{newVisitor:du,uuid:dv,createTs:dt}}function aL(){var dw=new Date(),du=dw.getTime(),dx=a4().createTs;var dt=parseInt(dx,10);var dv=(dt*1000)+cS-du;return dv}function aR(dt){if(!cc){return}var dv=new Date(),du=Math.round(dv.getTime()/1000);if(!M(dt)){dt=a4()}var dw=dt.uuid+"."+dt.createTs+".";dn(aY("id"),dw,aL(),bw,c7,bY,aN)
}function bS(){var dt=aH(aY("ref"));if(dt.length){try{dt=W.JSON.parse(dt);if(Z(dt)){return dt}}catch(du){}}return["","",0,""]}function bD(dv){var du=bq+"testcookie_domain";var dt="testvalue";dn(du,dt,10000,null,dv,bY,aN);if(aH(du)===dt){b5(du,null,dv);return true}return false}function aJ(){var du=bs;bs=false;var dt,dv;for(dt=0;dt<bB.length;dt++){dv=aY(bB[dt]);if(dv!==cU&&dv!==bj&&0!==aH(dv)){b5(dv,bw,c7)}}bs=du}function b9(dt){cc=dt}function ds(dx){if(!dx||!Z(dx)){return}var dw=[];var dv;for(dv in dx){if(Object.prototype.hasOwnProperty.call(dx,dv)){dw.push(dv)}}var dy={};dw.sort();var dt=dw.length;var du;for(du=0;du<dt;du++){dy[dw[du]]=dx[dw[du]]}return dy}function ci(){dn(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dw="";var du="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dv=du.length;var dt;for(dt=0;dt<6;dt++){dw+=du.charAt(Math.floor(Math.random()*dv))}return dw}function aE(du){if(ct!==""){du+=ct;bn=true;return du}if(!h){return du}var dv=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
diff --git a/node_modules/jquery-ui-dist/AUTHORS.txt b/node_modules/jquery-ui-dist/AUTHORS.txt
index 4b92a88b43..2fcf89accc 100644
--- a/node_modules/jquery-ui-dist/AUTHORS.txt
+++ b/node_modules/jquery-ui-dist/AUTHORS.txt
@@ -363,3 +363,5 @@ sakshi87 <53863764+sakshi87@users.noreply.github.com>
Mikolaj Wolicki <wolicki.mikolaj@gmail.com>
Patrick McKay <patrick.mckay@vumc.org>
c-lambert <58025159+c-lambert@users.noreply.github.com>
+Josep Sanz <josepsanzcamp@gmail.com>
+Ben Mullins <benm@umich.edu>
diff --git a/node_modules/jquery-ui-dist/images/ui-icons_444444_256x240.png b/node_modules/jquery-ui-dist/images/ui-icons_444444_256x240.png
index d9eaa591b5..07e4ea066f 100644
--- a/node_modules/jquery-ui-dist/images/ui-icons_444444_256x240.png
+++ b/node_modules/jquery-ui-dist/images/ui-icons_444444_256x240.png
Binary files differ
diff --git a/node_modules/jquery-ui-dist/images/ui-icons_555555_256x240.png b/node_modules/jquery-ui-dist/images/ui-icons_555555_256x240.png
index 26bc07b390..5e33fddf0e 100644
--- a/node_modules/jquery-ui-dist/images/ui-icons_555555_256x240.png
+++ b/node_modules/jquery-ui-dist/images/ui-icons_555555_256x240.png
Binary files differ
diff --git a/node_modules/jquery-ui-dist/images/ui-icons_777620_256x240.png b/node_modules/jquery-ui-dist/images/ui-icons_777620_256x240.png
index ef32b9c892..1d096c1af4 100644
--- a/node_modules/jquery-ui-dist/images/ui-icons_777620_256x240.png
+++ b/node_modules/jquery-ui-dist/images/ui-icons_777620_256x240.png
Binary files differ
diff --git a/node_modules/jquery-ui-dist/images/ui-icons_777777_256x240.png b/node_modules/jquery-ui-dist/images/ui-icons_777777_256x240.png
index 7265cada9d..ff0994dd11 100644
--- a/node_modules/jquery-ui-dist/images/ui-icons_777777_256x240.png
+++ b/node_modules/jquery-ui-dist/images/ui-icons_777777_256x240.png
Binary files differ
diff --git a/node_modules/jquery-ui-dist/images/ui-icons_cc0000_256x240.png b/node_modules/jquery-ui-dist/images/ui-icons_cc0000_256x240.png
index 0a4ac1e396..6bba8faee8 100644
--- a/node_modules/jquery-ui-dist/images/ui-icons_cc0000_256x240.png
+++ b/node_modules/jquery-ui-dist/images/ui-icons_cc0000_256x240.png
Binary files differ
diff --git a/node_modules/jquery-ui-dist/images/ui-icons_ffffff_256x240.png b/node_modules/jquery-ui-dist/images/ui-icons_ffffff_256x240.png
index 2521ab166b..1e82dad81a 100644
--- a/node_modules/jquery-ui-dist/images/ui-icons_ffffff_256x240.png
+++ b/node_modules/jquery-ui-dist/images/ui-icons_ffffff_256x240.png
Binary files differ
diff --git a/node_modules/jquery-ui-dist/jquery-ui.css b/node_modules/jquery-ui-dist/jquery-ui.css
index db84bc0ccb..2f0601a674 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.css
+++ b/node_modules/jquery-ui-dist/jquery-ui.css
@@ -1,4 +1,4 @@
-/*! jQuery UI - v1.13.0 - 2021-10-07
+/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
diff --git a/node_modules/jquery-ui-dist/jquery-ui.js b/node_modules/jquery-ui-dist/jquery-ui.js
index 4157565410..5d9bfa2f1b 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.js
+++ b/node_modules/jquery-ui-dist/jquery-ui.js
@@ -1,4 +1,4 @@
-/*! jQuery UI - v1.13.0 - 2021-10-07
+/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
@@ -20,11 +20,11 @@
$.ui = $.ui || {};
-var version = $.ui.version = "1.13.0";
+var version = $.ui.version = "1.13.1";
/*!
- * jQuery UI Widget 1.13.0
+ * jQuery UI Widget 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -88,7 +88,7 @@ $.widget = function( name, base, prototype ) {
constructor = $[ namespace ][ name ] = function( options, element ) {
// Allow instantiation without "new" keyword
- if ( !this._createWidget ) {
+ if ( !this || !this._createWidget ) {
return new constructor( options, element );
}
@@ -510,6 +510,8 @@ $.Widget.prototype = {
}, options );
function bindRemoveEvent() {
+ var nodesToBind = [];
+
options.element.each( function( _, element ) {
var isTracked = $.map( that.classesElementLookup, function( elements ) {
return elements;
@@ -519,11 +521,13 @@ $.Widget.prototype = {
} );
if ( !isTracked ) {
- that._on( $( element ), {
- remove: "_untrackClassesElement"
- } );
+ nodesToBind.push( element );
}
} );
+
+ that._on( $( nodesToBind ), {
+ remove: "_untrackClassesElement"
+ } );
}
function processClassString( classes, checkOption ) {
@@ -762,7 +766,7 @@ var widget = $.widget;
/*!
- * jQuery UI Position 1.13.0
+ * jQuery UI Position 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -1259,7 +1263,7 @@ var position = $.ui.position;
/*!
- * jQuery UI :data 1.13.0
+ * jQuery UI :data 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -1288,7 +1292,7 @@ var data = $.extend( $.expr.pseudos, {
} );
/*!
- * jQuery UI Disable Selection 1.13.0
+ * jQuery UI Disable Selection 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -2043,7 +2047,7 @@ colors = jQuery.Color.names = {
/*!
- * jQuery UI Effects 1.13.0
+ * jQuery UI Effects 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -2427,7 +2431,7 @@ if ( $.uiBackCompat !== false ) {
}
$.extend( $.effects, {
- version: "1.13.0",
+ version: "1.13.1",
define: function( name, mode, effect ) {
if ( !effect ) {
@@ -2995,7 +2999,7 @@ var effect = $.effects;
/*!
- * jQuery UI Effects Blind 1.13.0
+ * jQuery UI Effects Blind 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3050,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
/*!
- * jQuery UI Effects Bounce 1.13.0
+ * jQuery UI Effects Bounce 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3145,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
/*!
- * jQuery UI Effects Clip 1.13.0
+ * jQuery UI Effects Clip 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3195,7 +3199,7 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
/*!
- * jQuery UI Effects Drop 1.13.0
+ * jQuery UI Effects Drop 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3249,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
/*!
- * jQuery UI Effects Explode 1.13.0
+ * jQuery UI Effects Explode 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3345,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
/*!
- * jQuery UI Effects Fade 1.13.0
+ * jQuery UI Effects Fade 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3377,7 +3381,7 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
/*!
- * jQuery UI Effects Fold 1.13.0
+ * jQuery UI Effects Fold 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3451,7 +3455,7 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
/*!
- * jQuery UI Effects Highlight 1.13.0
+ * jQuery UI Effects Highlight 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3493,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
/*!
- * jQuery UI Effects Size 1.13.0
+ * jQuery UI Effects Size 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3671,7 +3675,7 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
/*!
- * jQuery UI Effects Scale 1.13.0
+ * jQuery UI Effects Scale 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3711,7 +3715,7 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
/*!
- * jQuery UI Effects Puff 1.13.0
+ * jQuery UI Effects Puff 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3737,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
/*!
- * jQuery UI Effects Pulsate 1.13.0
+ * jQuery UI Effects Pulsate 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3786,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
/*!
- * jQuery UI Effects Shake 1.13.0
+ * jQuery UI Effects Shake 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3845,7 +3849,7 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
/*!
- * jQuery UI Effects Slide 1.13.0
+ * jQuery UI Effects Slide 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3906,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
/*!
- * jQuery UI Effects Transfer 1.13.0
+ * jQuery UI Effects Transfer 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -3931,7 +3935,7 @@ var effectsEffectTransfer = effect;
/*!
- * jQuery UI Focusable 1.13.0
+ * jQuery UI Focusable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4013,7 +4017,7 @@ var form = $.fn._form = function() {
/*!
- * jQuery UI Form Reset Mixin 1.13.0
+ * jQuery UI Form Reset Mixin 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4075,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = {
/*!
- * jQuery UI Support for jQuery core 1.8.x and newer 1.13.0
+ * jQuery UI Support for jQuery core 1.8.x and newer 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4150,7 +4154,7 @@ if ( !$.fn.even || !$.fn.odd ) {
;
/*!
- * jQuery UI Keycode 1.13.0
+ * jQuery UI Keycode 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4185,7 +4189,7 @@ var keycode = $.ui.keyCode = {
/*!
- * jQuery UI Labels 1.13.0
+ * jQuery UI Labels 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4240,7 +4244,7 @@ var labels = $.fn.labels = function() {
/*!
- * jQuery UI Scroll Parent 1.13.0
+ * jQuery UI Scroll Parent 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4274,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
/*!
- * jQuery UI Tabbable 1.13.0
+ * jQuery UI Tabbable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4298,7 +4302,7 @@ var tabbable = $.extend( $.expr.pseudos, {
/*!
- * jQuery UI Unique ID 1.13.0
+ * jQuery UI Unique ID 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4336,7 +4340,7 @@ var uniqueId = $.fn.extend( {
/*!
- * jQuery UI Accordion 1.13.0
+ * jQuery UI Accordion 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4357,7 +4361,7 @@ var uniqueId = $.fn.extend( {
var widgetsAccordion = $.widget( "ui.accordion", {
- version: "1.13.0",
+ version: "1.13.1",
options: {
active: 0,
animate: {},
@@ -4968,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
/*!
- * jQuery UI Menu 1.13.0
+ * jQuery UI Menu 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -4987,7 +4991,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
var widgetsMenu = $.widget( "ui.menu", {
- version: "1.13.0",
+ version: "1.13.1",
defaultElement: "<ul>",
delay: 300,
options: {
@@ -5659,7 +5663,7 @@ var widgetsMenu = $.widget( "ui.menu", {
/*!
- * jQuery UI Autocomplete 1.13.0
+ * jQuery UI Autocomplete 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -5678,7 +5682,7 @@ var widgetsMenu = $.widget( "ui.menu", {
$.widget( "ui.autocomplete", {
- version: "1.13.0",
+ version: "1.13.1",
defaultElement: "<input>",
options: {
appendTo: null,
@@ -5704,6 +5708,7 @@ $.widget( "ui.autocomplete", {
requestIndex: 0,
pending: 0,
+ liveRegionTimer: null,
_create: function() {
@@ -5905,8 +5910,10 @@ $.widget( "ui.autocomplete", {
// Announce the value in the liveRegion
label = ui.item.attr( "aria-label" ) || item.value;
if ( label && String.prototype.trim.call( label ).length ) {
- this.liveRegion.children().hide();
- $( "<div>" ).text( label ).appendTo( this.liveRegion );
+ clearTimeout( this.liveRegionTimer );
+ this.liveRegionTimer = this._delay( function() {
+ this.liveRegion.html( $( "<div>" ).text( label ) );
+ }, 100 );
}
},
menuselect: function( event, ui ) {
@@ -6301,8 +6308,10 @@ $.widget( "ui.autocomplete", $.ui.autocomplete, {
} else {
message = this.options.messages.noResults;
}
- this.liveRegion.children().hide();
- $( "<div>" ).text( message ).appendTo( this.liveRegion );
+ clearTimeout( this.liveRegionTimer );
+ this.liveRegionTimer = this._delay( function() {
+ this.liveRegion.html( $( "<div>" ).text( message ) );
+ }, 100 );
}
} );
@@ -6310,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
/*!
- * jQuery UI Controlgroup 1.13.0
+ * jQuery UI Controlgroup 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -6331,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
var widgetsControlgroup = $.widget( "ui.controlgroup", {
- version: "1.13.0",
+ version: "1.13.1",
defaultElement: "<div>",
options: {
direction: "horizontal",
@@ -6595,7 +6604,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
} );
/*!
- * jQuery UI Checkboxradio 1.13.0
+ * jQuery UI Checkboxradio 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -6615,7 +6624,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
- version: "1.13.0",
+ version: "1.13.1",
options: {
disabled: null,
label: null,
@@ -6861,7 +6870,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
/*!
- * jQuery UI Button 1.13.0
+ * jQuery UI Button 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -6880,7 +6889,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
$.widget( "ui.button", {
- version: "1.13.0",
+ version: "1.13.1",
defaultElement: "<button>",
options: {
classes: {
@@ -7287,7 +7296,7 @@ var widgetsButton = $.ui.button;
/* eslint-disable max-len, camelcase */
/*!
- * jQuery UI Datepicker 1.13.0
+ * jQuery UI Datepicker 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -7305,7 +7314,7 @@ var widgetsButton = $.ui.button;
//>>css.theme: ../../themes/base/theme.css
-$.extend( $.ui, { datepicker: { version: "1.13.0" } } );
+$.extend( $.ui, { datepicker: { version: "1.13.1" } } );
var datepicker_instActive;
@@ -9502,7 +9511,7 @@ $.fn.datepicker = function( options ) {
$.datepicker = new Datepicker(); // singleton instance
$.datepicker.initialized = false;
$.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.13.0";
+$.datepicker.version = "1.13.1";
var widgetsDatepicker = $.datepicker;
@@ -9512,7 +9521,7 @@ var widgetsDatepicker = $.datepicker;
var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
/*!
- * jQuery UI Mouse 1.13.0
+ * jQuery UI Mouse 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -9532,7 +9541,7 @@ $( document ).on( "mouseup", function() {
} );
var widgetsMouse = $.widget( "ui.mouse", {
- version: "1.13.0",
+ version: "1.13.1",
options: {
cancel: "input, textarea, button, select, option",
distance: 1,
@@ -9774,7 +9783,7 @@ var safeBlur = $.ui.safeBlur = function( element ) {
/*!
- * jQuery UI Draggable 1.13.0
+ * jQuery UI Draggable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -9791,7 +9800,7 @@ var safeBlur = $.ui.safeBlur = function( element ) {
$.widget( "ui.draggable", $.ui.mouse, {
- version: "1.13.0",
+ version: "1.13.1",
widgetEventPrefix: "drag",
options: {
addClasses: true,
@@ -11009,7 +11018,7 @@ var widgetsDraggable = $.ui.draggable;
/*!
- * jQuery UI Resizable 1.13.0
+ * jQuery UI Resizable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -11028,7 +11037,7 @@ var widgetsDraggable = $.ui.draggable;
$.widget( "ui.resizable", $.ui.mouse, {
- version: "1.13.0",
+ version: "1.13.1",
widgetEventPrefix: "resize",
options: {
alsoResize: false,
@@ -12207,7 +12216,7 @@ var widgetsResizable = $.ui.resizable;
/*!
- * jQuery UI Dialog 1.13.0
+ * jQuery UI Dialog 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -12226,7 +12235,7 @@ var widgetsResizable = $.ui.resizable;
$.widget( "ui.dialog", {
- version: "1.13.0",
+ version: "1.13.1",
options: {
appendTo: "body",
autoOpen: true,
@@ -13132,7 +13141,7 @@ var widgetsDialog = $.ui.dialog;
/*!
- * jQuery UI Droppable 1.13.0
+ * jQuery UI Droppable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -13148,7 +13157,7 @@ var widgetsDialog = $.ui.dialog;
$.widget( "ui.droppable", {
- version: "1.13.0",
+ version: "1.13.1",
widgetEventPrefix: "drop",
options: {
accept: "*",
@@ -13615,7 +13624,7 @@ var widgetsDroppable = $.ui.droppable;
/*!
- * jQuery UI Progressbar 1.13.0
+ * jQuery UI Progressbar 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -13636,7 +13645,7 @@ var widgetsDroppable = $.ui.droppable;
var widgetsProgressbar = $.widget( "ui.progressbar", {
- version: "1.13.0",
+ version: "1.13.1",
options: {
classes: {
"ui-progressbar": "ui-corner-all",
@@ -13778,7 +13787,7 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
/*!
- * jQuery UI Selectable 1.13.0
+ * jQuery UI Selectable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -13795,7 +13804,7 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
- version: "1.13.0",
+ version: "1.13.1",
options: {
appendTo: "body",
autoRefresh: true,
@@ -14076,7 +14085,7 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
/*!
- * jQuery UI Selectmenu 1.13.0
+ * jQuery UI Selectmenu 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -14097,7 +14106,7 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
- version: "1.13.0",
+ version: "1.13.1",
defaultElement: "<select>",
options: {
appendTo: null,
@@ -14745,7 +14754,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
/*!
- * jQuery UI Slider 1.13.0
+ * jQuery UI Slider 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -14764,7 +14773,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
- version: "1.13.0",
+ version: "1.13.1",
widgetEventPrefix: "slide",
options: {
@@ -15480,7 +15489,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
/*!
- * jQuery UI Sortable 1.13.0
+ * jQuery UI Sortable 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -15497,7 +15506,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
- version: "1.13.0",
+ version: "1.13.1",
widgetEventPrefix: "sort",
ready: false,
options: {
@@ -15880,79 +15889,76 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
this.helper[ 0 ].style.top = this.position.top + "px";
}
- //Post events to containers
- this._contactContainers( event );
-
- if ( this.innermostContainer !== null ) {
-
- //Do scrolling
- if ( o.scroll ) {
- if ( this._scroll( event ) !== false ) {
+ //Do scrolling
+ if ( o.scroll ) {
+ if ( this._scroll( event ) !== false ) {
- //Update item positions used in position checks
- this._refreshItemPositions( true );
+ //Update item positions used in position checks
+ this._refreshItemPositions( true );
- if ( $.ui.ddmanager && !o.dropBehaviour ) {
- $.ui.ddmanager.prepareOffsets( this, event );
- }
+ if ( $.ui.ddmanager && !o.dropBehaviour ) {
+ $.ui.ddmanager.prepareOffsets( this, event );
}
}
+ }
- this.dragDirection = {
- vertical: this._getDragVerticalDirection(),
- horizontal: this._getDragHorizontalDirection()
- };
-
- //Rearrange
- for ( i = this.items.length - 1; i >= 0; i-- ) {
-
- //Cache variables and intersection, continue if no intersection
- item = this.items[ i ];
- itemElement = item.item[ 0 ];
- intersection = this._intersectsWithPointer( item );
- if ( !intersection ) {
- continue;
- }
-
- // Only put the placeholder inside the current Container, skip all
- // items from other containers. This works because when moving
- // an item from one container to another the
- // currentContainer is switched before the placeholder is moved.
- //
- // Without this, moving items in "sub-sortables" can cause
- // the placeholder to jitter between the outer and inner container.
- if ( item.instance !== this.currentContainer ) {
- continue;
- }
+ this.dragDirection = {
+ vertical: this._getDragVerticalDirection(),
+ horizontal: this._getDragHorizontalDirection()
+ };
- // Cannot intersect with itself
- // no useless actions that have been done before
- // no action if the item moved is the parent of the item checked
- if ( itemElement !== this.currentItem[ 0 ] &&
- this.placeholder[ intersection === 1 ?
- "next" : "prev" ]()[ 0 ] !== itemElement &&
- !$.contains( this.placeholder[ 0 ], itemElement ) &&
- ( this.options.type === "semi-dynamic" ?
- !$.contains( this.element[ 0 ], itemElement ) :
- true
- )
- ) {
+ //Rearrange
+ for ( i = this.items.length - 1; i >= 0; i-- ) {
- this.direction = intersection === 1 ? "down" : "up";
+ //Cache variables and intersection, continue if no intersection
+ item = this.items[ i ];
+ itemElement = item.item[ 0 ];
+ intersection = this._intersectsWithPointer( item );
+ if ( !intersection ) {
+ continue;
+ }
- if ( this.options.tolerance === "pointer" ||
- this._intersectsWithSides( item ) ) {
- this._rearrange( event, item );
- } else {
- break;
- }
+ // Only put the placeholder inside the current Container, skip all
+ // items from other containers. This works because when moving
+ // an item from one container to another the
+ // currentContainer is switched before the placeholder is moved.
+ //
+ // Without this, moving items in "sub-sortables" can cause
+ // the placeholder to jitter between the outer and inner container.
+ if ( item.instance !== this.currentContainer ) {
+ continue;
+ }
- this._trigger( "change", event, this._uiHash() );
+ // Cannot intersect with itself
+ // no useless actions that have been done before
+ // no action if the item moved is the parent of the item checked
+ if ( itemElement !== this.currentItem[ 0 ] &&
+ this.placeholder[ intersection === 1 ?
+ "next" : "prev" ]()[ 0 ] !== itemElement &&
+ !$.contains( this.placeholder[ 0 ], itemElement ) &&
+ ( this.options.type === "semi-dynamic" ?
+ !$.contains( this.element[ 0 ], itemElement ) :
+ true
+ )
+ ) {
+
+ this.direction = intersection === 1 ? "down" : "up";
+
+ if ( this.options.tolerance === "pointer" ||
+ this._intersectsWithSides( item ) ) {
+ this._rearrange( event, item );
+ } else {
break;
}
+
+ this._trigger( "change", event, this._uiHash() );
+ break;
}
}
+ //Post events to containers
+ this._contactContainers( event );
+
//Interconnect with droppables
if ( $.ui.ddmanager ) {
$.ui.ddmanager.drag( this, event );
@@ -16347,10 +16353,14 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
false;
- if ( this.innermostContainer !== null ) {
- this._refreshItemPositions( fast );
+ // This has to be redone because due to the item being moved out/into the offsetParent,
+ // the offsetParent's position will change
+ if ( this.offsetParent && this.helper ) {
+ this.offset.parent = this._getParentOffset();
}
+ this._refreshItemPositions( fast );
+
var i, p;
if ( this.options.custom && this.options.custom.refreshContainers ) {
@@ -16497,8 +16507,6 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
}
- this.innermostContainer = innermostContainer;
-
// If no intersecting containers found, return
if ( !innermostContainer ) {
return;
@@ -17074,7 +17082,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
/*!
- * jQuery UI Spinner 1.13.0
+ * jQuery UI Spinner 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -17104,7 +17112,7 @@ function spinnerModifier( fn ) {
}
$.widget( "ui.spinner", {
- version: "1.13.0",
+ version: "1.13.1",
defaultElement: "<input>",
widgetEventPrefix: "spin",
options: {
@@ -17635,7 +17643,7 @@ var widgetsSpinner = $.ui.spinner;
/*!
- * jQuery UI Tabs 1.13.0
+ * jQuery UI Tabs 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -17654,7 +17662,7 @@ var widgetsSpinner = $.ui.spinner;
$.widget( "ui.tabs", {
- version: "1.13.0",
+ version: "1.13.1",
delay: 300,
options: {
active: null,
@@ -18539,7 +18547,7 @@ var widgetsTabs = $.ui.tabs;
/*!
- * jQuery UI Tooltip 1.13.0
+ * jQuery UI Tooltip 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -18558,7 +18566,7 @@ var widgetsTabs = $.ui.tabs;
$.widget( "ui.tooltip", {
- version: "1.13.0",
+ version: "1.13.1",
options: {
classes: {
"ui-tooltip": "ui-corner-all ui-widget-shadow"
@@ -18871,7 +18879,10 @@ $.widget( "ui.tooltip", {
// tooltips will handle this in destroy.
if ( target[ 0 ] !== this.element[ 0 ] ) {
events.remove = function() {
- this._removeTooltip( this._find( target ).tooltip );
+ var targetElement = this._find( target );
+ if ( targetElement ) {
+ this._removeTooltip( targetElement.tooltip );
+ }
};
}
diff --git a/node_modules/jquery-ui-dist/jquery-ui.min.css b/node_modules/jquery-ui-dist/jquery-ui.min.css
index 12b14d12dd..accf0a8318 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.min.css
+++ b/node_modules/jquery-ui-dist/jquery-ui.min.css
@@ -1,4 +1,4 @@
-/*! jQuery UI - v1.13.0 - 2021-10-07
+/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
diff --git a/node_modules/jquery-ui-dist/jquery-ui.min.js b/node_modules/jquery-ui-dist/jquery-ui.min.js
index 5a2c95bdd5..c1cbc8b452 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.min.js
+++ b/node_modules/jquery-ui-dist/jquery-ui.min.js
@@ -1,6 +1,6 @@
-/*! jQuery UI - v1.13.0 - 2021-10-07
+/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
-!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.0";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],a.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?(n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||a._on(V(e),{remove:"_untrackClassesElement"})}),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+r.eventNamespace,s=s[2];s?a.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}});var s,x,k,o,l,h,c,u,C;V.widget;function D(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function I(t,e){return parseInt(V.css(t,e),10)||0}function T(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,C=V.fn.position,V.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=T(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){if(!u||!u.of)return C.apply(this,arguments);var d,p,f,g,m,t,_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:T(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=D(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),l=a.outerHeight(),e=I(this,"marginLeft"),s=I(this,"marginTop"),n=r+e+I(this,"marginRight")+b.width,o=l+s+I(this,"marginBottom")+b.height,h=V.extend({},m),c=D(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?h.left-=r:"center"===u.my[0]&&(h.left-=r/2),"bottom"===u.my[1]?h.top-=l:"center"===u.my[1]&&(h.top-=l/2),h.left+=c[0],h.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](h,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:l,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-h.left,i=e+p-r,s=g.top-h.top,n=s+f-l,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:h.left,top:h.top,width:r,height:l},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&k(e+i)<p&&(o.horizontal="center"),f<l&&k(s+n)<f&&(o.vertical="middle"),x(k(e),k(i))>x(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0<a&&r<=0?(i=t.left+a+e.collisionWidth-n-s,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?s+n-e.collisionWidth:s:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;e.collisionHeight>n?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,a=t.left-e.collisionPosition.marginLeft,r=a-o,l=a+e.collisionWidth-n-o,h="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,a=-2*e.offset[0];r<0?((s=t.left+h+i+a+e.collisionWidth-n-s)<0||s<k(r))&&(t.left+=h+i+a):0<l&&(0<(o=t.left-e.collisionPosition.marginLeft+h+i+a-o)||k(o)<l)&&(t.left+=h+i+a)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,a=t.top-e.collisionPosition.marginTop,r=a-o,l=a+e.collisionHeight-n-o,h="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,a=-2*e.offset[1];r<0?((s=t.top+h+i+a+e.collisionHeight-n-s)<0||s<k(r))&&(t.top+=h+i+a):0<l&&(0<(o=t.top-e.collisionPosition.marginTop+h+i+a-o)||k(o)<l)&&(t.top+=h+i+a)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo?V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}}):function(t,e,i){return!!V.data(t,i[3])}}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,d=V,p={},e=p.toString,f=/^([\-+])=\s*(\d+\.?\d*)/,g=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],m=d.Color=function(t,e,i,s){return new d.Color.fn.parse(t,e,i,s)},_={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},v={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},b=m.support={},y=d("<p>")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1<y.style.backgroundColor.indexOf("rgba"),w(_,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),d.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){p["[object "+e+"]"]=e.toLowerCase()}),(m.fn=d.extend(m.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=d(n).css(t),t=void 0);var o=this,s=P(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(S(n)||B._default):"array"===s?(w(_.rgba.props,function(t,e){a[e.idx]=M(n[e.idx],e)}),this):"object"===s?(w(_,n instanceof m?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;w(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=M(n[t],e,!0)}),o[s]&&d.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=m(t),o=!0,a=this;return w(_,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],w(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return w(_,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var e=(h=m(t))._space(),i=_[e],t=0===this.alpha()?m("transparent"):this,r=t[i.cache]||i.to(t._rgba),l=r.slice(),h=h[i.cache];return w(i.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=v[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2<e?1:0});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=d.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),t=e&&e<3?Math.round(100*t)+"%":t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+d.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}})).parse.prototype=m.fn,_.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/255,i=t[1]/255,s=t[2]/255,n=t[3],o=Math.max(e,i,s),a=Math.min(e,i,s),r=o-a,l=o+a,t=.5*l,i=a===o?0:e===o?60*(i-s)/r+360:i===o?60*(s-e)/r+120:60*(e-i)/r+240,l=0==r?0:t<=.5?r/l:r/(2-l);return[Math.round(i)%360,l,t,null==n?1:n]},_.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],t=t[3],i=s<=.5?s*(1+i):s+i-s*i,s=2*s-i;return[Math.round(255*H(s,i,e+1/3)),Math.round(255*H(s,i,e)),Math.round(255*H(s,i,e-1/3)),t]},w(_,function(l,t){var e=t.props,o=t.cache,a=t.to,r=t.from;m.fn[l]=function(t){if(a&&!this[o]&&(this[o]=a(this._rgba)),void 0===t)return this[o].slice();var i=P(t),s="array"===i||"object"===i?t:arguments,n=this[o].slice();return w(e,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=M(t,e)}),r?((t=m(r(n)))[o]=n,t):m(n)},w(e,function(a,r){m.fn[a]||(m.fn[a]=function(t){var e,i=P(t),s="alpha"===a?this._hsla?"hsla":"rgba":l,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(i=P(t=t.call(this,o))),null==t&&r.empty?this:("string"===i&&(e=f.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),(m.hook=function(t){t=t.split(" ");w(t,function(t,o){d.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==P(e)||(i=S(e)))){if(e=m(i||e),!b.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=d.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},d.fx.step[o]=function(t){t.colorInit||(t.start=m(t.elem,o),t.end=m(t.end),t.colorInit=!0),d.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})})("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),d.cssHooks.borderColor={expand:function(i){var s={};return w(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}};var z,A,O,N,E,W,F,L,R,Y,B=d.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},j="ui-effects-",q="ui-effects-style",K="ui-effects-animated";function U(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}function X(t,e,i,s){return t={effect:t=V.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(s=e,i=null,e={}),"number"!=typeof e&&!V.fx.speeds[e]||(s=i,i=e,e={}),"function"==typeof i&&(s=i,i=null),e&&V.extend(t,e),i=i||e.duration,t.duration=V.fx.off?0:"number"==typeof i?i:i in V.fx.speeds?V.fx.speeds[i]:V.fx.speeds._default,t.complete=s||e.complete,t}function $(t){return!t||"number"==typeof t||V.fx.speeds[t]||("string"==typeof t&&!V.effects.effect[t]||("function"==typeof t||"object"==typeof t&&!t.effect))}function G(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}V.effects={effect:{}},N=["add","remove","toggle"],E={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},V.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){V.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(d.style(t.elem,e,t.end),t.setAttr=!0)}}),V.fn.addBack||(V.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),V.effects.animateClass=function(n,t,e,i){var o=V.speed(t,e,i);return this.queue(function(){var i=V(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:V(this),start:U(this)}}),s=function(){V.each(N,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=U(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(E[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(O=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):O.apply(this,arguments)}),removeClass:(A=V.fn.removeClass,function(t,e,i,s){return 1<arguments.length?V.effects.animateClass.call(this,{remove:t},e,i,s):A.apply(this,arguments)}),toggleClass:(z=V.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?V.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):z.apply(this,arguments):V.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return V.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),V.expr&&V.expr.pseudos&&V.expr.pseudos.animated&&(V.expr.pseudos.animated=(W=V.expr.pseudos.animated,function(t){return!!V(t).data(K)||W(t)})),!1!==V.uiBackCompat&&V.extend(V.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(j+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(j+e[s]),t.css(e[s],i))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=V("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.0",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(q,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(q)||"",t.removeData(q)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=V("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),V.fn.extend({effect:function(){function t(t){var e=V(this),i=V.effects.mode(e,r)||o;e.data(K,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||V.effects.saveStyle(e),"function"==typeof t&&t()}var s=X.apply(this,arguments),n=V.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,l=[];return V.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(h):this.queue(i,t).queue(i,h);function h(t){var e=V(this);function i(){"function"==typeof a&&a.call(e[0]),"function"==typeof t&&t()}s.mode=l.shift(),!1===V.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(K),V.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:(R=V.fn.show,function(t){if($(t))return R.apply(this,arguments);t=X.apply(this,arguments);return t.mode="show",this.effect.call(this,t)}),hide:(L=V.fn.hide,function(t){if($(t))return L.apply(this,arguments);t=X.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)}),toggle:(F=V.fn.toggle,function(t){if($(t)||"boolean"==typeof t)return F.apply(this,arguments);t=X.apply(this,arguments);return t.mode="toggle",this.effect.call(this,t)}),cssUnit:function(t){var i=this.css(t),s=[];return V.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):G(this.css("clip"),this)},transfer:function(t,e){var i=V(this),s=V(t.to),n="fixed"===s.css("position"),o=V("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,o=s.offset(),o={top:o.top-a,left:o.left-r,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),l=V("<div class='ui-effects-transfer'></div>");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g<c;g++)(i={})[p]=(f?"-=":"+=")+h,n.animate(i,u,d).animate(s,u,d),h=a?2*h:h/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+h,n.animate(i,u,d)),n.queue(e),V.effects.unshift(n,t,1+o)}),V.effects.define("clip","hide",function(t,e){var i={},s=V(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},V.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("drop","hide",function(t,e){var i=V(this),s="show"===t.mode,n=t.direction||"left",o="up"===n||"down"===n?"top":"left",a="up"===n||"left"===n?"-=":"+=",r="+="==a?"-=":"+=",l={opacity:0};V.effects.createPlaceholder(i),n=t.distance||i["top"==o?"outerHeight":"outerWidth"](!0)/2,l[o]=a+n,s&&(i.css(l),l[o]=r+n,l.opacity=1),i.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=l,c=V(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/h),f=Math.ceil(c.outerHeight()/l),g=[];function m(){g.push(this),g.length===l*h&&(c.css({visibility:"visible"}),V(g).remove(),e())}for(i=0;i<l;i++)for(o=d.top+i*f,r=i-(l-1)/2,s=0;s<h;s++)n=d.left+s*p,a=s-(h-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l<o;l++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),V.effects.unshift(i,s,1+o)}),V.effects.define("shake",function(t,e){var i=1,s=V(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,l=Math.round(t.duration/r),h="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},n=s.queue().length;for(V.effects.createPlaceholder(s),u[h]=(c?"-=":"+=")+o,d[h]=(c?"+=":"-=")+2*o,p[h]=(c?"-=":"+=")+2*o,s.animate(u,l,t.easing);i<a;i++)s.animate(d,l,t.easing).animate(p,l,t.easing);s.animate(d,l,t.easing).animate(u,l/2,t.easing).queue(e),V.effects.unshift(s,n,1+r)}),V.effects.define("slide","show",function(t,e){var i,s,n=V(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r,c=t.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};V.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[l],u[l]=(h?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),y=!1!==V.uiBackCompat?V.effects.define("transfer",function(t,e){V(this).transfer(t,e)}):y;V.ui.focusable=function(t,e){var i,s,n,o,a=t.nodeName.toLowerCase();return"area"===a?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=V("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(a)?(n=!t.disabled)&&(o=V(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===a&&t.href||e,n&&V(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(V(t)))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}});var Q,J;V.ui.focusable,V.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):V(this[0].form)},V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};V.expr.pseudos||(V.expr.pseudos=V.expr[":"]),V.uniqueSort||(V.uniqueSort=V.unique),V.escapeSelector||(Q=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,J=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},V.escapeSelector=function(t){return(t+"").replace(Q,J)}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});var Z;V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+V.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(Z=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++Z)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}}),V.widget("ui.accordion",{version:"1.13.0",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=h&&c.down||c,h=function(){a._toggleComplete(e)};return n=(n="string"==typeof u?u:n)||u.easing||c.easing,o=(o="number"==typeof u?u:o)||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:h,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===l&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,h):t.animate(this.showProps,o,n,h)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),V.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},V.widget("ui.menu",{version:"1.13.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}});V.widget("ui.autocomplete",{version:"1.13.0",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});i=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:i})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(i.value),(i=e.item.attr("aria-label")||i.value)&&String.prototype.trim.call(i).length&&(this.liveRegion.children().hide(),V("<div>").text(i).appendTo(this.liveRegion))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),V("<div>").text(t).appendTo(this.liveRegion))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.0",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.0",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.0",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,t="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),t?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.trigger("blur"))},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),V.fn.button=(et=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==t&&"radio"!==t?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),e="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",t=V.data(this,"ui-"+e);t?(t.option(i||{}),t._init&&t._init()):"button"!=e?V(this).checkboxradio(V.extend({icon:!1},i)):et.call(V(this),i)})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var it;V.ui.button;function st(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=nt(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function nt(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,ot)}function ot(){V.datepicker._isDisabledDatepicker((it.inline?it.dpDiv.parent():it.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function at(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}V.extend(V.ui,{datepicker:{version:"1.13.0"}}),V.extend(st.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return at(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?nt(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),at(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),it===s&&(it=null,this._curInst=null))},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),e=this._getMinMaxDate(o,"min"),i=this._getMinMaxDate(o,"max"),at(o.settings,s),null!==e&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,e)),null!==i&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,i)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,n),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(e=V.datepicker._get(s,"onSelect"))?(i=V.datepicker._formatDate(s),e.apply(s.input?s.input[0]:null,[i,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return e=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0])),!1!==(i=(s=V.datepicker._get(n,"beforeShow"))?s.apply(t,[t,n]):{})&&(at(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),s={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),s=V.datepicker._checkOffset(n,s,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),n.inline||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,(it=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&ot.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),l=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>l&&n<l?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(s,"showAnim"),i=this._get(s,"duration"),t=function(){V.datepicker._tidyDialog(s)},V.effects&&(V.effects.effect[e]||V.effects[e])?s.dpDiv.hide(e,V.datepicker._get(s,"showOptions"),i,t):s.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,t),e||t(),this._datepickerShowing=!1,(t=this._get(s,"onClose"))&&t.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI&&(V.unblockUI(),V("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(e=V(t.target),t=V.datepicker._getInst(e[0]),(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)&&(!e.hasClass(V.datepicker.markerClassName)||V.datepicker._curInst===t)||V.datepicker._hideDatepicker())},_adjustDate:function(t,e,i){var s=V(t),t=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(t,e,i),this._updateDatepicker(t))},_gotoToday:function(t){var e=V(t),i=this._getInst(e[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(t=new Date,i.selectedDay=t.getDate(),i.drawMonth=i.selectedMonth=t.getMonth(),i.drawYear=i.selectedYear=t.getFullYear()),this._notifyChange(i),this._adjustDate(e)},_selectMonthYear:function(t,e,i){var s=V(t),t=this._getInst(s[0]);t["selected"+("M"===i?"Month":"Year")]=t["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(t),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i=V(t),t=this._getInst(i[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),t=this.formatDate(e,i,this._getFormatConfig(t)),V(document).find(s).val(t))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o,a=0,r=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,r="string"!=typeof r?r:(new Date).getFullYear()%100+parseInt(r,10),l=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,h=(t?t.dayNames:null)||this._defaults.dayNames,c=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,u=(t?t.monthNames:null)||this._defaults.monthNames,d=-1,p=-1,f=-1,g=-1,m=!1,_=function(t){t=w+1<e.length&&e.charAt(w+1)===t;return t&&w++,t},v=function(t){var e=_(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(a).match(e);if(!e)throw"Missing number at position "+a;return a+=e[0].length,parseInt(e[0],10)},b=function(t,e,i){var s=-1,e=V.map(_(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(e,function(t,e){var i=e[1];if(n.substr(a,i.length).toLowerCase()===i.toLowerCase())return s=e[0],a+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+a},y=function(){if(n.charAt(a)!==e.charAt(w))throw"Unexpected literal at position "+a;a++},w=0;w<e.length;w++)if(m)"'"!==e.charAt(w)||_("'")?y():m=!1;else switch(e.charAt(w)){case"d":f=v("d");break;case"D":b("D",l,h);break;case"o":g=v("o");break;case"m":p=v("m");break;case"M":p=b("M",c,u);break;case"y":d=v("y");break;case"@":d=(o=new Date(v("@"))).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"!":d=(o=new Date((v("!")-this._ticksTo1970)/1e4)).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"'":_("'")?y():m=!0;break;default:y()}if(a<n.length&&(s=n.substr(a),!/^\s+/.test(s)))throw"Extra/unparsed characters found in date: "+s;if(-1===d?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=r?0:-100)),-1<g)for(p=1,f=g;;){if(f<=(i=this._getDaysInMonth(d,p-1)))break;p++,f-=i}if((o=this._daylightSavingAdjust(new Date(d,p-1,f))).getFullYear()!==d||o.getMonth()+1!==p||o.getDate()!==f)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,h=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),l,h);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,t=null==t||""===t?e:"string"==typeof t?function(t){try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(t=t&&"Invalid Date"===t.toString()?e:t)&&(t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)),this._daylightSavingAdjust(t)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,x,k,C,D,I,T,P,M,S,H,z,A=new Date,O=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth(),A.getDate())),N=this._get(t,"isRTL"),E=this._get(t,"showButtonPanel"),W=this._get(t,"hideIfNoPrevNext"),F=this._get(t,"navigationAsDateFormat"),L=this._getNumberOfMonths(t),R=this._get(t,"showCurrentAtPos"),A=this._get(t,"stepMonths"),Y=1!==L[0]||1!==L[1],B=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),j=this._getMinMaxDate(t,"min"),q=this._getMinMaxDate(t,"max"),K=t.drawMonth-R,U=t.drawYear;if(K<0&&(K+=12,U--),q)for(e=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth()-L[0]*L[1]+1,q.getDate())),e=j&&e<j?j:e;this._daylightSavingAdjust(new Date(U,K,1))>e;)--K<0&&(K=11,U--);for(t.drawMonth=K,t.drawYear=U,R=this._get(t,"prevText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K-A,1)),this._getFormatConfig(t)):R,i=this._canAdjustMonth(t,-1,U,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML,R=this._get(t,"nextText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K+A,1)),this._getFormatConfig(t)):R,s=this._canAdjustMonth(t,1,U,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:R}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML,A=this._get(t,"currentText"),W=this._get(t,"gotoCurrent")&&t.currentDay?B:O,A=F?this.formatDate(A,W,this._getFormatConfig(t)):A,R="",t.inline||(R=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),F="",E&&(F=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(N?R:"").append(this._isInRange(t,W)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(A):"").append(N?"":R)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),a=this._get(t,"dayNames"),r=this._get(t,"dayNamesMin"),l=this._get(t,"monthNames"),h=this._get(t,"monthNamesShort"),c=this._get(t,"beforeShowDay"),u=this._get(t,"showOtherMonths"),d=this._get(t,"selectOtherMonths"),p=this._getDefaultDate(t),f="",m=0;m<L[0];m++){for(_="",this.maxRows=4,v=0;v<L[1];v++){if(b=this._daylightSavingAdjust(new Date(U,K,t.selectedDay)),y=" ui-corner-all",w="",Y){if(w+="<div class='ui-datepicker-group",1<L[1])switch(v){case 0:w+=" ui-datepicker-group-first",y=" ui-corner-"+(N?"right":"left");break;case L[1]-1:w+=" ui-datepicker-group-last",y=" ui-corner-"+(N?"left":"right");break;default:w+=" ui-datepicker-group-middle",y=""}w+="'>"}for(w+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+y+"'>"+(/all|left/.test(y)&&0===m?N?s:i:"")+(/all|right/.test(y)&&0===m?N?i:s:"")+this._generateMonthYearHeader(t,K,U,j,q,0<m||0<v,l,h)+"</div><table class='ui-datepicker-calendar'><thead><tr>",x=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",g=0;g<7;g++)x+="<th scope='col'"+(5<=(g+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[k=(g+n)%7]+"'>"+r[k]+"</span></th>";for(w+=x+"</tr></thead><tbody>",D=this._getDaysInMonth(U,K),U===t.selectedYear&&K===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,D)),C=(this._getFirstDayOfMonth(U,K)-n+7)%7,D=Math.ceil((C+D)/7),I=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=I,T=this._daylightSavingAdjust(new Date(U,K,1-C)),P=0;P<I;P++){for(w+="<tr>",M=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(T)+"</td>":"",g=0;g<7;g++)S=c?c.apply(t.input?t.input[0]:null,[T]):[!0,""],z=(H=T.getMonth()!==K)&&!d||!S[0]||j&&T<j||q&&q<T,M+="<td class='"+(5<=(g+n+6)%7?" ui-datepicker-week-end":"")+(H?" ui-datepicker-other-month":"")+(T.getTime()===b.getTime()&&K===t.selectedMonth&&t._keyEvent||p.getTime()===T.getTime()&&p.getTime()===b.getTime()?" "+this._dayOverClass:"")+(z?" "+this._unselectableClass+" ui-state-disabled":"")+(H&&!u?"":" "+S[1]+(T.getTime()===B.getTime()?" "+this._currentClass:"")+(T.getTime()===O.getTime()?" ui-datepicker-today":""))+"'"+(H&&!u||!S[2]?"":" title='"+S[2].replace(/'/g,"&#39;")+"'")+(z?"":" data-handler='selectDay' data-event='click' data-month='"+T.getMonth()+"' data-year='"+T.getFullYear()+"'")+">"+(H&&!u?"&#xa0;":z?"<span class='ui-state-default'>"+T.getDate()+"</span>":"<a class='ui-state-default"+(T.getTime()===O.getTime()?" ui-state-highlight":"")+(T.getTime()===B.getTime()?" ui-state-active":"")+(H?" ui-priority-secondary":"")+"' href='#' aria-current='"+(T.getTime()===B.getTime()?"true":"false")+"' data-date='"+T.getDate()+"'>"+T.getDate()+"</a>")+"</td>",T.setDate(T.getDate()+1),T=this._daylightSavingAdjust(T);w+=M+"</tr>"}11<++K&&(K=0,U++),_+=w+="</tbody></table>"+(Y?"</div>"+(0<L[0]&&v===L[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=s.getMonth())&&(!h||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e<i?i:e;return t&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),n=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(t,n)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=null,o=null,a=this._get(t,"yearRange");return a&&(t=a.split(":"),a=(new Date).getFullYear(),n=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(n+=a),t[1].match(/[+\-].*/)&&(o+=a)),(!i||e.getTime()>=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.0";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.0",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&V(t).trigger("blur")};V.widget("ui.draggable",V.ui.mouse,{version:"1.13.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=V(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,V(n).width()-this.helperProportions.width-this.margins.left,(V(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,l,h,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)l=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(h=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||l+p<f||_<h-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(h-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(l-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(h-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(l-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}});V.ui.draggable;V.widget("ui.resizable",V.ui.mouse,{version:"1.13.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===V(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-h?(e.size.height=p,e.position.top=o.top-u):(p=h-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-l?(e.size.width=d,e.position.left=o.left-c):(d=l-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});V.ui.resizable;V.widget("ui.dialog",{version:"1.13.0",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V.ui.safeBlur(V.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.13.0",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,l=e.offset.left,h=e.offset.top,c=l+e.proportions().width,u=h+e.proportions().height;switch(i){case"fit":return l<=n&&a<=c&&h<=o&&r<=u;case"intersect":return l<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&h<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return lt(s.pageY,h,e.proportions().height)&&lt(s.pageX,l,e.proportions().width);case"touch":return(h<=o&&o<=u||h<=r&&r<=u||o<h&&u<r)&&(l<=n&&n<=c||l<=a&&a<=c||n<l&&c<a);default:return!1}},!(V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(i=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s)),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o)))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}})!==V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.progressbar",{version:"1.13.0",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return l<a&&(t=l,l=a,a=t),h<r&&(t=h,h=r,r=t),this.helper.css({left:a,top:r,width:l-a,height:h-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>l||i.right<a||i.top>h||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<l&&i.top>r&&i.bottom<h),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.13.0",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.0",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===l.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],t=this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,t=t-i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i)&&(!(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;if(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),this._contactContainers(t),null!==this.innermostContainer)for(o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t)),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,h="x"===this.options.axis||r<s+h&&s+h<l,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?h&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this.dragDirection.vertical,t=this.dragDirection.horizontal;return this.floating&&t?"right"===t&&i||"left"===t&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function l(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(l);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,l,h=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],l=(a=c[e][i=0]).length;i<l;i++)(r=V(a[i])).data(this.widgetName+"-item",o),h.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),null!==this.innermostContainer&&this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(this.innermostContainer=c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)<i&&(i=Math.abs(t[h]-a),s=this.items[e],this.direction=r?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&V.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],e=V(i.containment).offset(),i="hidden"!==V(t).css("overflow"),this.containment=[e.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function ht(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.13.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===V.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===V.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:ht(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:ht(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:ht(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:ht(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:ht(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());ht(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.0",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(V.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.0",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){this._removeTooltip(this._find(e).tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file
+!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.1";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],a.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?(function(){var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})}(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+r.eventNamespace,s=s[2];s?a.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}});var s,x,k,o,l,h,c,u,C;V.widget;function D(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function I(t,e){return parseInt(V.css(t,e),10)||0}function T(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,C=V.fn.position,V.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=T(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){if(!u||!u.of)return C.apply(this,arguments);var d,p,f,g,m,t,_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:T(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=D(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),l=a.outerHeight(),e=I(this,"marginLeft"),s=I(this,"marginTop"),n=r+e+I(this,"marginRight")+b.width,o=l+s+I(this,"marginBottom")+b.height,h=V.extend({},m),c=D(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?h.left-=r:"center"===u.my[0]&&(h.left-=r/2),"bottom"===u.my[1]?h.top-=l:"center"===u.my[1]&&(h.top-=l/2),h.left+=c[0],h.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](h,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:l,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-h.left,i=e+p-r,s=g.top-h.top,n=s+f-l,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:h.left,top:h.top,width:r,height:l},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&k(e+i)<p&&(o.horizontal="center"),f<l&&k(s+n)<f&&(o.vertical="middle"),x(k(e),k(i))>x(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0<a&&r<=0?(i=t.left+a+e.collisionWidth-n-s,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?s+n-e.collisionWidth:s:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;e.collisionHeight>n?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,a=t.left-e.collisionPosition.marginLeft,r=a-o,l=a+e.collisionWidth-n-o,h="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,a=-2*e.offset[0];r<0?((s=t.left+h+i+a+e.collisionWidth-n-s)<0||s<k(r))&&(t.left+=h+i+a):0<l&&(0<(o=t.left-e.collisionPosition.marginLeft+h+i+a-o)||k(o)<l)&&(t.left+=h+i+a)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,a=t.top-e.collisionPosition.marginTop,r=a-o,l=a+e.collisionHeight-n-o,h="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,a=-2*e.offset[1];r<0?((s=t.top+h+i+a+e.collisionHeight-n-s)<0||s<k(r))&&(t.top+=h+i+a):0<l&&(0<(o=t.top-e.collisionPosition.marginTop+h+i+a-o)||k(o)<l)&&(t.top+=h+i+a)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo?V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}}):function(t,e,i){return!!V.data(t,i[3])}}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,d=V,p={},e=p.toString,f=/^([\-+])=\s*(\d+\.?\d*)/,g=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],m=d.Color=function(t,e,i,s){return new d.Color.fn.parse(t,e,i,s)},_={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},v={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},b=m.support={},y=d("<p>")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1<y.style.backgroundColor.indexOf("rgba"),w(_,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),d.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){p["[object "+e+"]"]=e.toLowerCase()}),(m.fn=d.extend(m.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=d(n).css(t),t=void 0);var o=this,s=P(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(S(n)||B._default):"array"===s?(w(_.rgba.props,function(t,e){a[e.idx]=M(n[e.idx],e)}),this):"object"===s?(w(_,n instanceof m?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;w(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=M(n[t],e,!0)}),o[s]&&d.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=m(t),o=!0,a=this;return w(_,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],w(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return w(_,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var e=(h=m(t))._space(),i=_[e],t=0===this.alpha()?m("transparent"):this,r=t[i.cache]||i.to(t._rgba),l=r.slice(),h=h[i.cache];return w(i.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=v[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2<e?1:0});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=d.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),t=e&&e<3?Math.round(100*t)+"%":t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+d.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}})).parse.prototype=m.fn,_.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/255,i=t[1]/255,s=t[2]/255,n=t[3],o=Math.max(e,i,s),a=Math.min(e,i,s),r=o-a,l=o+a,t=.5*l,i=a===o?0:e===o?60*(i-s)/r+360:i===o?60*(s-e)/r+120:60*(e-i)/r+240,l=0==r?0:t<=.5?r/l:r/(2-l);return[Math.round(i)%360,l,t,null==n?1:n]},_.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],t=t[3],i=s<=.5?s*(1+i):s+i-s*i,s=2*s-i;return[Math.round(255*H(s,i,e+1/3)),Math.round(255*H(s,i,e)),Math.round(255*H(s,i,e-1/3)),t]},w(_,function(l,t){var e=t.props,o=t.cache,a=t.to,r=t.from;m.fn[l]=function(t){if(a&&!this[o]&&(this[o]=a(this._rgba)),void 0===t)return this[o].slice();var i=P(t),s="array"===i||"object"===i?t:arguments,n=this[o].slice();return w(e,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=M(t,e)}),r?((t=m(r(n)))[o]=n,t):m(n)},w(e,function(a,r){m.fn[a]||(m.fn[a]=function(t){var e,i=P(t),s="alpha"===a?this._hsla?"hsla":"rgba":l,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(i=P(t=t.call(this,o))),null==t&&r.empty?this:("string"===i&&(e=f.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),(m.hook=function(t){t=t.split(" ");w(t,function(t,o){d.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==P(e)||(i=S(e)))){if(e=m(i||e),!b.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=d.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},d.fx.step[o]=function(t){t.colorInit||(t.start=m(t.elem,o),t.end=m(t.end),t.colorInit=!0),d.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})})("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),d.cssHooks.borderColor={expand:function(i){var s={};return w(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}};var z,A,O,N,E,W,F,L,R,Y,B=d.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},j="ui-effects-",q="ui-effects-style",K="ui-effects-animated";function U(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}function X(t,e,i,s){return t={effect:t=V.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(s=e,i=null,e={}),"number"!=typeof e&&!V.fx.speeds[e]||(s=i,i=e,e={}),"function"==typeof i&&(s=i,i=null),e&&V.extend(t,e),i=i||e.duration,t.duration=V.fx.off?0:"number"==typeof i?i:i in V.fx.speeds?V.fx.speeds[i]:V.fx.speeds._default,t.complete=s||e.complete,t}function $(t){return!t||"number"==typeof t||V.fx.speeds[t]||("string"==typeof t&&!V.effects.effect[t]||("function"==typeof t||"object"==typeof t&&!t.effect))}function G(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}V.effects={effect:{}},N=["add","remove","toggle"],E={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},V.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){V.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(d.style(t.elem,e,t.end),t.setAttr=!0)}}),V.fn.addBack||(V.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),V.effects.animateClass=function(n,t,e,i){var o=V.speed(t,e,i);return this.queue(function(){var i=V(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:V(this),start:U(this)}}),s=function(){V.each(N,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=U(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(E[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(O=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):O.apply(this,arguments)}),removeClass:(A=V.fn.removeClass,function(t,e,i,s){return 1<arguments.length?V.effects.animateClass.call(this,{remove:t},e,i,s):A.apply(this,arguments)}),toggleClass:(z=V.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?V.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):z.apply(this,arguments):V.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return V.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),V.expr&&V.expr.pseudos&&V.expr.pseudos.animated&&(V.expr.pseudos.animated=(W=V.expr.pseudos.animated,function(t){return!!V(t).data(K)||W(t)})),!1!==V.uiBackCompat&&V.extend(V.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(j+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(j+e[s]),t.css(e[s],i))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=V("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(q,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(q)||"",t.removeData(q)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=V("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),V.fn.extend({effect:function(){function t(t){var e=V(this),i=V.effects.mode(e,r)||o;e.data(K,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||V.effects.saveStyle(e),"function"==typeof t&&t()}var s=X.apply(this,arguments),n=V.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,l=[];return V.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(h):this.queue(i,t).queue(i,h);function h(t){var e=V(this);function i(){"function"==typeof a&&a.call(e[0]),"function"==typeof t&&t()}s.mode=l.shift(),!1===V.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(K),V.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:(R=V.fn.show,function(t){if($(t))return R.apply(this,arguments);t=X.apply(this,arguments);return t.mode="show",this.effect.call(this,t)}),hide:(L=V.fn.hide,function(t){if($(t))return L.apply(this,arguments);t=X.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)}),toggle:(F=V.fn.toggle,function(t){if($(t)||"boolean"==typeof t)return F.apply(this,arguments);t=X.apply(this,arguments);return t.mode="toggle",this.effect.call(this,t)}),cssUnit:function(t){var i=this.css(t),s=[];return V.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):G(this.css("clip"),this)},transfer:function(t,e){var i=V(this),s=V(t.to),n="fixed"===s.css("position"),o=V("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,o=s.offset(),o={top:o.top-a,left:o.left-r,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),l=V("<div class='ui-effects-transfer'></div>");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g<c;g++)(i={})[p]=(f?"-=":"+=")+h,n.animate(i,u,d).animate(s,u,d),h=a?2*h:h/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+h,n.animate(i,u,d)),n.queue(e),V.effects.unshift(n,t,1+o)}),V.effects.define("clip","hide",function(t,e){var i={},s=V(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},V.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("drop","hide",function(t,e){var i=V(this),s="show"===t.mode,n=t.direction||"left",o="up"===n||"down"===n?"top":"left",a="up"===n||"left"===n?"-=":"+=",r="+="==a?"-=":"+=",l={opacity:0};V.effects.createPlaceholder(i),n=t.distance||i["top"==o?"outerHeight":"outerWidth"](!0)/2,l[o]=a+n,s&&(i.css(l),l[o]=r+n,l.opacity=1),i.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=l,c=V(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/h),f=Math.ceil(c.outerHeight()/l),g=[];function m(){g.push(this),g.length===l*h&&(c.css({visibility:"visible"}),V(g).remove(),e())}for(i=0;i<l;i++)for(o=d.top+i*f,r=i-(l-1)/2,s=0;s<h;s++)n=d.left+s*p,a=s-(h-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l<o;l++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),V.effects.unshift(i,s,1+o)}),V.effects.define("shake",function(t,e){var i=1,s=V(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,l=Math.round(t.duration/r),h="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},n=s.queue().length;for(V.effects.createPlaceholder(s),u[h]=(c?"-=":"+=")+o,d[h]=(c?"+=":"-=")+2*o,p[h]=(c?"-=":"+=")+2*o,s.animate(u,l,t.easing);i<a;i++)s.animate(d,l,t.easing).animate(p,l,t.easing);s.animate(d,l,t.easing).animate(u,l/2,t.easing).queue(e),V.effects.unshift(s,n,1+r)}),V.effects.define("slide","show",function(t,e){var i,s,n=V(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r,c=t.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};V.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[l],u[l]=(h?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),y=!1!==V.uiBackCompat?V.effects.define("transfer",function(t,e){V(this).transfer(t,e)}):y;V.ui.focusable=function(t,e){var i,s,n,o,a=t.nodeName.toLowerCase();return"area"===a?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=V("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(a)?(n=!t.disabled)&&(o=V(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===a&&t.href||e,n&&V(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(V(t)))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}});var Q,J;V.ui.focusable,V.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):V(this[0].form)},V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};V.expr.pseudos||(V.expr.pseudos=V.expr[":"]),V.uniqueSort||(V.uniqueSort=V.unique),V.escapeSelector||(Q=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,J=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},V.escapeSelector=function(t){return(t+"").replace(Q,J)}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});var Z;V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+V.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(Z=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++Z)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}}),V.widget("ui.accordion",{version:"1.13.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=h&&c.down||c,h=function(){a._toggleComplete(e)};return n=(n="string"==typeof u?u:n)||u.easing||c.easing,o=(o="number"==typeof u?u:o)||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:h,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===l&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,h):t.animate(this.showProps,o,n,h)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),V.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},V.widget("ui.menu",{version:"1.13.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}});V.widget("ui.autocomplete",{version:"1.13.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,t="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),t?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.trigger("blur"))},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),V.fn.button=(et=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==t&&"radio"!==t?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),e="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",t=V.data(this,"ui-"+e);t?(t.option(i||{}),t._init&&t._init()):"button"!=e?V(this).checkboxradio(V.extend({icon:!1},i)):et.call(V(this),i)})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var it;V.ui.button;function st(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=nt(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function nt(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,ot)}function ot(){V.datepicker._isDisabledDatepicker((it.inline?it.dpDiv.parent():it.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function at(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}V.extend(V.ui,{datepicker:{version:"1.13.1"}}),V.extend(st.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return at(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?nt(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),at(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),it===s&&(it=null,this._curInst=null))},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),e=this._getMinMaxDate(o,"min"),i=this._getMinMaxDate(o,"max"),at(o.settings,s),null!==e&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,e)),null!==i&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,i)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,n),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(e=V.datepicker._get(s,"onSelect"))?(i=V.datepicker._formatDate(s),e.apply(s.input?s.input[0]:null,[i,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return e=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0])),!1!==(i=(s=V.datepicker._get(n,"beforeShow"))?s.apply(t,[t,n]):{})&&(at(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),s={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),s=V.datepicker._checkOffset(n,s,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),n.inline||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,(it=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&ot.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),l=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>l&&n<l?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(s,"showAnim"),i=this._get(s,"duration"),t=function(){V.datepicker._tidyDialog(s)},V.effects&&(V.effects.effect[e]||V.effects[e])?s.dpDiv.hide(e,V.datepicker._get(s,"showOptions"),i,t):s.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,t),e||t(),this._datepickerShowing=!1,(t=this._get(s,"onClose"))&&t.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI&&(V.unblockUI(),V("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(e=V(t.target),t=V.datepicker._getInst(e[0]),(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)&&(!e.hasClass(V.datepicker.markerClassName)||V.datepicker._curInst===t)||V.datepicker._hideDatepicker())},_adjustDate:function(t,e,i){var s=V(t),t=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(t,e,i),this._updateDatepicker(t))},_gotoToday:function(t){var e=V(t),i=this._getInst(e[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(t=new Date,i.selectedDay=t.getDate(),i.drawMonth=i.selectedMonth=t.getMonth(),i.drawYear=i.selectedYear=t.getFullYear()),this._notifyChange(i),this._adjustDate(e)},_selectMonthYear:function(t,e,i){var s=V(t),t=this._getInst(s[0]);t["selected"+("M"===i?"Month":"Year")]=t["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(t),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i=V(t),t=this._getInst(i[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),t=this.formatDate(e,i,this._getFormatConfig(t)),V(document).find(s).val(t))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o,a=0,r=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,r="string"!=typeof r?r:(new Date).getFullYear()%100+parseInt(r,10),l=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,h=(t?t.dayNames:null)||this._defaults.dayNames,c=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,u=(t?t.monthNames:null)||this._defaults.monthNames,d=-1,p=-1,f=-1,g=-1,m=!1,_=function(t){t=w+1<e.length&&e.charAt(w+1)===t;return t&&w++,t},v=function(t){var e=_(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(a).match(e);if(!e)throw"Missing number at position "+a;return a+=e[0].length,parseInt(e[0],10)},b=function(t,e,i){var s=-1,e=V.map(_(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(e,function(t,e){var i=e[1];if(n.substr(a,i.length).toLowerCase()===i.toLowerCase())return s=e[0],a+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+a},y=function(){if(n.charAt(a)!==e.charAt(w))throw"Unexpected literal at position "+a;a++},w=0;w<e.length;w++)if(m)"'"!==e.charAt(w)||_("'")?y():m=!1;else switch(e.charAt(w)){case"d":f=v("d");break;case"D":b("D",l,h);break;case"o":g=v("o");break;case"m":p=v("m");break;case"M":p=b("M",c,u);break;case"y":d=v("y");break;case"@":d=(o=new Date(v("@"))).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"!":d=(o=new Date((v("!")-this._ticksTo1970)/1e4)).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"'":_("'")?y():m=!0;break;default:y()}if(a<n.length&&(s=n.substr(a),!/^\s+/.test(s)))throw"Extra/unparsed characters found in date: "+s;if(-1===d?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=r?0:-100)),-1<g)for(p=1,f=g;;){if(f<=(i=this._getDaysInMonth(d,p-1)))break;p++,f-=i}if((o=this._daylightSavingAdjust(new Date(d,p-1,f))).getFullYear()!==d||o.getMonth()+1!==p||o.getDate()!==f)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,h=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),l,h);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,t=null==t||""===t?e:"string"==typeof t?function(t){try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(t=t&&"Invalid Date"===t.toString()?e:t)&&(t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)),this._daylightSavingAdjust(t)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,x,k,C,D,I,T,P,M,S,H,z,A=new Date,O=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth(),A.getDate())),N=this._get(t,"isRTL"),E=this._get(t,"showButtonPanel"),W=this._get(t,"hideIfNoPrevNext"),F=this._get(t,"navigationAsDateFormat"),L=this._getNumberOfMonths(t),R=this._get(t,"showCurrentAtPos"),A=this._get(t,"stepMonths"),Y=1!==L[0]||1!==L[1],B=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),j=this._getMinMaxDate(t,"min"),q=this._getMinMaxDate(t,"max"),K=t.drawMonth-R,U=t.drawYear;if(K<0&&(K+=12,U--),q)for(e=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth()-L[0]*L[1]+1,q.getDate())),e=j&&e<j?j:e;this._daylightSavingAdjust(new Date(U,K,1))>e;)--K<0&&(K=11,U--);for(t.drawMonth=K,t.drawYear=U,R=this._get(t,"prevText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K-A,1)),this._getFormatConfig(t)):R,i=this._canAdjustMonth(t,-1,U,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML,R=this._get(t,"nextText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K+A,1)),this._getFormatConfig(t)):R,s=this._canAdjustMonth(t,1,U,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:R}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML,A=this._get(t,"currentText"),W=this._get(t,"gotoCurrent")&&t.currentDay?B:O,A=F?this.formatDate(A,W,this._getFormatConfig(t)):A,R="",t.inline||(R=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),F="",E&&(F=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(N?R:"").append(this._isInRange(t,W)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(A):"").append(N?"":R)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),a=this._get(t,"dayNames"),r=this._get(t,"dayNamesMin"),l=this._get(t,"monthNames"),h=this._get(t,"monthNamesShort"),c=this._get(t,"beforeShowDay"),u=this._get(t,"showOtherMonths"),d=this._get(t,"selectOtherMonths"),p=this._getDefaultDate(t),f="",m=0;m<L[0];m++){for(_="",this.maxRows=4,v=0;v<L[1];v++){if(b=this._daylightSavingAdjust(new Date(U,K,t.selectedDay)),y=" ui-corner-all",w="",Y){if(w+="<div class='ui-datepicker-group",1<L[1])switch(v){case 0:w+=" ui-datepicker-group-first",y=" ui-corner-"+(N?"right":"left");break;case L[1]-1:w+=" ui-datepicker-group-last",y=" ui-corner-"+(N?"left":"right");break;default:w+=" ui-datepicker-group-middle",y=""}w+="'>"}for(w+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+y+"'>"+(/all|left/.test(y)&&0===m?N?s:i:"")+(/all|right/.test(y)&&0===m?N?i:s:"")+this._generateMonthYearHeader(t,K,U,j,q,0<m||0<v,l,h)+"</div><table class='ui-datepicker-calendar'><thead><tr>",x=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",g=0;g<7;g++)x+="<th scope='col'"+(5<=(g+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[k=(g+n)%7]+"'>"+r[k]+"</span></th>";for(w+=x+"</tr></thead><tbody>",D=this._getDaysInMonth(U,K),U===t.selectedYear&&K===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,D)),C=(this._getFirstDayOfMonth(U,K)-n+7)%7,D=Math.ceil((C+D)/7),I=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=I,T=this._daylightSavingAdjust(new Date(U,K,1-C)),P=0;P<I;P++){for(w+="<tr>",M=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(T)+"</td>":"",g=0;g<7;g++)S=c?c.apply(t.input?t.input[0]:null,[T]):[!0,""],z=(H=T.getMonth()!==K)&&!d||!S[0]||j&&T<j||q&&q<T,M+="<td class='"+(5<=(g+n+6)%7?" ui-datepicker-week-end":"")+(H?" ui-datepicker-other-month":"")+(T.getTime()===b.getTime()&&K===t.selectedMonth&&t._keyEvent||p.getTime()===T.getTime()&&p.getTime()===b.getTime()?" "+this._dayOverClass:"")+(z?" "+this._unselectableClass+" ui-state-disabled":"")+(H&&!u?"":" "+S[1]+(T.getTime()===B.getTime()?" "+this._currentClass:"")+(T.getTime()===O.getTime()?" ui-datepicker-today":""))+"'"+(H&&!u||!S[2]?"":" title='"+S[2].replace(/'/g,"&#39;")+"'")+(z?"":" data-handler='selectDay' data-event='click' data-month='"+T.getMonth()+"' data-year='"+T.getFullYear()+"'")+">"+(H&&!u?"&#xa0;":z?"<span class='ui-state-default'>"+T.getDate()+"</span>":"<a class='ui-state-default"+(T.getTime()===O.getTime()?" ui-state-highlight":"")+(T.getTime()===B.getTime()?" ui-state-active":"")+(H?" ui-priority-secondary":"")+"' href='#' aria-current='"+(T.getTime()===B.getTime()?"true":"false")+"' data-date='"+T.getDate()+"'>"+T.getDate()+"</a>")+"</td>",T.setDate(T.getDate()+1),T=this._daylightSavingAdjust(T);w+=M+"</tr>"}11<++K&&(K=0,U++),_+=w+="</tbody></table>"+(Y?"</div>"+(0<L[0]&&v===L[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=s.getMonth())&&(!h||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e<i?i:e;return t&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),n=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(t,n)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=null,o=null,a=this._get(t,"yearRange");return a&&(t=a.split(":"),a=(new Date).getFullYear(),n=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(n+=a),t[1].match(/[+\-].*/)&&(o+=a)),(!i||e.getTime()>=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.1";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&V(t).trigger("blur")};V.widget("ui.draggable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=V(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,V(n).width()-this.helperProportions.width-this.margins.left,(V(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,l,h,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)l=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(h=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||l+p<f||_<h-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(h-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(l-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(h-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(l-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}});V.ui.draggable;V.widget("ui.resizable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===V(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-h?(e.size.height=p,e.position.top=o.top-u):(p=h-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-l?(e.size.width=d,e.position.left=o.left-c):(d=l-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});V.ui.resizable;V.widget("ui.dialog",{version:"1.13.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V.ui.safeBlur(V.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.13.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,l=e.offset.left,h=e.offset.top,c=l+e.proportions().width,u=h+e.proportions().height;switch(i){case"fit":return l<=n&&a<=c&&h<=o&&r<=u;case"intersect":return l<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&h<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return lt(s.pageY,h,e.proportions().height)&&lt(s.pageX,l,e.proportions().width);case"touch":return(h<=o&&o<=u||h<=r&&r<=u||o<h&&u<r)&&(l<=n&&n<=c||l<=a&&a<=c||n<l&&c<a);default:return!1}},!(V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(i=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s)),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o)))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}})!==V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.progressbar",{version:"1.13.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return l<a&&(t=l,l=a,a=t),h<r&&(t=h,h=r,r=t),this.helper.css({left:a,top:r,width:l-a,height:h-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>l||i.right<a||i.top>h||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<l&&i.top>r&&i.bottom<h),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.13.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===l.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],t=this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,t=t-i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i)&&(!(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t)),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,h="x"===this.options.axis||r<s+h&&s+h<l,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?h&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this.dragDirection.vertical,t=this.dragDirection.horizontal;return this.floating&&t?"right"===t&&i||"left"===t&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function l(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(l);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,l,h=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],l=(a=c[e][i=0]).length;i<l;i++)(r=V(a[i])).data(this.widgetName+"-item",o),h.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)<i&&(i=Math.abs(t[h]-a),s=this.items[e],this.direction=r?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&V.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],e=V(i.containment).offset(),i="hidden"!==V(t).css("overflow"),this.containment=[e.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function ht(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.13.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===V.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===V.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:ht(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:ht(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:ht(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:ht(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:ht(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());ht(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(V.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file
diff --git a/node_modules/jquery-ui-dist/jquery-ui.structure.css b/node_modules/jquery-ui-dist/jquery-ui.structure.css
index 51cb552d99..f433f8ca91 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.structure.css
+++ b/node_modules/jquery-ui-dist/jquery-ui.structure.css
@@ -1,5 +1,5 @@
/*!
- * jQuery UI CSS Framework 1.13.0
+ * jQuery UI CSS Framework 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/node_modules/jquery-ui-dist/jquery-ui.structure.min.css b/node_modules/jquery-ui-dist/jquery-ui.structure.min.css
index ea41f3fc48..23502caad7 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.structure.min.css
+++ b/node_modules/jquery-ui-dist/jquery-ui.structure.min.css
@@ -1,4 +1,4 @@
-/*! jQuery UI - v1.13.0 - 2021-10-07
+/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */
diff --git a/node_modules/jquery-ui-dist/jquery-ui.theme.css b/node_modules/jquery-ui-dist/jquery-ui.theme.css
index f3e3b1720c..8bd4273db0 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.theme.css
+++ b/node_modules/jquery-ui-dist/jquery-ui.theme.css
@@ -1,5 +1,5 @@
/*!
- * jQuery UI CSS Framework 1.13.0
+ * jQuery UI CSS Framework 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/node_modules/jquery-ui-dist/jquery-ui.theme.min.css b/node_modules/jquery-ui-dist/jquery-ui.theme.min.css
index fcd42644f8..8fcfbee1f9 100644
--- a/node_modules/jquery-ui-dist/jquery-ui.theme.min.css
+++ b/node_modules/jquery-ui-dist/jquery-ui.theme.min.css
@@ -1,4 +1,4 @@
-/*! jQuery UI - v1.13.0 - 2021-10-07
+/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */
diff --git a/node_modules/jquery-ui-dist/package.json b/node_modules/jquery-ui-dist/package.json
index d7bcc25b21..fdf4643541 100644
--- a/node_modules/jquery-ui-dist/package.json
+++ b/node_modules/jquery-ui-dist/package.json
@@ -2,11 +2,11 @@
"name": "jquery-ui-dist",
"title": "jQuery UI",
"description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.",
- "version": "1.13.0",
+ "version": "1.13.1",
"homepage": "http://jqueryui.com",
"author": {
"name": "jQuery Foundation and other contributors",
- "url": "https://github.com/jquery/jquery-ui/blob/1.13.0/AUTHORS.txt"
+ "url": "https://github.com/jquery/jquery-ui/blob/1.13.1/AUTHORS.txt"
},
"main": "ui/widget.js",
"maintainers": [
@@ -40,7 +40,9 @@
"type": "git",
"url": "git://github.com/jquery/jquery-ui.git"
},
- "bugs": "https://bugs.jqueryui.com/",
+ "bugs": {
+ "url": "https://github.com/jquery/jquery-ui/issues"
+ },
"license": "MIT",
"scripts": {
"test": "grunt"
@@ -51,14 +53,14 @@
"devDependencies": {
"commitplease": "3.2.0",
"eslint-config-jquery": "3.0.0",
- "glob": "7.1.7",
+ "glob": "7.2.0",
"grunt": "1.4.1",
"grunt-bowercopy": "1.2.5",
"grunt-cli": "1.4.3",
"grunt-compare-size": "0.4.2",
"grunt-contrib-concat": "1.0.1",
"grunt-contrib-csslint": "2.0.0",
- "grunt-contrib-qunit": "5.0.1",
+ "grunt-contrib-qunit": "5.1.1",
"grunt-contrib-requirejs": "1.0.0",
"grunt-contrib-uglify": "5.0.1",
"grunt-eslint": "23.0.0",
diff --git a/package-lock.json b/package-lock.json
index 89554bb13f..67b43b8a2b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,7 +22,7 @@
"iframe-resizer": "^4.2.11",
"jquery": "^2.2.4",
"jquery-mousewheel": "^3.1.13",
- "jquery-ui-dist": "^1.13.0",
+ "jquery-ui-dist": "^1.13.1",
"jquery.browser": "^0.1.0",
"jquery.dotdotdot": "^3.2.3",
"jquery.scrollto": "^2.1.2",
@@ -23470,9 +23470,9 @@
"integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU="
},
"node_modules/jquery-ui-dist": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.0.tgz",
- "integrity": "sha512-fgpGOW098swRvTLglH3RLyAjW/8Ecxd35fO7Z1WtBidhZgnPDvTJzZ+XFybAFzv3zZiEESI8TkK6oYXbzu/rKw==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.1.tgz",
+ "integrity": "sha512-Y711Pu4BRVrAlL58KSxX4ail74jaCJZaZcdNDLava+MgZeNwmVWmyYiK7KxyoJu1MB73eSunjJvYDbOuNrOA7w==",
"dependencies": {
"jquery": ">=1.8.0 <4.0.0"
}
@@ -53647,9 +53647,9 @@
"integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU="
},
"jquery-ui-dist": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.0.tgz",
- "integrity": "sha512-fgpGOW098swRvTLglH3RLyAjW/8Ecxd35fO7Z1WtBidhZgnPDvTJzZ+XFybAFzv3zZiEESI8TkK6oYXbzu/rKw==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.1.tgz",
+ "integrity": "sha512-Y711Pu4BRVrAlL58KSxX4ail74jaCJZaZcdNDLava+MgZeNwmVWmyYiK7KxyoJu1MB73eSunjJvYDbOuNrOA7w==",
"requires": {
"jquery": ">=1.8.0 <4.0.0"
}
diff --git a/package.json b/package.json
index 85bf51d962..92c7bcb619 100644
--- a/package.json
+++ b/package.json
@@ -40,7 +40,7 @@
"iframe-resizer": "^4.2.11",
"jquery": "^2.2.4",
"jquery-mousewheel": "^3.1.13",
- "jquery-ui-dist": "^1.13.0",
+ "jquery-ui-dist": "^1.13.1",
"jquery.browser": "^0.1.0",
"jquery.dotdotdot": "^3.2.3",
"jquery.scrollto": "^2.1.2",
diff --git a/phpcs.xml b/phpcs.xml
index 65da90b5b5..daa162365b 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -10,6 +10,7 @@
<file>tests/PHPUnit</file>
<exclude-pattern>tests/PHPUnit/proxy/*</exclude-pattern>
+ <exclude-pattern>tests/javascript/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/libs/*</exclude-pattern>
@@ -26,6 +27,17 @@
<!-- Forbid inline control structures -->
<rule ref="Generic.ControlStructures.InlineControlStructure" />
+ <!-- Forbid unused use statements -->
+ <rule ref="SlevomatCodingStandard.Namespaces.UnusedUses">
+ <properties>
+ <property name="searchAnnotations" value="true"/>
+ <property name="ignoredAnnotations" type="array">
+ <element value="@group"/>
+ <element value="@api"/>
+ </property>
+ </properties>
+ </rule>
+
<!-- Forbid some functions that should not be used (directly) -->
<rule ref="Generic.PHP.ForbiddenFunctions">
<properties>
diff --git a/piwik.js b/piwik.js
index 655b743505..ea636ad0cc 100644
--- a/piwik.js
+++ b/piwik.js
@@ -35,7 +35,7 @@ if(dv===dt){return true}if(dt.slice(0,1)==="."){if(dv===dt.slice(1)){return true
du<aC.length;du++){dt=O(aC[du].toLowerCase());if(dw===dt){return true}if(dt.slice(0,1)==="."){if(dw===dt.slice(1)){return true}dv=dw.length-dt.length;if((dv>0)&&(dw.slice(dv)===dt)){return true}}}return false}function cv(dt,dv){dt=dt.replace("send_image=0","send_image=1");var du=new Image(1,1);du.onload=function(){H=0;if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:true})}};du.onerror=function(){if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:false})}};du.src=aI+(aI.indexOf("?")<0?"?":"&")+dt}function cM(dt){if(dj==="POST"){return true}return dt&&(dt.length>2000||dt.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dx,dA,dz){var dv=aP();if(!dv){return false}var dw={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dB=false;var du=aI;try{var dt=new Blob([dx],dw);if(dz&&!cM(dx)){dt=new Blob([],dw);du=du+(du.indexOf("?")<0?"?":"&")+dx}dB=g.sendBeacon(du,dt)}catch(dy){return false
}if(dB&&typeof dA==="function"){dA({request:dx,trackerUrl:aI,success:true,isSendBeacon:true})}return dB}function de(du,dv,dt){if(!M(dt)||null===dt){dt=true}if(m&&bc(du,dv,dt)){return}setTimeout(function(){if(m&&bc(du,dv,dt)){return}var dy;try{var dx=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dx.open("POST",aI,true);dx.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dz=m&&bc(du,dv,dt);if(!dz&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dv==="function")){dv({request:du,trackerUrl:aI,success:true,xhr:this})}}};dx.setRequestHeader("Content-Type",cE);dx.withCredentials=true;dx.send(du)}catch(dw){dy=m&&bc(du,dv,dt);if(!dy&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false})}}}},50)}function cl(du){var dt=new Date();var dv=dt.getTime()+du;if(!r||dv>r){r=dv}}function bg(){bi=true;
cF=new Date().getTime()}function dm(){var dt=new Date().getTime();return !cF||(dt-cF)>bb}function aD(){if(dm()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dm()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dq(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dm()){bX()}}})}function cK(dx){var du=new Date();var dt=du.getTime();c8=dt;if(cJ&&dt<cJ){var dv=cJ-dt;setTimeout(dx,dv);cl(dv+50);cJ+=50;return}if(cJ===false){var dw=800;cJ=dt+dw}dx()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(du,dt,dv){aT();if(!bJ){cT.push(du);return}aA=true;if(!cY&&du){if(cI&&bJ){du+="&consent=1"}cK(function(){if(c5&&bc(du,dv,true)){cl(100);return}if(cM(du)){de(du,dv)}else{cv(du,dv)}cl(dt)})}if(!aS){dq()}}function cq(dt){if(cY){return false}return(dt&&dt.length)}function dd(dt,dx){if(!dx||dx>=dt.length){return[dt]}var du=0;var dv=dt.length;var dw=[];
-for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-86400,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
+for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-129600000,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
dh[du]=(dw&&dw.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dv=parseInt(ab.width,10);var dt=parseInt(ab.height,10);dh.res=parseInt(dv,10)+"x"+parseInt(dt,10);return dh}function b3(){var du=aY("cvar"),dt=aH(du);if(dt&&dt.length){dt=W.JSON.parse(dt);if(Z(dt)){return dt}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var du=bl();var dv=aF();var dt=String(du)+dv;return dt}function dc(dv){dv=String(dv);var dy=aF();var dw=dy.length;var dx=dv.substr(-1*dw,dw);
var du=parseInt(dv.substr(0,dv.length-dw),10);if(du&&dx&&dx===dy){var dt=bl();if(a5<=0){return true}if(dt>=du&&dt<=(du+a5)){return true}}return false}function dr(dt){if(!cV){return""}var dx=e(dt,az);if(!dx){return""}dx=String(dx);var dv=new RegExp("^[a-zA-Z0-9]+$");if(dx.length===32&&dv.test(dx)){var du=dx.substr(16,32);if(dc(du)){var dw=dx.substr(0,16);return dw}}return""}function cW(){if(!bU){bU=dr(bT)}var dv=new Date(),dt=Math.round(dv.getTime()/1000),du=aY("id"),dy=aH(du),dx,dw;if(dy){dx=dy.split(".");dx.unshift("0");if(bU.length){dx[1]=bU}return dx}if(bU.length){dw=bU}else{if("0"===cb()){dw=""}else{dw=cZ()}}dx=["1",dw,dt];return dx}function a4(){var dw=cW(),du=dw[0],dv=dw[1],dt=dw[2];return{newVisitor:du,uuid:dv,createTs:dt}}function aL(){var dw=new Date(),du=dw.getTime(),dx=a4().createTs;var dt=parseInt(dx,10);var dv=(dt*1000)+cS-du;return dv}function aR(dt){if(!cc){return}var dv=new Date(),du=Math.round(dv.getTime()/1000);if(!M(dt)){dt=a4()}var dw=dt.uuid+"."+dt.createTs+".";dn(aY("id"),dw,aL(),bw,c7,bY,aN)
}function bS(){var dt=aH(aY("ref"));if(dt.length){try{dt=W.JSON.parse(dt);if(Z(dt)){return dt}}catch(du){}}return["","",0,""]}function bD(dv){var du=bq+"testcookie_domain";var dt="testvalue";dn(du,dt,10000,null,dv,bY,aN);if(aH(du)===dt){b5(du,null,dv);return true}return false}function aJ(){var du=bs;bs=false;var dt,dv;for(dt=0;dt<bB.length;dt++){dv=aY(bB[dt]);if(dv!==cU&&dv!==bj&&0!==aH(dv)){b5(dv,bw,c7)}}bs=du}function b9(dt){cc=dt}function ds(dx){if(!dx||!Z(dx)){return}var dw=[];var dv;for(dv in dx){if(Object.prototype.hasOwnProperty.call(dx,dv)){dw.push(dv)}}var dy={};dw.sort();var dt=dw.length;var du;for(du=0;du<dt;du++){dy[dw[du]]=dx[dw[du]]}return dy}function ci(){dn(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dw="";var du="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dv=du.length;var dt;for(dt=0;dt<6;dt++){dw+=du.charAt(Math.floor(Math.random()*dv))}return dw}function aE(du){if(ct!==""){du+=ct;bn=true;return du}if(!h){return du}var dv=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 4795fc69d7..2d7241122e 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -19,16 +19,12 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\DataTable;
use Piwik\DataTable\Filter\ColumnDelete;
-use Piwik\DataTable\Row;
use Piwik\Date;
use Piwik\IP;
-use Piwik\Metrics;
use Piwik\Period;
-use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Plugin\SettingsProvider;
use Piwik\Plugins\API\DataTable\MergeDataTables;
-use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\Plugins\CorePluginsAdmin\SettingsMetadata;
use Piwik\Segment;
use Piwik\Site;
diff --git a/plugins/API/Controller.php b/plugins/API/Controller.php
index 8fc0d66806..7047173e1e 100644
--- a/plugins/API/Controller.php
+++ b/plugins/API/Controller.php
@@ -14,7 +14,6 @@ use Piwik\API\Request;
use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugins\API\Renderer\Original;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php b/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php
index e1293b9364..99545dbb0e 100644
--- a/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php
+++ b/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\API\Filter\DataComparisonFilter;
use Piwik\DataTable;
use Piwik\DataTable\DataTableInterface;
use Piwik\DataTable\Simple;
-use Piwik\Metrics;
use Piwik\Period;
use Piwik\Segment;
use Piwik\Segment\SegmentExpression;
diff --git a/plugins/API/ProcessedReport.php b/plugins/API/ProcessedReport.php
index 607134095f..d401caa3fa 100644
--- a/plugins/API/ProcessedReport.php
+++ b/plugins/API/ProcessedReport.php
@@ -23,7 +23,6 @@ use Piwik\Metrics;
use Piwik\Metrics\Formatter;
use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugin\Metric;
use Piwik\Plugin\ReportsProvider;
use Piwik\Site;
use Piwik\Timer;
diff --git a/plugins/API/lang/id.json b/plugins/API/lang/id.json
index 546d889e1c..d5a96d1e01 100644
--- a/plugins/API/lang/id.json
+++ b/plugins/API/lang/id.json
@@ -1,13 +1,18 @@
{
"API": {
"ChangeTokenHint": "Jika Anda ingin mengganti token ini, silakan menuju %1$s pengaturan halaman Anda %2$s.",
+ "EvolutionMetricName": "%s Evolusi",
+ "GenerateVisits": "Jika Anda tidak memiliki data hari ini, Anda dapat membuatnya beberapa menggunakan plugin %1$s dengan membuka 'Pengembangan → Generator Pengunjung' di area administrasi Matomo.",
"Glossary": "Glosarium",
"KeepTokenSecret": "token_auth ini merupakan hal yang rahasia sebagaimana nama-id dan sandi Anda, %1$s sehingga jangan memberitahukannya%2$s!",
- "LoadedAPIs": "Berhasil memuat API %s",
- "MoreInformation": "Untuk informasi selengkapnya tentang API Matomo, silakan melihat %1$s Pengenalan API Matomo%2$s dan %3$sReferensi API Matomo%4$s.",
- "PluginDescription": "Semua data di Matomo tersedia melalui API sederhana. Plugin ini adalah titik masuk layanan web, yang dapat Anda hubungkan untuk mendapatkan data Web Analytics Anda dalam bentuk xml, json, php, csv, dll.",
+ "LearnAboutCommonlyUsedTerms2": "Pelajari tentang istilah yang umum digunakan untuk memaksimalkan analitik Matomo.",
+ "LoadedAPIs": "Memuat %s API",
+ "MainMetricsReportDocumentation": "Laporan ini memberikan gambaran umum tentang metrik terpenting di semua kategori dan plugin.",
+ "MoreInformation": "Info lebih lanjut tentang Matomo API tersedia di %1$sPengantar Matomo API%2$s dan %3$sReferensi Matomo API%4$s.",
+ "PluginDescription": "Semua data di Matomo tersedia melalui API yang sederhana. Plugin ini adalah titik masuk layanan web yang dapat Anda hubungkan untuk mendapatkan data analitik web Anda dalam format XML, JSON, PHP, CSV, dll.",
"ReportingApiReference": "Referensi Pelaporan API",
- "TopLinkTooltip": "Akses data Analisis Ramatraya terprogram melalui API sederhana dalam json, xml, dan lain lain.",
- "UserAuthentication": "Otentikasi pengguna"
+ "TopLinkTooltip": "Akses data Analitik Web Anda secara terprogram melalui API sederhana di JSON, XML, dll.",
+ "UserAuthentication": "Otentikasi pengguna",
+ "UsingTokenAuth": "Jika Anda ingin %1$smeminta data dalam skrip, crontab, dll.%2$s Anda perlu menambahkan parameter URL '%3$s' ke API memanggil URL yang memerlukan autentikasi."
}
}
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
index f428d4a6e5..0a45edcc89 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
@@ -23,11 +23,11 @@
<row>dbrowser</row>
<row>Zvu</row>
<row>Zetakey</row>
+ <row>YouCare</row>
<row>Yolo Browser</row>
<row>Yandex Browser Lite</row>
<row>Yandex Browser</row>
<row>Yahoo! Japan Browser</row>
<row>Yaani Browser</row>
<row>Xvast</row>
- <row>Xiino</row>
</result> \ No newline at end of file
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml
index fe3944e232..920b6c6374 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml
@@ -8,8 +8,10 @@
<row>watchOS</row>
<row>tvOS</row>
<row>palmOS</row>
+ <row>moonOS</row>
<row>iPadOS</row>
<row>iOS</row>
+ <row>Zenwalk</row>
<row>YunOS</row>
<row>Xubuntu</row>
<row>Xbox</row>
@@ -28,6 +30,4 @@
<row>Symbian^3</row>
<row>Symbian OS Series 60</row>
<row>Symbian OS Series 40</row>
- <row>Symbian OS</row>
- <row>Symbian</row>
</result> \ No newline at end of file
diff --git a/plugins/API/tests/Unit/WidgetMetadataTest.php b/plugins/API/tests/Unit/WidgetMetadataTest.php
index 99563b6312..a4b81ce308 100644
--- a/plugins/API/tests/Unit/WidgetMetadataTest.php
+++ b/plugins/API/tests/Unit/WidgetMetadataTest.php
@@ -11,10 +11,7 @@ namespace Piwik\Plugins\API\tests\Unit;
use Piwik\Category\Category;
use Piwik\Category\CategoryList;
use Piwik\Category\Subcategory;
-use Piwik\DataTable;
-use Piwik\Plugins\API\Renderer\Console;
use Piwik\Plugins\API\WidgetMetadata;
-use Piwik\Plugins\CoreHome\CoreHome;
use Piwik\Report\ReportWidgetConfig;
use Piwik\Widget\WidgetConfig;
use Piwik\Widget\WidgetContainerConfig;
diff --git a/plugins/Actions/Columns/DestinationPage.php b/plugins/Actions/Columns/DestinationPage.php
index 80241fa6da..0409992b0e 100644
--- a/plugins/Actions/Columns/DestinationPage.php
+++ b/plugins/Actions/Columns/DestinationPage.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class DestinationPage extends Dimension
{
diff --git a/plugins/Actions/Columns/ExitPageUrl.php b/plugins/Actions/Columns/ExitPageUrl.php
index 92d51f6fc2..007481993b 100644
--- a/plugins/Actions/Columns/ExitPageUrl.php
+++ b/plugins/Actions/Columns/ExitPageUrl.php
@@ -12,7 +12,6 @@ use Piwik\Columns\DimensionMetricFactory;
use Piwik\Columns\Discriminator;
use Piwik\Columns\Join;
use Piwik\Columns\MetricsList;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
diff --git a/plugins/Actions/Columns/IdPageview.php b/plugins/Actions/Columns/IdPageview.php
index 25bd5911dc..6bb083f232 100644
--- a/plugins/Actions/Columns/IdPageview.php
+++ b/plugins/Actions/Columns/IdPageview.php
@@ -13,7 +13,6 @@ use Piwik\Columns\MetricsList;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
class IdPageview extends ActionDimension
diff --git a/plugins/Actions/Columns/Keyword.php b/plugins/Actions/Columns/Keyword.php
index 8469f7e731..d67dad92f0 100644
--- a/plugins/Actions/Columns/Keyword.php
+++ b/plugins/Actions/Columns/Keyword.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Keyword extends Dimension
{
diff --git a/plugins/Actions/Columns/KeywordwithNoSearchResult.php b/plugins/Actions/Columns/KeywordwithNoSearchResult.php
index 928c3d831e..e08a58d3fb 100644
--- a/plugins/Actions/Columns/KeywordwithNoSearchResult.php
+++ b/plugins/Actions/Columns/KeywordwithNoSearchResult.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class KeywordwithNoSearchResult extends Dimension
{
diff --git a/plugins/Actions/Columns/PageUrl.php b/plugins/Actions/Columns/PageUrl.php
index a79a8cc659..6d8d4a902f 100644
--- a/plugins/Actions/Columns/PageUrl.php
+++ b/plugins/Actions/Columns/PageUrl.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Discriminator;
use Piwik\Columns\Join\ActionNameJoin;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Tracker\Action;
diff --git a/plugins/Actions/Columns/PageViewPosition.php b/plugins/Actions/Columns/PageViewPosition.php
index 84d8927964..018d80b1fa 100644
--- a/plugins/Actions/Columns/PageViewPosition.php
+++ b/plugins/Actions/Columns/PageViewPosition.php
@@ -8,11 +8,9 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Plugins\Events\Actions\ActionEvent;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
class PageViewPosition extends ActionDimension
diff --git a/plugins/Actions/Columns/SearchDestinationPage.php b/plugins/Actions/Columns/SearchDestinationPage.php
index b990857424..a940b804ca 100644
--- a/plugins/Actions/Columns/SearchDestinationPage.php
+++ b/plugins/Actions/Columns/SearchDestinationPage.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SearchDestinationPage extends Dimension
{
diff --git a/plugins/Actions/Columns/SearchNoResultKeyword.php b/plugins/Actions/Columns/SearchNoResultKeyword.php
index b202415dda..9888df9755 100644
--- a/plugins/Actions/Columns/SearchNoResultKeyword.php
+++ b/plugins/Actions/Columns/SearchNoResultKeyword.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SearchNoResultKeyword extends Dimension
{
diff --git a/plugins/Actions/Columns/VisitTotalInteractions.php b/plugins/Actions/Columns/VisitTotalInteractions.php
index 4567de58d6..544ce9963b 100644
--- a/plugins/Actions/Columns/VisitTotalInteractions.php
+++ b/plugins/Actions/Columns/VisitTotalInteractions.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/Actions/DataTable/Filter/Actions.php b/plugins/Actions/DataTable/Filter/Actions.php
index df071cd63e..61c791c900 100644
--- a/plugins/Actions/DataTable/Filter/Actions.php
+++ b/plugins/Actions/DataTable/Filter/Actions.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Actions\DataTable\Filter;
use Piwik\Common;
use Piwik\Config;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Tracker\Action;
diff --git a/plugins/Actions/Reports/GetEntryPageUrls.php b/plugins/Actions/Reports/GetEntryPageUrls.php
index df6a70a8a3..01f75f860f 100644
--- a/plugins/Actions/Reports/GetEntryPageUrls.php
+++ b/plugins/Actions/Reports/GetEntryPageUrls.php
@@ -16,8 +16,6 @@ use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
class GetEntryPageUrls extends Base
{
diff --git a/plugins/Actions/Reports/GetExitPageUrls.php b/plugins/Actions/Reports/GetExitPageUrls.php
index cd520c7f4e..6638dfe4eb 100644
--- a/plugins/Actions/Reports/GetExitPageUrls.php
+++ b/plugins/Actions/Reports/GetExitPageUrls.php
@@ -17,8 +17,6 @@ use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
class GetExitPageUrls extends Base
{
diff --git a/plugins/Actions/VisitorDetails.php b/plugins/Actions/VisitorDetails.php
index 36c8c4fa50..0dc4209010 100644
--- a/plugins/Actions/VisitorDetails.php
+++ b/plugins/Actions/VisitorDetails.php
@@ -8,20 +8,15 @@
*/
namespace Piwik\Plugins\Actions;
-use Piwik\Cache;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
-use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Site;
use Piwik\Tracker\Action;
use Piwik\Tracker\PageUrl;
-use Piwik\View;
class VisitorDetails extends VisitorDetailsAbstract
{
diff --git a/plugins/Actions/lang/id.json b/plugins/Actions/lang/id.json
index 5755fafda8..f58644eb39 100644
--- a/plugins/Actions/lang/id.json
+++ b/plugins/Actions/lang/id.json
@@ -1,8 +1,10 @@
{
"Actions": {
"ActionType": "Jenis Tindakan",
+ "ActionTypes": "Jenis Tindakan",
"ActionsInVisit": "TIndakan saat berkunjung",
"AvgGenerationTimeTooltip": "Rerata berdasar %1$s kunjungan %2$s antara %3$s dan %4$s",
+ "Behaviour": "Perilaku",
"ColumnActionURL": "URL tindakan",
"ColumnClickedURL": "Klik Tautan Keluar",
"ColumnClickedURLs": "Klik Tautan Keluar",
@@ -36,21 +38,33 @@
"ColumnUniqueDownloads": "Unduhan Unik",
"ColumnUniqueOutlinks": "Tautan Luar Unik",
"DownloadsReportDocumentation": "Dalam laporan ini, Anda dapat melihat berkas yang diunduh oleh pengunjung. %s Apa yang Matomo hitung adalah yang mengeklik tautan unduhan. Namun, bila unduhan sudah lengkap atau belum Matomo tidak mengetahuinya.",
+ "DownloadsSubcategoryHelp1": "Dalam laporan ini, Anda dapat melihat berkas mana yang telah diunduh oleh pengunjung Anda.",
+ "DownloadsSubcategoryHelp2": "Apa yang Matomo hitung sebagai unduhan adalah klik tautan unduhan. Apakah unduhan selesai atau tidak, Matomo tidak mengetahuinya.",
"EntryPageTitles": "Judul halaman masuk",
"EntryPageTitlesReportDocumentation": "Laporan ini mengandung informasi tentang judul halaman masuk yang digunakan selama rentang waktu tertentu.",
"EntryPagesReportDocumentation": "Laporan ini berisi informasi tentang halaman masuk yang digunakan selama periode yang ditentukan. Halaman masuk adalah halaman pertama yang dilihat pengguna selama kunjungan mereka. %s URL entri ditampilkan sebagai struktur folder.",
+ "EntryPagesSubcategoryHelp1": "Laporan ini berisi informasi tentang halaman entri yang digunakan selama periode tertentu. Halaman entri adalah halaman pertama yang dilihat pengguna selama kunjungan mereka.",
+ "EntryPagesSubcategoryHelp2": "URL entri ditampilkan sebagai struktur folder.",
"ExitPageTitles": "Judul halaman keluar",
"ExitPageTitlesReportDocumentation": "Laporan ini mengandung informasi tentang judul halman keluar yang terjadi selama waktu tertentu.",
"ExitPagesReportDocumentation": "Laporan ini berisi informasi tentang halaman keluar yang terjadi selama periode yang ditentukan. Halaman keluar adalah halaman terakhir yang dilihat pengguna selama kunjungan mereka. %s URL keluar ditampilkan sebagai struktur folder.",
+ "ExitPagesSubcategoryHelp1": "Laporan ini berisi informasi tentang halaman keluar yang terjadi selama periode yang ditentukan. Halaman keluar adalah halaman terakhir yang dilihat pengguna selama kunjungan mereka.",
+ "ExitPagesSubcategoryHelp2": "URL keluar ditampilkan sebagai struktur folder.",
+ "MainMetricsReportDocumentation": "Laporan ini memberikan gambaran yang sangat mendasar tentang tindakan apa yang dilakukan oleh pengunjung di situs web Anda.",
"OneSearch": "1 pencarian",
"OutlinkDocumentation": "Tautan keluar merupakan tautan yang mengarahkan keluar pengunjung dari situs Anda (ke ranah lainnya).",
"OutlinksReportDocumentation": "Laporan ini menampilkan laporan secara berurutan tautan keluar URL yang diklik oleh pengunjung Anda.",
+ "OutlinksSubcategoryHelp1": "Laporan ini menunjukkan daftar hierarki URL tautan keluar yang diklik oleh pengunjung Anda. Outlink adalah tautan yang mengarahkan pengunjung menjauh dari situs web Anda (ke domain lain).",
"PageTitlesReportDocumentation": "Laporan ini mengandung informasi tentang judul halaman yang telah dikunjungi. %1$s Judul halaman merupakan Etiket %2$s HTML yang kebanyakan peramban ditampilkan di judul jendela.",
+ "PageTitlesSubcategoryHelp1": "Laporan ini berisi informasi tentang judul halaman yang telah dikunjungi.",
+ "PageTitlesSubcategoryHelp2": "Judul halaman adalah HTML &amp;lt;title&amp;gt; Tanda yang ditampilkan sebagian besar peramban di judul jendela mereka.",
"PageUrls": "URL Halaman",
"PageViewsByVisitor": "Jumlah dari berapa kali halaman ini dilihat oleh pengunjung dari semua pengunjung",
"PagesReportDocumentation": "Laporan ini mengandung informasi tentang URL halaman yang dikunjungi. %s Tabel diatur berurutan, URL ditampilkan sebagai struktur map.",
+ "PagesSubcategoryHelp1": "Laporan ini berisi informasi tentang URL halaman yang telah dikunjungi.",
+ "PagesSubcategoryHelp2": "Tabel diatur secara hierarkis, URL ditampilkan sebagai struktur folder.",
"PagesSubcategoryHelp3": "Gunakan ikon plus dan minus di kiri untuk bernavigasi.",
- "PluginDescription": "Laporan mengenai tampilan dan judul halaman. Membantu Anda mengukur mesin pencarian internal situs web Anda. Pelacakan klik otomatis dalam tautan eksternal dan berkas unduhan.",
+ "PluginDescription": "Laporan tentang tampilan halaman dan judul halaman. Memungkinkan Anda untuk mengukur mesin pencari situs web internal Anda. Secara otomatis melacak klik pada tautan eksternal dan unduhan berkas.",
"RevisitedPages": "Halaman-halaman yang dilihat lebih dari sekali",
"SiteSearchCategories": "Kategori-kategori (Pencarian situs)",
"SiteSearchCategories1": "Lapotan ini mendaftar Kategori dipilih oleh pengunjung ketika membuat Pencarian di situs Anda.",
@@ -64,10 +78,14 @@
"SiteSearchKeywords": "Kata Kunci (Pencarian Situs)",
"SiteSearchKeywordsDocumentation": "Laporan ini mendaftar Kata Kunci pencarian pengunjung dalam Mesin Pencari dalam Anda.",
"SiteSearchKeywordsNoResultDocumentation": "Laporan ini mendaftar Kata Kunci Pencarian yang tidak menemukan hasil Pencarian apapun: kemungkinan algoritma pencarian dapat ditingkatkan, atau mungkin pengunjung Anda mencari muatan yang mungkin tidak (atau belum) tersedia di situs Anda?",
+ "SiteSearchSubcategoryHelp1": "Bagian Pencarian Situs menunjukkan kata kunci yang digunakan pengunjung saat mencari situs web Anda. Hal ini juga menampilkan halaman mana yang dilihat pengguna setelah melakukan pencarian dan kata kunci pencarian di tempat mana yang tidak menghasilkan hasil sama sekali.",
+ "SiteSearchSubcategoryHelp2": "Laporan-laporan ini dapat memberi Anda ide tentang konten yang tidak ada di situs Anda, wawasan tentang apa yang dicari pengunjung Anda tetapi tidak dapat ditemukan dengan mudah, dan masih banyak lagi.",
+ "SiteSearchSubcategoryHelp3": "Pelajari lebih lanjut di panduan Pencarian Situs.",
"SubmenuPageTitles": "Judul halaman",
"SubmenuPagesEntry": "Halaman masuk",
"SubmenuPagesExit": "Halaman keluar",
"SubmenuSitesearch": "Pencarian Situs",
+ "TimeSpentInReferringAction": "Waktu yang Dihabiskan dalam Merujuk Tindakan",
"WidgetEntryPageTitles": "Judul Halaman Masuk",
"WidgetExitPageTitles": "Judul Halaman Keluar",
"WidgetPageTitles": "Judul Halaman",
diff --git a/plugins/Annotations/API.php b/plugins/Annotations/API.php
index e93ae09c47..bb2bd2924b 100644
--- a/plugins/Annotations/API.php
+++ b/plugins/Annotations/API.php
@@ -10,10 +10,7 @@ namespace Piwik\Plugins\Annotations;
use Exception;
use Piwik\Date;
-use Piwik\Period\Range;
-use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution as EvolutionViz;
/**
* @see plugins/Annotations/AnnotationList.php
diff --git a/plugins/Bandwidth b/plugins/Bandwidth
-Subproject 793ba1fb35a4b9571eb90fa5a094f3b64d0b9ae
+Subproject 778fb45cc5c0946d091c9b2a2fd280af438c645
diff --git a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php
index 91ed882210..c09399e683 100644
--- a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php
+++ b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker;
-use Piwik\Tracker;
class Requests extends \Piwik\Plugins\BulkTracking\Tracker\Requests
{
diff --git a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
index c705660f1e..9281c02234 100644
--- a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
+++ b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
@@ -8,8 +8,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker;
-use Piwik\Tracker;
-use Exception;
class Response extends \Piwik\Plugins\BulkTracking\Tracker\Response
{
diff --git a/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php b/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php
index f8e0d25f1b..ee9e5ffb03 100644
--- a/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php
+++ b/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php
@@ -13,7 +13,6 @@ use Piwik\Plugins\BulkTracking\BulkTracking;
use Piwik\Tests\Framework\Fixture;
use Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker\Requests;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Tracker\Handler as DefaultHandler;
use Piwik\Tracker\RequestSet;
/**
diff --git a/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php b/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php
index ce5c6a0ce3..ab516f0790 100644
--- a/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php
+++ b/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Integration;
-use Piwik\Plugin;
use Piwik\Plugins\BulkTracking\tests\Framework\TestCase\BulkTrackingTestCase;
use Piwik\Plugins\BulkTracking\Tracker\Handler;
use Piwik\Tracker\Handler as DefaultHandler;
diff --git a/plugins/BulkTracking/tests/Integration/RequestsTest.php b/plugins/BulkTracking/tests/Integration/RequestsTest.php
index 7214884547..e141f1db84 100644
--- a/plugins/BulkTracking/tests/Integration/RequestsTest.php
+++ b/plugins/BulkTracking/tests/Integration/RequestsTest.php
@@ -10,9 +10,7 @@ namespace Piwik\Plugins\BulkTracking\tests\Integration;
use Piwik\Container\StaticContainer;
use Piwik\Plugins\BulkTracking\Tracker\Requests;
-use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\Model;
-use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\Request;
diff --git a/plugins/BulkTracking/tests/Integration/TrackerTest.php b/plugins/BulkTracking/tests/Integration/TrackerTest.php
index 971e956757..e939fe9dc1 100644
--- a/plugins/BulkTracking/tests/Integration/TrackerTest.php
+++ b/plugins/BulkTracking/tests/Integration/TrackerTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Integration;
use Piwik\Common;
-use Piwik\Plugin;
use Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker\Response;
use Piwik\Plugins\BulkTracking\tests\Framework\TestCase\BulkTrackingTestCase;
use Piwik\Plugins\BulkTracking\Tracker\Handler;
diff --git a/plugins/Contents/API.php b/plugins/Contents/API.php
index 8a0048b354..0afa291c41 100644
--- a/plugins/Contents/API.php
+++ b/plugins/Contents/API.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\Contents;
use Piwik\Archive;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Contents\Archiver;
diff --git a/plugins/Contents/Actions/ActionContent.php b/plugins/Contents/Actions/ActionContent.php
index 9f4072275e..e7b3467b66 100644
--- a/plugins/Contents/Actions/ActionContent.php
+++ b/plugins/Contents/Actions/ActionContent.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Contents\Actions;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
-use Piwik\Tracker;
/**
* A content is composed of a name, an actual piece of content, and optionally a target.
diff --git a/plugins/Contents/Archiver.php b/plugins/Contents/Archiver.php
index e0eace0e49..19f3ce7b7c 100644
--- a/plugins/Contents/Archiver.php
+++ b/plugins/Contents/Archiver.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Contents;
-use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\RankingQuery;
diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php
index 32f269ff70..b922733c45 100644
--- a/plugins/CoreAdminHome/API.php
+++ b/plugins/CoreAdminHome/API.php
@@ -14,7 +14,6 @@ use Monolog\Logger;
use Piwik\Access;
use Piwik\ArchiveProcessor\Rules;
use Piwik\ArchiveProcessor;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Archive\ArchiveInvalidator;
diff --git a/plugins/CoreAdminHome/Commands/InvalidateReportData.php b/plugins/CoreAdminHome/Commands/InvalidateReportData.php
index 93dde32d58..cdb1f3240e 100644
--- a/plugins/CoreAdminHome/Commands/InvalidateReportData.php
+++ b/plugins/CoreAdminHome/Commands/InvalidateReportData.php
@@ -20,12 +20,9 @@ use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
use Piwik\Site;
use Piwik\Period\Factory as PeriodFactory;
use Psr\Log\LoggerInterface;
-use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Question\ConfirmationQuestion;
-use Symfony\Component\Console\Question\Question;
/**
* Provides a simple interface for invalidating report data by date ranges, site IDs and periods.
diff --git a/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php b/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php
index bcbb4fe5b4..4dec1a14a0 100644
--- a/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php
+++ b/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php
@@ -8,16 +8,12 @@
namespace Piwik\Plugins\CoreAdminHome\Commands;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\UsersManager\Model;
use Piwik\Updater;
use Piwik\Updater\Migration\Factory as MigrationFactory;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php b/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php
index 4660fc5d9d..42736cc935 100644
--- a/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php
+++ b/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CoreAdminHome\Commands;
-use Piwik\Archive;
use Piwik\Archive\ArchivePurger;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
diff --git a/plugins/CoreAdminHome/Tasks.php b/plugins/CoreAdminHome/Tasks.php
index 803880b621..1188d102c7 100644
--- a/plugins/CoreAdminHome/Tasks.php
+++ b/plugins/CoreAdminHome/Tasks.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\CoreAdminHome;
use Piwik\API\Request;
-use Piwik\Archive;
-use Piwik\Archive\ArchiveInvalidator;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Archive\ArchivePurger;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\CronArchive;
diff --git a/plugins/CoreAdminHome/tests/Framework/Mock/API.php b/plugins/CoreAdminHome/tests/Framework/Mock/API.php
index 165abd4490..c07af44fc1 100644
--- a/plugins/CoreAdminHome/tests/Framework/Mock/API.php
+++ b/plugins/CoreAdminHome/tests/Framework/Mock/API.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\CoreAdminHome\tests\Framework\Mock;
-use Piwik\Tracker;
class API extends \Piwik\Plugins\CoreAdminHome\API
{
diff --git a/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php b/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php
index 630ce6c503..9684b8a5a8 100644
--- a/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php
+++ b/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php
@@ -9,11 +9,9 @@
namespace Piwik\Plugins\CoreAdminHome\tests\Integration\Commands;
use Monolog\Handler\AbstractProcessingHandler;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\ConsoleCommandTestCase;
-use Psr\Log\LoggerInterface;
/**
* @group CoreAdminHome
diff --git a/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php b/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php
index ef6dc6b37b..7e98a5152e 100644
--- a/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php
+++ b/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php
@@ -12,7 +12,6 @@ use Psr\Container\ContainerInterface;
use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Config;
use Piwik\Tests\Framework\TestCase\ConsoleCommandTestCase;
-use Piwik\Url;
/**
* @group Core
diff --git a/plugins/CoreAdminHome/tests/Integration/TasksTest.php b/plugins/CoreAdminHome/tests/Integration/TasksTest.php
index 06765ef54d..9edcea8932 100644
--- a/plugins/CoreAdminHome/tests/Integration/TasksTest.php
+++ b/plugins/CoreAdminHome/tests/Integration/TasksTest.php
@@ -17,9 +17,6 @@ use Piwik\Plugins\CoreAdminHome\Emails\JsTrackingCodeMissingEmail;
use Piwik\Plugins\CoreAdminHome\Emails\TrackingFailuresEmail;
use Piwik\Plugins\CoreAdminHome\Tasks;
use Piwik\Plugins\CoreAdminHome\Tasks\ArchivesToPurgeDistributedList;
-use Piwik\Plugins\CustomDimensions\CustomDimensions;
-use Piwik\Plugins\CustomDimensions\Dao\Configuration;
-use Piwik\Plugins\SegmentEditor\Model;
use Piwik\Scheduler\Task;
use Piwik\Tests\Fixtures\RawArchiveDataWithTempAndInvalidated;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/CoreConsole/Commands/ComputeJsAssetSize.php b/plugins/CoreConsole/Commands/ComputeJsAssetSize.php
index 9118d51abf..0d6abab126 100644
--- a/plugins/CoreConsole/Commands/ComputeJsAssetSize.php
+++ b/plugins/CoreConsole/Commands/ComputeJsAssetSize.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\CoreConsole\Commands;
use Piwik\AssetManager;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Development;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
@@ -164,6 +162,7 @@ class ComputeJsAssetSize extends ConsoleCommand
"WhiteLabel",
"WooCommerceAnalytics",
"AdvertisingConversionExport",
+ "AnonymousPiwikUsageMeasurement",
];
if ($plugin) {
diff --git a/plugins/CoreConsole/Commands/DevelopmentEnable.php b/plugins/CoreConsole/Commands/DevelopmentEnable.php
index ec1df4735c..c13376119a 100644
--- a/plugins/CoreConsole/Commands/DevelopmentEnable.php
+++ b/plugins/CoreConsole/Commands/DevelopmentEnable.php
@@ -14,7 +14,6 @@ use Piwik\Filesystem;
use Piwik\SettingsPiwik;
use Piwik\Plugin\ConsoleCommand;
use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
/**
diff --git a/plugins/CoreConsole/Commands/GenerateDimension.php b/plugins/CoreConsole/Commands/GenerateDimension.php
index 9168e0bccf..f8efe64e4c 100644
--- a/plugins/CoreConsole/Commands/GenerateDimension.php
+++ b/plugins/CoreConsole/Commands/GenerateDimension.php
@@ -12,7 +12,6 @@ namespace Piwik\Plugins\CoreConsole\Commands;
use Piwik\Common;
use Piwik\DbHelper;
use Piwik\Plugin\Manager;
-use Piwik\Plugin\Report;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CoreHome/Categories/VisitorsCategory.php b/plugins/CoreHome/Categories/VisitorsCategory.php
index 8cbbbb9033..ad75ace57a 100644
--- a/plugins/CoreHome/Categories/VisitorsCategory.php
+++ b/plugins/CoreHome/Categories/VisitorsCategory.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Categories;
use Piwik\Category\Category;
use Piwik\Piwik;
-use Piwik\Url;
class VisitorsCategory extends Category
{
diff --git a/plugins/CoreHome/Columns/Metrics/ConversionRate.php b/plugins/CoreHome/Columns/Metrics/ConversionRate.php
index 16dd7bba1b..31447dd729 100644
--- a/plugins/CoreHome/Columns/Metrics/ConversionRate.php
+++ b/plugins/CoreHome/Columns/Metrics/ConversionRate.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\CoreHome\Columns\Metrics;
use Piwik\DataTable\Row;
-use Piwik\Metrics;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
diff --git a/plugins/CoreHome/Columns/Metrics/VisitsPercent.php b/plugins/CoreHome/Columns/Metrics/VisitsPercent.php
index 325e1e3e48..49f18a8aa6 100644
--- a/plugins/CoreHome/Columns/Metrics/VisitsPercent.php
+++ b/plugins/CoreHome/Columns/Metrics/VisitsPercent.php
@@ -13,7 +13,6 @@ use Piwik\DataTable\Row;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
-use Piwik\Plugin\Report;
/**
* Percent of visits in the whole table. Calculated as:
diff --git a/plugins/CoreHome/Columns/UserId.php b/plugins/CoreHome/Columns/UserId.php
index db23f9b7f0..bc0c77ab74 100644
--- a/plugins/CoreHome/Columns/UserId.php
+++ b/plugins/CoreHome/Columns/UserId.php
@@ -9,13 +9,11 @@
namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Cache;
-use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Map;
use Piwik\Metrics;
use Piwik\Plugin;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\VisitsSummary\API as VisitsSummaryApi;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/CoreHome/Columns/VisitGoalBuyer.php b/plugins/CoreHome/Columns/VisitGoalBuyer.php
index 904519494b..711380cf9a 100644
--- a/plugins/CoreHome/Columns/VisitGoalBuyer.php
+++ b/plugins/CoreHome/Columns/VisitGoalBuyer.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\GoalManager;
use Piwik\Tracker\Request;
diff --git a/plugins/CoreHome/Columns/VisitTotalTime.php b/plugins/CoreHome/Columns/VisitTotalTime.php
index 858028f598..0401a54e04 100644
--- a/plugins/CoreHome/Columns/VisitTotalTime.php
+++ b/plugins/CoreHome/Columns/VisitTotalTime.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Config;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/CoreHome/Columns/VisitorId.php b/plugins/CoreHome/Columns/VisitorId.php
index f6b29699b3..108c41b921 100644
--- a/plugins/CoreHome/Columns/VisitorId.php
+++ b/plugins/CoreHome/Columns/VisitorId.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Columns\DimensionMetricFactory;
use Piwik\Columns\MetricsList;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ArchivedMetric;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php b/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php
index bed71d3328..64e2a3403a 100644
--- a/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php
+++ b/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Common;
use Piwik\Date;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php b/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php
index 8837bfdd7b..0e67fe4184 100644
--- a/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php
+++ b/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Date;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index ad1096e1e5..6982562ea6 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -24,7 +24,6 @@ use Piwik\Plugins\CoreHome\DataTableRowAction\MultiRowEvolution;
use Piwik\Plugins\CoreHome\DataTableRowAction\RowEvolution;
use Piwik\Plugins\Dashboard\DashboardManagerControl;
use Piwik\Plugins\UsersManager\API;
-use Piwik\Site;
use Piwik\Translation\Translator;
use Piwik\UpdateCheck;
use Piwik\Url;
diff --git a/plugins/CoreHome/Menu.php b/plugins/CoreHome/Menu.php
index 3b3051f606..6cade0124e 100644
--- a/plugins/CoreHome/Menu.php
+++ b/plugins/CoreHome/Menu.php
@@ -8,10 +8,8 @@
*/
namespace Piwik\Plugins\CoreHome;
-use Piwik\Db;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
-use Piwik\Plugin;
class Menu extends \Piwik\Plugin\Menu
{
diff --git a/plugins/CoreHome/Tracker/VisitRequestProcessor.php b/plugins/CoreHome/Tracker/VisitRequestProcessor.php
index 65906cd45e..74abe8ffd6 100644
--- a/plugins/CoreHome/Tracker/VisitRequestProcessor.php
+++ b/plugins/CoreHome/Tracker/VisitRequestProcessor.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Tracker;
use Piwik\Common;
use Piwik\Date;
-use Piwik\Config;
use Piwik\EventDispatcher;
use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Tracker\Cache;
diff --git a/plugins/CoreHome/Widgets/GetDonateForm.php b/plugins/CoreHome/Widgets/GetDonateForm.php
index 72431e2d7f..c5ea5cf462 100644
--- a/plugins/CoreHome/Widgets/GetDonateForm.php
+++ b/plugins/CoreHome/Widgets/GetDonateForm.php
@@ -13,7 +13,6 @@ use Piwik\Piwik;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
use Piwik\Translation\Translator;
-use Piwik\View;
class GetDonateForm extends Widget
{
diff --git a/plugins/CoreHome/Widgets/GetSystemSummary.php b/plugins/CoreHome/Widgets/GetSystemSummary.php
index 362fc6817c..e09fe22d45 100644
--- a/plugins/CoreHome/Widgets/GetSystemSummary.php
+++ b/plugins/CoreHome/Widgets/GetSystemSummary.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CoreHome\Widgets;
-use Piwik\API\Request;
use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugin;
diff --git a/plugins/CoreHome/angularjs/common/filters/evolution.js b/plugins/CoreHome/angularjs/common/filters/evolution.js
index d3ba61259b..14adb00db1 100644
--- a/plugins/CoreHome/angularjs/common/filters/evolution.js
+++ b/plugins/CoreHome/angularjs/common/filters/evolution.js
@@ -8,42 +8,8 @@
angular.module('piwikApp.filter').filter('evolution', evolutionFilter);
function evolutionFilter() {
-
- function calculateEvolution(currentValue, pastValue)
- {
- pastValue = parseInt(pastValue, 10);
- currentValue = parseInt(currentValue, 10) - pastValue;
-
- var evolution;
-
- if (currentValue === 0 || isNaN(currentValue)) {
- evolution = 0;
- } else if (pastValue === 0 || isNaN(pastValue)) {
- evolution = 100;
- } else {
- evolution = (currentValue / pastValue) * 100;
- }
-
- return evolution;
- }
-
- function formatEvolution(evolution)
- {
- evolution = Math.round(evolution);
-
- if (evolution > 0) {
- evolution = '+' + evolution;
- }
-
- evolution += '%';
-
- return evolution;
- }
-
return function(currentValue, pastValue) {
- var evolution = calculateEvolution(currentValue, pastValue);
-
- return formatEvolution(evolution);
+ return window.CoreHome.getFormattedEvolution(currentValue, pastValue);
};
}
})();
diff --git a/plugins/CoreHome/lang/zh-cn.json b/plugins/CoreHome/lang/zh-cn.json
index 0d6993cd54..48a9fe758b 100644
--- a/plugins/CoreHome/lang/zh-cn.json
+++ b/plugins/CoreHome/lang/zh-cn.json
@@ -16,6 +16,7 @@
"CloseWidgetDirections": "点击右上角的 'X' 图标可关闭这个小窗口。",
"CssDidntLoad": "您的浏览器无法加载此页面的样式。",
"CustomLimit": "自定义限制",
+ "DataForThisReportHasBeenDisabled": "此报告当前已禁用分段。有关详细信息,请查看%1$s此常见问题解答%2$s。",
"DataForThisReportHasBeenPurged": "本报表数据超过 %s 个月已被清空。",
"DataTableCombineDimensions": "尺寸单独显示%s显示组合尺寸",
"DataTableExcludeAggregateRows": "汇总行已显示 %s 隐藏汇总",
@@ -28,6 +29,7 @@
"DonateCall1": "Matomo 对您来说可以免费使用,但对我们来说并非零成本。",
"DonateCall2": "Matomo 的茁壮成长离不开您的支持。",
"DonateCall3": "如果你觉得Matomo对你的商业有价值的话,%1$s请考虑资助%2$s 或者 %3$s购买会员%4$s。任何一分都会有帮助。",
+ "EndDate": "结束日期",
"EndShortcut": "结束",
"EngagementSubcategoryHelp1": "参与部分提供的报告帮助你量化了得到的新访客和回访访客的数量。你还可以查看报告,其中细分了每次访问的平均时间和页面数,以及访客访问你的网站的次数和最常见的访问间隔天数。",
"EngagementSubcategoryHelp2": "这可以帮助你优化频率和高互动访问,此外还可以最大限度地提高你的影响力。",
@@ -97,6 +99,7 @@
"SkipToContent": "跳过,查看内容",
"SoftwareSubcategoryHelp": "软件部分展示了您的访问者在访问网站时使用的操作系统、浏览器和插件,以便您可以优化您的网站,以确保它与最流行的配置完全兼容。",
"StandardReport": "标准报告",
+ "StartDate": "开始日期",
"SubscribeAndBecomePiwikSupporter": "进入安全的信用卡付款页面 (Paypal) 支持 Matomo !",
"SupportPiwik": "支持 Matomo!",
"SupportUsOn": "支持我们",
diff --git a/plugins/CoreHome/stylesheets/layout.less b/plugins/CoreHome/stylesheets/layout.less
index 35a7524aba..07da8e2668 100644
--- a/plugins/CoreHome/stylesheets/layout.less
+++ b/plugins/CoreHome/stylesheets/layout.less
@@ -422,13 +422,17 @@ nav {
input {
height: 33px;
font-size: 11px;
- padding: 10px 12px 10px 10px;
+ padding: 10px 12px 10px 30px;
border: 0;
margin: 0;
box-sizing: border-box;
border-radius: 2px !important;
box-shadow: none!important;
}
+
+ input::placeholder {
+ color: #a9a9a9;
+ }
}
.piwikTopControl {
diff --git a/plugins/CoreHome/tests/Integration/Column/UserIdTest.php b/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
index 848d933f5a..da1fd47ee9 100644
--- a/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
+++ b/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\CoreHome\tests\Integration\Column;
use Piwik\Cache;
-use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\Db;
use Piwik\Metrics;
use Piwik\Plugins\CoreHome\Columns\UserId;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php b/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
index acbf850dde..f0fc25024c 100644
--- a/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
+++ b/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
@@ -8,23 +8,14 @@
namespace Piwik\Plugins\CoreHome\tests\Integration\Column;
-use Piwik\Cache;
use Piwik\Common;
-use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Metrics;
-use Piwik\Plugins\CoreHome\Columns\UserId;
use Piwik\Plugins\CoreHome\Columns\VisitLastActionTime;
-use Piwik\Plugins\CoreHome\Tracker\LogTable\Visit;
use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\DataTable;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visit\VisitProperties;
use Piwik\Tracker\Visitor;
-use Piwik\Tracker\VisitorRecognizer;
/**
* @group CoreHome
diff --git a/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php b/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php
index 7ecdb2d046..7929eba0e4 100644
--- a/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php
+++ b/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreHome\tests\Unit;
use PHPUnit\Framework\TestCase;
use Piwik\DataTable;
-use Piwik\Archive\DataCollection;
use Piwik\DataTable\Row;
use Piwik\Date;
use Piwik\Plugins\CoreHome\Columns\Metrics\EvolutionMetric;
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index bc52f3f4ff..e0eb58fd6d 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -132,7 +132,7 @@ __webpack_require__.d(__webpack_exports__, "createVueApp", function() { return /
__webpack_require__.d(__webpack_exports__, "useExternalPluginComponent", function() { return /* reexport */ useExternalPluginComponent; });
__webpack_require__.d(__webpack_exports__, "DirectiveUtilities", function() { return /* reexport */ directiveUtilities; });
__webpack_require__.d(__webpack_exports__, "debounce", function() { return /* reexport */ debounce; });
-__webpack_require__.d(__webpack_exports__, "lazyInitSingleton", function() { return /* reexport */ lazyInitSingleton; });
+__webpack_require__.d(__webpack_exports__, "getFormattedEvolution", function() { return /* reexport */ getFormattedEvolution; });
__webpack_require__.d(__webpack_exports__, "createAngularJsAdapter", function() { return /* reexport */ createAngularJsAdapter; });
__webpack_require__.d(__webpack_exports__, "transformAngularJsBoolAttr", function() { return /* reexport */ transformAngularJsBoolAttr; });
__webpack_require__.d(__webpack_exports__, "transformAngularJsIntAttr", function() { return /* reexport */ transformAngularJsIntAttr; });
@@ -187,6 +187,7 @@ __webpack_require__.d(__webpack_exports__, "FieldArray", function() { return /*
__webpack_require__.d(__webpack_exports__, "MultiPairField", function() { return /* reexport */ MultiPairField; });
__webpack_require__.d(__webpack_exports__, "PeriodSelector", function() { return /* reexport */ PeriodSelector; });
__webpack_require__.d(__webpack_exports__, "ReportingMenu", function() { return /* reexport */ ReportingMenu; });
+__webpack_require__.d(__webpack_exports__, "ReportingMenuStore", function() { return /* reexport */ ReportingMenu_store; });
__webpack_require__.d(__webpack_exports__, "ReportingPagesStore", function() { return /* reexport */ ReportingPages_store; });
__webpack_require__.d(__webpack_exports__, "ReportMetadataStore", function() { return /* reexport */ ReportMetadata_store; });
__webpack_require__.d(__webpack_exports__, "WidgetsStore", function() { return /* reexport */ Widgets_store; });
@@ -1117,11 +1118,11 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
MatomoUrl_defineProperty(this, "hashQuery", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(''));
MatomoUrl_defineProperty(this, "urlParsed", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(MatomoUrl_broadcast.getValuesFromUrl("?".concat(_this.urlQuery.value), true));
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.parse(_this.urlQuery.value));
}));
MatomoUrl_defineProperty(this, "hashParsed", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(MatomoUrl_broadcast.getValuesFromUrl("?".concat(_this.hashQuery.value), true));
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.parse(_this.hashQuery.value));
}));
MatomoUrl_defineProperty(this, "parsed", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
@@ -1144,6 +1145,12 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
}
MatomoUrl_createClass(MatomoUrl, [{
+ key: "updateHashToUrl",
+ value: function updateHashToUrl(url) {
+ var $location = Matomo_Matomo.helper.getAngularDependency('$location');
+ $location.url(url);
+ }
+ }, {
key: "updateHash",
value: function updateHash(params) {
var modifiedParams = this.getFinalHashParams(params);
@@ -1172,8 +1179,8 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
key: "getFinalHashParams",
value: function getFinalHashParams(params) {
var urlParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- var paramsObj = typeof params !== 'string' ? params : MatomoUrl_broadcast.getValuesFromUrl("?".concat(params), true);
- var urlParamsObj = typeof params !== 'string' ? urlParams : MatomoUrl_broadcast.getValuesFromUrl("?".concat(urlParams), true);
+ var paramsObj = typeof params !== 'string' ? params : this.parse(params);
+ var urlParamsObj = typeof params !== 'string' ? urlParams : this.parse(urlParams);
return Object.assign({
// these params must always be present in the hash
period: urlParamsObj.period || this.parsed.value.period,
@@ -1209,6 +1216,11 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
return window.broadcast.getValueFromUrl(paramName, window.location.search);
}
}, {
+ key: "parse",
+ value: function parse(query) {
+ return MatomoUrl_broadcast.getValuesFromUrl("?".concat(query), true);
+ }
+ }, {
key: "stringify",
value: function stringify(search) {
var searchWithoutEmpty = Object.fromEntries(Object.entries(search).filter(function (_ref) {
@@ -6456,41 +6468,41 @@ function siteSelectorModelAdapter() {
}
window.angular.module('piwikApp.service').factory('siteSelectorModel', siteSelectorModelAdapter);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=template&id=9128faf0
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=template&id=fab656e6
-var QuickAccessvue_type_template_id_9128faf0_hoisted_1 = {
+var QuickAccessvue_type_template_id_fab656e6_hoisted_1 = {
ref: "root",
class: "quickAccessInside"
};
-var QuickAccessvue_type_template_id_9128faf0_hoisted_2 = ["title"];
-var QuickAccessvue_type_template_id_9128faf0_hoisted_3 = {
+var QuickAccessvue_type_template_id_fab656e6_hoisted_2 = ["title", "placeholder"];
+var QuickAccessvue_type_template_id_fab656e6_hoisted_3 = {
class: "dropdown"
};
-var QuickAccessvue_type_template_id_9128faf0_hoisted_4 = {
+var QuickAccessvue_type_template_id_fab656e6_hoisted_4 = {
class: "no-result"
};
-var QuickAccessvue_type_template_id_9128faf0_hoisted_5 = ["onClick"];
-var QuickAccessvue_type_template_id_9128faf0_hoisted_6 = ["onMouseenter", "onClick"];
-var QuickAccessvue_type_template_id_9128faf0_hoisted_7 = {
+var QuickAccessvue_type_template_id_fab656e6_hoisted_5 = ["onClick"];
+var QuickAccessvue_type_template_id_fab656e6_hoisted_6 = ["onMouseenter", "onClick"];
+var QuickAccessvue_type_template_id_fab656e6_hoisted_7 = {
class: "quickAccessMatomoSearch"
};
-var QuickAccessvue_type_template_id_9128faf0_hoisted_8 = ["onMouseenter", "onClick"];
-var QuickAccessvue_type_template_id_9128faf0_hoisted_9 = ["textContent"];
-var QuickAccessvue_type_template_id_9128faf0_hoisted_10 = {
+var QuickAccessvue_type_template_id_fab656e6_hoisted_8 = ["onMouseenter", "onClick"];
+var QuickAccessvue_type_template_id_fab656e6_hoisted_9 = ["textContent"];
+var QuickAccessvue_type_template_id_fab656e6_hoisted_10 = {
class: "quick-access-category helpCategory"
};
-var QuickAccessvue_type_template_id_9128faf0_hoisted_11 = ["href"];
-function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $setup, $data, $options) {
+var QuickAccessvue_type_template_id_fab656e6_hoisted_11 = ["href"];
+function QuickAccessvue_type_template_id_fab656e6_render(_ctx, _cache, $props, $setup, $data, $options) {
var _directive_focus_if = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("focus-if");
var _directive_focus_anywhere_but_here = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("focus-anywhere-but-here");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", QuickAccessvue_type_template_id_9128faf0_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", QuickAccessvue_type_template_id_fab656e6_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-search",
onMouseenter: _cache[0] || (_cache[0] = function ($event) {
return _ctx.searchActive = true;
})
- }, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.searchTerm || _ctx.searchActive)]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 32), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
class: "s",
onKeydown: _cache[1] || (_cache[1] = function ($event) {
return _ctx.onKeypress($event);
@@ -6504,8 +6516,9 @@ function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $
type: "text",
tabindex: "2",
title: _ctx.quickAccessTitle,
+ placeholder: _ctx.translate('General_Search'),
ref: "input"
- }, null, 40, QuickAccessvue_type_template_id_9128faf0_hoisted_2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, {}, _ctx.searchActive]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", QuickAccessvue_type_template_id_9128faf0_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_9128faf0_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_SearchNoResults')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.numMenuItems > 0 || _ctx.sites.length)]]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.menuItems, function (subcategory) {
+ }, null, 40, QuickAccessvue_type_template_id_fab656e6_hoisted_2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, {}, _ctx.searchActive]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", QuickAccessvue_type_template_id_fab656e6_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_fab656e6_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_SearchNoResults')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.numMenuItems > 0 || _ctx.sites.length)]]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.menuItems, function (subcategory) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("ul", {
key: subcategory.title
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
@@ -6515,7 +6528,7 @@ function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $
_ctx.searchMenu(_ctx.searchTerm);
}
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(subcategory.title), 9, QuickAccessvue_type_template_id_9128faf0_hoisted_5), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(subcategory.items, function (submenuEntry) {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(subcategory.title), 9, QuickAccessvue_type_template_id_fab656e6_hoisted_5), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(subcategory.items, function (submenuEntry) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["result", {
selected: submenuEntry.menuIndex === _ctx.searchIndex
@@ -6527,9 +6540,9 @@ function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $
return _ctx.selectMenuItem(submenuEntry.index);
},
key: submenuEntry.index
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(submenuEntry.name.trim()), 1)], 42, QuickAccessvue_type_template_id_9128faf0_hoisted_6);
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(submenuEntry.name.trim()), 1)], 42, QuickAccessvue_type_template_id_fab656e6_hoisted_6);
}), 128))]);
- }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", QuickAccessvue_type_template_id_9128faf0_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
+ }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", QuickAccessvue_type_template_id_fab656e6_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: "quick-access-category websiteCategory"
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Sites')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSitesSelector && _ctx.sites.length || _ctx.isLoading]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: "no-result"
@@ -6547,8 +6560,8 @@ function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $
key: site.idsite
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(site.name)
- }, null, 8, QuickAccessvue_type_template_id_9128faf0_hoisted_9)], 42, QuickAccessvue_type_template_id_9128faf0_hoisted_8)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSitesSelector && !_ctx.isLoading]]);
- }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_9128faf0_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_HelpResources')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
+ }, null, 8, QuickAccessvue_type_template_id_fab656e6_hoisted_9)], 42, QuickAccessvue_type_template_id_fab656e6_hoisted_8)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSitesSelector && !_ctx.isLoading]]);
+ }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_fab656e6_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_HelpResources')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
selected: _ctx.searchIndex === 'help'
}, "quick-access-help"]),
@@ -6558,11 +6571,11 @@ function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s=".concat(encodeURIComponent(_ctx.searchTerm)),
target: "_blank"
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreHome_SearchOnMatomo', _ctx.searchTerm)), 9, QuickAccessvue_type_template_id_9128faf0_hoisted_11)], 34)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm && _ctx.searchActive]])], 512)), [[_directive_focus_anywhere_but_here, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreHome_SearchOnMatomo', _ctx.searchTerm)), 9, QuickAccessvue_type_template_id_fab656e6_hoisted_11)], 34)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm && _ctx.searchActive]])], 512)), [[_directive_focus_anywhere_but_here, {
blur: _ctx.onBlur
}]]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=template&id=9128faf0
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=template&id=fab656e6
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=script&lang=ts
@@ -6960,7 +6973,7 @@ function scrollFirstElementIntoView(element) {
-QuickAccessvue_type_script_lang_ts.render = QuickAccessvue_type_template_id_9128faf0_render
+QuickAccessvue_type_script_lang_ts.render = QuickAccessvue_type_template_id_fab656e6_render
/* harmony default export */ var QuickAccess = (QuickAccessvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.adapter.ts
@@ -9616,33 +9629,33 @@ window.angular.module('piwikApp.service').factory('reportMetadataModel', functio
}
};
});
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=64d7392c
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=999e513a
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_1 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_1 = {
key: 0
};
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_2 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_2 = {
class: "notification system notification-error"
};
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_3 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_3 = {
key: 0,
rel: "noreferrer noopener",
target: "_blank",
href: "https://matomo.org/faq/troubleshooting/faq_19489/"
};
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_4 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_4 = {
class: "theWidgetContent",
ref: "widgetContent"
};
-function WidgetLoadervue_type_template_id_64d7392c_render(_ctx, _cache, $props, $setup, $data, $options) {
+function WidgetLoadervue_type_template_id_999e513a_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
"loading-message": _ctx.loadingMessage,
loading: _ctx.loading
- }, null, 8, ["loading-message", "loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.widgetName ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", WidgetLoadervue_type_template_id_64d7392c_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.widgetName), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_64d7392c_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequest', '', '')) + " ", 1), _ctx.hasErrorFaqLink ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", WidgetLoadervue_type_template_id_64d7392c_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequestFaqLink')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.loadingFailed]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_64d7392c_hoisted_4, null, 512)]);
+ }, null, 8, ["loading-message", "loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.widgetName ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", WidgetLoadervue_type_template_id_999e513a_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.widgetName), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_999e513a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequest', '', '')) + " ", 1), _ctx.hasErrorFaqLink ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", WidgetLoadervue_type_template_id_999e513a_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequestFaqLink')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.loadingFailed]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_999e513a_hoisted_4, null, 512)]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=64d7392c
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=999e513a
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=script&lang=ts
@@ -9816,6 +9829,7 @@ function WidgetLoadervue_type_template_id_64d7392c_render(_ctx, _cache, $props,
var $rootScope = Matomo_Matomo.helper.getAngularDependency('$rootScope');
var scope = $rootScope.$new();
_this.currentScope = scope;
+ Matomo_Matomo.helper.compileVueEntryComponents($content);
Matomo_Matomo.helper.compileAngularComponents($content, {
scope: scope
});
@@ -9853,7 +9867,7 @@ function WidgetLoadervue_type_template_id_64d7392c_render(_ctx, _cache, $props,
-WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_64d7392c_render
+WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_999e513a_render
/* harmony default export */ var WidgetLoader = (WidgetLoadervue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.adapter.ts
@@ -11977,15 +11991,7 @@ function piwikAjaxForm($parse) {
piwikAjaxForm.$inject = ['$parse'];
window.angular.module('piwikApp').directive('piwikAjaxForm', piwikAjaxForm);
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/lazyInitSingleton.ts
-function lazyInitSingleton_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function lazyInitSingleton_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function lazyInitSingleton_createClass(Constructor, protoProps, staticProps) { if (protoProps) lazyInitSingleton_defineProperties(Constructor.prototype, protoProps); if (staticProps) lazyInitSingleton_defineProperties(Constructor, staticProps); return Constructor; }
-
-function lazyInitSingleton_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/getFormattedEvolution.ts
/*!
* Matomo - free/libre analytics platform
*
@@ -11993,36 +11999,30 @@ function lazyInitSingleton_defineProperty(obj, key, value) { if (key in obj) { O
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-/* eslint-disable @typescript-eslint/ban-types */
-var LazySingletonHandler = /*#__PURE__*/function () {
- function LazySingletonHandler(type) {
- lazyInitSingleton_classCallCheck(this, LazySingletonHandler);
-
- lazyInitSingleton_defineProperty(this, "type", void 0);
-
- lazyInitSingleton_defineProperty(this, "instance", void 0);
- this.type = type;
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
+function calculateEvolution(currentValue, pastValue) {
+ var pastValueParsed = parseInt(pastValue, 10);
+ var currentValueParsed = parseInt(currentValue, 10) - pastValueParsed;
+ var evolution;
+ if (currentValueParsed === 0 || Number.isNaN(currentValueParsed)) {
+ evolution = 0;
+ } else if (pastValueParsed === 0 || Number.isNaN(pastValueParsed)) {
+ evolution = 100;
+ } else {
+ evolution = currentValueParsed / pastValueParsed * 100;
+ }
- lazyInitSingleton_createClass(LazySingletonHandler, [{
- key: "get",
- value: function get(target, key, recv) {
- if (!this.instance) {
- var Type = this.type;
- this.instance = new Type();
- }
-
- return Reflect.get(this.instance, key, recv);
- }
- }]);
+ return evolution;
+}
- return LazySingletonHandler;
-}();
+function formatEvolution(evolution) {
+ return "".concat(evolution > 0 ? Matomo_Matomo.numbers.symbolPlus : '').concat(Math.round(evolution), "}%");
+}
-function lazyInitSingleton(type) {
- return new Proxy({}, new LazySingletonHandler(type));
+function getFormattedEvolution(currentValue, pastValue) {
+ var evolution = calculateEvolution(currentValue, pastValue);
+ return formatEvolution(evolution);
}
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ActivityIndicator/ActivityIndicator.adapter.ts
/*!
@@ -12208,6 +12208,7 @@ function deleteCookie(name) {
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index 81cd330243..4365bf08ec 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -4,7 +4,7 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createVueApp",(function(){return ut})),n.d(t,"useExternalPluginComponent",(function(){return _n})),n.d(t,"DirectiveUtilities",(function(){return _t})),n.d(t,"debounce",(function(){return Ji})),n.d(t,"lazyInitSingleton",(function(){return Pu})),n.d(t,"createAngularJsAdapter",(function(){return jt})),n.d(t,"transformAngularJsBoolAttr",(function(){return kt})),n.d(t,"transformAngularJsIntAttr",(function(){return St})),n.d(t,"removeAngularJsSpecificProperties",(function(){return Ot})),n.d(t,"clone",(function(){return Ct})),n.d(t,"cloneThenApply",(function(){return Et})),n.d(t,"activityIndicatorAdapter",(function(){return Vu})),n.d(t,"ActivityIndicator",(function(){return ho})),n.d(t,"translate",(function(){return C})),n.d(t,"Alert",(function(){return st})),n.d(t,"AjaxHelper",(function(){return Xe})),n.d(t,"setCookie",(function(){return Nu})),n.d(t,"getCookie",(function(){return Tu})),n.d(t,"deleteCookie",(function(){return Au})),n.d(t,"MatomoUrl",(function(){return Ce})),n.d(t,"Matomo",(function(){return S})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return G})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return ce})),n.d(t,"Range",(function(){return _})),n.d(t,"format",(function(){return E})),n.d(t,"getToday",(function(){return D})),n.d(t,"parseDate",(function(){return P})),n.d(t,"todayIsInRange",(function(){return V})),n.d(t,"DropdownMenu",(function(){return Dt})),n.d(t,"FocusAnywhereButHere",(function(){return xt})),n.d(t,"FocusIf",(function(){return Lt})),n.d(t,"Tooltips",(function(){return Lr})),n.d(t,"MatomoDialog",(function(){return Sn})),n.d(t,"ExpandOnClick",(function(){return Yt})),n.d(t,"ExpandOnHover",(function(){return nn})),n.d(t,"ShowSensitiveData",(function(){return ln})),n.d(t,"DropdownButton",(function(){return dn})),n.d(t,"SelectOnFocus",(function(){return gn})),n.d(t,"SideNav",(function(){return yn})),n.d(t,"EnrichedHeadline",(function(){return Un})),n.d(t,"ContentBlock",(function(){return er})),n.d(t,"Comparisons",(function(){return Rr})),n.d(t,"MenuDropdown",(function(){return ei})),n.d(t,"DatePicker",(function(){return li})),n.d(t,"DateRangePicker",(function(){return mi})),n.d(t,"PeriodDatePicker",(function(){return bi})),n.d(t,"Notification",(function(){return al})),n.d(t,"NotificationGroup",(function(){return yl})),n.d(t,"NotificationsStore",(function(){return fl})),n.d(t,"SitesStore",(function(){return qi})),n.d(t,"SiteSelector",(function(){return zi})),n.d(t,"QuickAccess",(function(){return da})),n.d(t,"FieldArray",(function(){return Ca})),n.d(t,"MultiPairField",(function(){return Ha})),n.d(t,"PeriodSelector",(function(){return Vo})),n.d(t,"ReportingMenu",(function(){return Xl})),n.d(t,"ReportingPagesStore",(function(){return Cl})),n.d(t,"ReportMetadataStore",(function(){return lc})),n.d(t,"WidgetsStore",(function(){return Yl})),n.d(t,"WidgetLoader",(function(){return fc})),n.d(t,"WidgetContainer",(function(){return Pc})),n.d(t,"WidgetByDimensionContainer",(function(){return qc})),n.d(t,"Widget",(function(){return Kc})),n.d(t,"ReportingPage",(function(){return ys})),n.d(t,"ReportExport",(function(){return Ks})),n.d(t,"Sparkline",(function(){return nu})),n.d(t,"Progressbar",(function(){return su})),n.d(t,"ContentIntro",(function(){return uu})),n.d(t,"ContentTable",(function(){return pu})),n.d(t,"AjaxForm",(function(){return yu})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}n("2342");var a=n("8bbf");function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createVueApp",(function(){return ut})),n.d(t,"useExternalPluginComponent",(function(){return _n})),n.d(t,"DirectiveUtilities",(function(){return _t})),n.d(t,"debounce",(function(){return Ji})),n.d(t,"getFormattedEvolution",(function(){return Cu})),n.d(t,"createAngularJsAdapter",(function(){return jt})),n.d(t,"transformAngularJsBoolAttr",(function(){return kt})),n.d(t,"transformAngularJsIntAttr",(function(){return St})),n.d(t,"removeAngularJsSpecificProperties",(function(){return Ot})),n.d(t,"clone",(function(){return Ct})),n.d(t,"cloneThenApply",(function(){return Et})),n.d(t,"activityIndicatorAdapter",(function(){return Eu})),n.d(t,"ActivityIndicator",(function(){return ho})),n.d(t,"translate",(function(){return C})),n.d(t,"Alert",(function(){return st})),n.d(t,"AjaxHelper",(function(){return Xe})),n.d(t,"setCookie",(function(){return Du})),n.d(t,"getCookie",(function(){return Pu})),n.d(t,"deleteCookie",(function(){return Vu})),n.d(t,"MatomoUrl",(function(){return Ce})),n.d(t,"Matomo",(function(){return S})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return G})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return ce})),n.d(t,"Range",(function(){return _})),n.d(t,"format",(function(){return E})),n.d(t,"getToday",(function(){return D})),n.d(t,"parseDate",(function(){return P})),n.d(t,"todayIsInRange",(function(){return V})),n.d(t,"DropdownMenu",(function(){return Dt})),n.d(t,"FocusAnywhereButHere",(function(){return xt})),n.d(t,"FocusIf",(function(){return Lt})),n.d(t,"Tooltips",(function(){return Lr})),n.d(t,"MatomoDialog",(function(){return Sn})),n.d(t,"ExpandOnClick",(function(){return Yt})),n.d(t,"ExpandOnHover",(function(){return nn})),n.d(t,"ShowSensitiveData",(function(){return ln})),n.d(t,"DropdownButton",(function(){return dn})),n.d(t,"SelectOnFocus",(function(){return gn})),n.d(t,"SideNav",(function(){return yn})),n.d(t,"EnrichedHeadline",(function(){return Un})),n.d(t,"ContentBlock",(function(){return er})),n.d(t,"Comparisons",(function(){return Rr})),n.d(t,"MenuDropdown",(function(){return ei})),n.d(t,"DatePicker",(function(){return li})),n.d(t,"DateRangePicker",(function(){return mi})),n.d(t,"PeriodDatePicker",(function(){return bi})),n.d(t,"Notification",(function(){return al})),n.d(t,"NotificationGroup",(function(){return yl})),n.d(t,"NotificationsStore",(function(){return fl})),n.d(t,"SitesStore",(function(){return qi})),n.d(t,"SiteSelector",(function(){return zi})),n.d(t,"QuickAccess",(function(){return da})),n.d(t,"FieldArray",(function(){return Ca})),n.d(t,"MultiPairField",(function(){return Ha})),n.d(t,"PeriodSelector",(function(){return Vo})),n.d(t,"ReportingMenu",(function(){return Xl})),n.d(t,"ReportingMenuStore",(function(){return $l})),n.d(t,"ReportingPagesStore",(function(){return Cl})),n.d(t,"ReportMetadataStore",(function(){return lc})),n.d(t,"WidgetsStore",(function(){return Yl})),n.d(t,"WidgetLoader",(function(){return fc})),n.d(t,"WidgetContainer",(function(){return Pc})),n.d(t,"WidgetByDimensionContainer",(function(){return qc})),n.d(t,"Widget",(function(){return Kc})),n.d(t,"ReportingPage",(function(){return ys})),n.d(t,"ReportExport",(function(){return Ks})),n.d(t,"Sparkline",(function(){return nu})),n.d(t,"Progressbar",(function(){return su})),n.d(t,"ContentIntro",(function(){return uu})),n.d(t,"ContentTable",(function(){return pu})),n.d(t,"AjaxForm",(function(){return yu})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}n("2342");var a=n("8bbf");function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
@@ -79,7 +79,7 @@ function se(e,t){return fe(e)||me(e,t)||de(e,t)||ue()}function ue(){throw new Ty
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("year",ce);var ye=window,we=ye.piwik,Oe=ye.broadcast;function je(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ke=function(){function e(){var t=this;he(this,e),be(this,"urlQuery",Object(a["ref"])("")),be(this,"hashQuery",Object(a["ref"])("")),be(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(Oe.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),be(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(Oe.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),be(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(Object.assign(Object.assign({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),S.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return ve(e,[{key:"updateHash",value:function(e){var t=this.getFinalHashParams(e),n=this.stringify(t),r=S.helper.getAngularDependency("$location");r.search(n);var i=S.helper.getAngularDependency("$timeout");i()}},{key:"updateUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?this.stringify(e):e,r=Object.keys(t).length?this.getFinalHashParams(t,e):{},i=this.stringify(r),a="?".concat(n);i.length&&(a="".concat(a,"#?").concat(i)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,a)}},{key:"getFinalHashParams",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?e:Oe.getValuesFromUrl("?".concat(e),!0),r="string"!==typeof e?t:Oe.getValuesFromUrl("?".concat(t),!0);return Object.assign({period:r.period||this.parsed.value.period,date:r.date||this.parsed.value.date,segment:r.segment||this.parsed.value.segment},n)}},{key:"updateLocation",value:function(e){S.helper.isAngularRenderingThePage()?this.updateHash(e):this.updateUrl(e)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){var t=Object.fromEntries(Object.entries(e).filter((function(e){var t=se(e,2),n=t[1];return""!==n&&null!==n&&void 0!==n})));return $.param(t).replace(/%5B%5D/g,"[]").replace(/%2C/g,",")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(je(t,e)&&(we.period!==t||we.currentDateString!==e)){we.period=t;var n=p.parse(t,e).getDateRange();we.startDateString=E(n[0]),we.endDateString=E(n[1]),we.updateDateInTitle(e,t),"range"===we.period&&(e="".concat(we.startDateString,",").concat(we.endDateString)),we.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),Se=new ke,Ce=Se;
+ */p.addCustomPeriod("year",ce);var ye=window,we=ye.piwik,Oe=ye.broadcast;function je(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ke=function(){function e(){var t=this;he(this,e),be(this,"urlQuery",Object(a["ref"])("")),be(this,"hashQuery",Object(a["ref"])("")),be(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(t.parse(t.urlQuery.value))}))),be(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(t.parse(t.hashQuery.value))}))),be(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(Object.assign(Object.assign({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),S.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return ve(e,[{key:"updateHashToUrl",value:function(e){var t=S.helper.getAngularDependency("$location");t.url(e)}},{key:"updateHash",value:function(e){var t=this.getFinalHashParams(e),n=this.stringify(t),r=S.helper.getAngularDependency("$location");r.search(n);var i=S.helper.getAngularDependency("$timeout");i()}},{key:"updateUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?this.stringify(e):e,r=Object.keys(t).length?this.getFinalHashParams(t,e):{},i=this.stringify(r),a="?".concat(n);i.length&&(a="".concat(a,"#?").concat(i)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,a)}},{key:"getFinalHashParams",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?e:this.parse(e),r="string"!==typeof e?t:this.parse(t);return Object.assign({period:r.period||this.parsed.value.period,date:r.date||this.parsed.value.date,segment:r.segment||this.parsed.value.segment},n)}},{key:"updateLocation",value:function(e){S.helper.isAngularRenderingThePage()?this.updateHash(e):this.updateUrl(e)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"parse",value:function(e){return Oe.getValuesFromUrl("?".concat(e),!0)}},{key:"stringify",value:function(e){var t=Object.fromEntries(Object.entries(e).filter((function(e){var t=se(e,2),n=t[1];return""!==n&&null!==n&&void 0!==n})));return $.param(t).replace(/%5B%5D/g,"[]").replace(/%2C/g,",")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(je(t,e)&&(we.period!==t||we.currentDateString!==e)){we.period=t;var n=p.parse(t,e).getDateRange();we.startDateString=E(n[0]),we.endDateString=E(n[1]),we.updateDateInTitle(e,t),"range"===we.period&&(e="".concat(we.startDateString,",").concat(we.endDateString)),we.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),Se=new ke,Ce=Se;
/*!
* Matomo - free/libre analytics platform
*
@@ -343,7 +343,7 @@ function wn(e){return{restrict:"A",priority:10,link:function(t,n,r){var i={insta
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Yi(){return{get initialSites(){return qi.initialSites.value},loadSite:qi.loadSite.bind(qi),loadInitialSites:function(){return Et(qi.loadInitialSites())},searchSite:function(){return Et(qi.searchSite.apply(qi,arguments))}}}window.angular.module("piwikApp.service").factory("siteSelectorModel",Yi);var Qi={ref:"root",class:"quickAccessInside"},Ki=["title"],Xi={class:"dropdown"},Zi={class:"no-result"},ea=["onClick"],ta=["onMouseenter","onClick"],na={class:"quickAccessMatomoSearch"},ra=["onMouseenter","onClick"],ia=["textContent"],aa={class:"quick-access-category helpCategory"},oa=["href"];function la(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("focus-if"),c=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=function(t){return e.searchActive=!0})},null,544),[[a["vShow"],!(e.searchTerm||e.searchActive)]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"s",onKeydown:t[1]||(t[1]=function(t){return e.onKeypress(t)}),onFocus:t[2]||(t[2]=function(t){return e.searchActive=!0}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),type:"text",tabindex:"2",title:e.quickAccessTitle,ref:"input"},null,40,Ki),[[a["vModelText"],e.searchTerm],[l,{},e.searchActive]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Xi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",Zi,Object(a["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[a["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menuItems,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("ul",{key:t.title},[Object(a["createElementVNode"])("li",{class:"quick-access-category",onClick:function(n){e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(a["toDisplayString"])(t.title),9,ea),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.items,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:t.menuIndex===e.searchIndex}]),onMouseenter:function(n){return e.searchIndex=t.menuIndex},onClick:function(n){return e.selectMenuItem(t.index)},key:t.index},[Object(a["createElementVNode"])("a",null,Object(a["toDisplayString"])(t.name.trim()),1)],42,ta)})),128))])})),128)),Object(a["createElementVNode"])("ul",na,[Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(a["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[a["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"no-result"},Object(a["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[a["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(t,n){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:e.numMenuItems+n===e.searchIndex}]),onMouseenter:function(t){return e.searchIndex=e.numMenuItems+n},onClick:function(n){return e.selectSite(t.idsite)},key:t.idsite},[Object(a["createElementVNode"])("a",{textContent:Object(a["toDisplayString"])(t.name)},null,8,ia)],42,ra)),[[a["vShow"],e.hasSitesSelector&&!e.isLoading]])})),128))]),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",aa,Object(a["toDisplayString"])(e.translate("General_HelpResources")),1),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=function(t){return e.searchIndex="help"})},[Object(a["createElementVNode"])("a",{href:"https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s=".concat(encodeURIComponent(e.searchTerm)),target:"_blank"},Object(a["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,oa)],34)])],512),[[a["vShow"],e.searchTerm&&e.searchActive]])],512)),[[c,{blur:e.onBlur}]])}function ca(e){var t=e.getBoundingClientRect(),n=window.$(window);return t.top>=0&&t.left>=0&&t.bottom<=n.height()&&t.right<=n.width()}function sa(e){e&&e.scrollIntoView&&e.scrollIntoView()}var ua=Object(a["defineComponent"])({directives:{FocusAnywhereButHere:xt,FocusIf:Lt},watch:{searchActive:function(e){var t=this.$refs.root;if(t&&t.parentElement){var n=t.parentElement.classList;n.toggle("active",e),n.toggle("expanded",e)}}},mounted:function(){var e=this,t=this.$refs.root;t&&t.parentElement&&t.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),S.helper.registerShortcut("f",C("CoreHome_ShortcutSearch"),(function(t){t.altKey||(t.preventDefault(),sa(e.$refs.root),e.activateSearch())}))},data:function(){var e=!!document.querySelector(".segmentEditorPanel");return{menuItems:[],numMenuItems:0,searchActive:!1,searchTerm:"",searchIndex:0,menuIndexCounter:-1,topMenuItems:null,leftMenuItems:null,segmentItems:null,hasSegmentSelector:e,sites:[],isLoading:!1}},created:function(){this.searchMenu=Ji(this.searchMenu.bind(this))},computed:{hasSitesSelector:function(){return!!document.querySelector(".top_controls [piwik-siteselector]")},quickAccessTitle:function(){var e="",t=[C("CoreHome_MenuEntries")];this.hasSegmentSelector&&t.push(C("CoreHome_Segments")),this.hasSitesSelector&&t.push(C("SitesManager_Sites"));while(t.length)e+=t.shift(),t.length>=2?e+=", ":1===t.length&&(e+=" ".concat(C("General_And")," "));return C("CoreHome_QuickAccessTitle",e)}},emits:["itemSelected","blur"],methods:{onKeypress:function(e){var t=this,n=this.searchTerm&&this.searchActive,r=9===e.which,i=27===e.which;38===e.which?(this.highlightPreviousItem(),e.preventDefault()):40===e.which?(this.highlightNextItem(),e.preventDefault()):13===e.which?this.clickQuickAccessMenuItem():r&&n||i&&n?this.deactivateSearch():setTimeout((function(){t.searchActive=!0,t.searchMenu(t.searchTerm)}))},highlightPreviousItem:function(){this.searchIndex-1<0?this.searchIndex=0:this.searchIndex-=1,this.makeSureSelectedItemIsInViewport()},highlightNextItem:function(){var e=this.$refs.root.querySelectorAll("li.result").length;e<=this.searchIndex+1?this.searchIndex=e-1:this.searchIndex+=1,this.makeSureSelectedItemIsInViewport()},clickQuickAccessMenuItem:function(){var e=this,t=this.getCurrentlySelectedElement();t&&setTimeout((function(){t.click(),e.$emit("itemSelected",t)}),20)},deactivateSearch:function(){this.searchTerm="",this.searchActive=!1,this.$refs.input&&this.$refs.input.blur()},makeSureSelectedItemIsInViewport:function(){var e=this.getCurrentlySelectedElement();e&&!ca(e)&&sa(e)},getCurrentlySelectedElement:function(){var e=this.$refs.root.querySelectorAll("li.result");if(e&&e.length&&e.item(this.searchIndex))return e.item(this.searchIndex)},searchMenu:function(e){var t=this,n=e.toLowerCase(),r=-1,i={},a=[],o=function(e){var t=Object.assign({},e);r+=1,t.menuIndex=r;var n=t.category;n in i||(a.push({title:n,items:[]}),i[n]=a.length-1);var o=i[n];a[o].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,qi.searchSite(n).then((function(e){e&&(t.sites=e)})).finally((function(){t.isLoading=!1})));var l=function(e){return-1!==e.name.toLowerCase().indexOf(n)||-1!==e.category.toLowerCase().indexOf(n)};null===this.topMenuItems&&(this.topMenuItems=this.getTopMenuItems()),null===this.leftMenuItems&&(this.leftMenuItems=this.getLeftMenuItems()),null===this.segmentItems&&(this.segmentItems=this.getSegmentItems());var c=this.topMenuItems.filter(l),s=this.leftMenuItems.filter(l),u=this.segmentItems.filter(l);c.forEach(o),s.forEach(o),u.forEach(o),this.numMenuItems=c.length+s.length+u.length,this.menuItems=a},resetSearchIndex:function(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite:function(e){qi.loadSite(e)},selectMenuItem:function(e){var t=document.querySelector("[quick_access='".concat(e,"']"));if(t){this.deactivateSearch();var n=t.getAttribute("href");if(n&&n.length>10&&t&&t.click)try{t.click()}catch(r){window.$(t).click()}else window.$(t).click()}},onBlur:function(){this.searchActive=!1,this.$emit("blur")},activateSearch:function(){this.searchActive=!0},getTopMenuItems:function(){var e=this,t=C("CoreHome_Menu"),n=[];return document.querySelectorAll("nav .sidenav li > a").forEach((function(r){var i,a,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o||(o=null===(a=r.getAttribute("title"))||void 0===a?void 0:a.trim());o&&(n.push({name:o,index:e.menuIndexCounter+=1,category:t}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n},getLeftMenuItems:function(){var e=this,t=[];return document.querySelectorAll("#secondNavBar .menuTab").forEach((function(n){var r,i=window.$(n).find("> .item"),a=(null===(r=i[0])||void 0===r?void 0:r.innerText.trim())||"";a&&-1!==a.lastIndexOf("\n")&&(a=a.substr(0,a.lastIndexOf("\n")).trim()),window.$(n).find("li .item").each((function(n,r){var i,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o&&(t.push({name:o,category:a,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))}))})),t},getSegmentItems:function(){var e=this;if(!this.hasSegmentSelector)return[];var t=C("CoreHome_Segments"),n=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach((function(r){var i,a,o=null===(i=r.querySelector(".segname"))||void 0===i||null===(a=i.textContent)||void 0===a?void 0:a.trim();o&&(n.push({name:o,category:t,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n}}});ua.render=la;var da=ua;
+function Yi(){return{get initialSites(){return qi.initialSites.value},loadSite:qi.loadSite.bind(qi),loadInitialSites:function(){return Et(qi.loadInitialSites())},searchSite:function(){return Et(qi.searchSite.apply(qi,arguments))}}}window.angular.module("piwikApp.service").factory("siteSelectorModel",Yi);var Qi={ref:"root",class:"quickAccessInside"},Ki=["title","placeholder"],Xi={class:"dropdown"},Zi={class:"no-result"},ea=["onClick"],ta=["onMouseenter","onClick"],na={class:"quickAccessMatomoSearch"},ra=["onMouseenter","onClick"],ia=["textContent"],aa={class:"quick-access-category helpCategory"},oa=["href"];function la(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("focus-if"),c=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qi,[Object(a["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=function(t){return e.searchActive=!0})},null,32),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"s",onKeydown:t[1]||(t[1]=function(t){return e.onKeypress(t)}),onFocus:t[2]||(t[2]=function(t){return e.searchActive=!0}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),type:"text",tabindex:"2",title:e.quickAccessTitle,placeholder:e.translate("General_Search"),ref:"input"},null,40,Ki),[[a["vModelText"],e.searchTerm],[l,{},e.searchActive]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Xi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",Zi,Object(a["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[a["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menuItems,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("ul",{key:t.title},[Object(a["createElementVNode"])("li",{class:"quick-access-category",onClick:function(n){e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(a["toDisplayString"])(t.title),9,ea),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.items,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:t.menuIndex===e.searchIndex}]),onMouseenter:function(n){return e.searchIndex=t.menuIndex},onClick:function(n){return e.selectMenuItem(t.index)},key:t.index},[Object(a["createElementVNode"])("a",null,Object(a["toDisplayString"])(t.name.trim()),1)],42,ta)})),128))])})),128)),Object(a["createElementVNode"])("ul",na,[Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(a["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[a["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"no-result"},Object(a["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[a["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(t,n){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:e.numMenuItems+n===e.searchIndex}]),onMouseenter:function(t){return e.searchIndex=e.numMenuItems+n},onClick:function(n){return e.selectSite(t.idsite)},key:t.idsite},[Object(a["createElementVNode"])("a",{textContent:Object(a["toDisplayString"])(t.name)},null,8,ia)],42,ra)),[[a["vShow"],e.hasSitesSelector&&!e.isLoading]])})),128))]),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",aa,Object(a["toDisplayString"])(e.translate("General_HelpResources")),1),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=function(t){return e.searchIndex="help"})},[Object(a["createElementVNode"])("a",{href:"https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s=".concat(encodeURIComponent(e.searchTerm)),target:"_blank"},Object(a["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,oa)],34)])],512),[[a["vShow"],e.searchTerm&&e.searchActive]])],512)),[[c,{blur:e.onBlur}]])}function ca(e){var t=e.getBoundingClientRect(),n=window.$(window);return t.top>=0&&t.left>=0&&t.bottom<=n.height()&&t.right<=n.width()}function sa(e){e&&e.scrollIntoView&&e.scrollIntoView()}var ua=Object(a["defineComponent"])({directives:{FocusAnywhereButHere:xt,FocusIf:Lt},watch:{searchActive:function(e){var t=this.$refs.root;if(t&&t.parentElement){var n=t.parentElement.classList;n.toggle("active",e),n.toggle("expanded",e)}}},mounted:function(){var e=this,t=this.$refs.root;t&&t.parentElement&&t.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),S.helper.registerShortcut("f",C("CoreHome_ShortcutSearch"),(function(t){t.altKey||(t.preventDefault(),sa(e.$refs.root),e.activateSearch())}))},data:function(){var e=!!document.querySelector(".segmentEditorPanel");return{menuItems:[],numMenuItems:0,searchActive:!1,searchTerm:"",searchIndex:0,menuIndexCounter:-1,topMenuItems:null,leftMenuItems:null,segmentItems:null,hasSegmentSelector:e,sites:[],isLoading:!1}},created:function(){this.searchMenu=Ji(this.searchMenu.bind(this))},computed:{hasSitesSelector:function(){return!!document.querySelector(".top_controls [piwik-siteselector]")},quickAccessTitle:function(){var e="",t=[C("CoreHome_MenuEntries")];this.hasSegmentSelector&&t.push(C("CoreHome_Segments")),this.hasSitesSelector&&t.push(C("SitesManager_Sites"));while(t.length)e+=t.shift(),t.length>=2?e+=", ":1===t.length&&(e+=" ".concat(C("General_And")," "));return C("CoreHome_QuickAccessTitle",e)}},emits:["itemSelected","blur"],methods:{onKeypress:function(e){var t=this,n=this.searchTerm&&this.searchActive,r=9===e.which,i=27===e.which;38===e.which?(this.highlightPreviousItem(),e.preventDefault()):40===e.which?(this.highlightNextItem(),e.preventDefault()):13===e.which?this.clickQuickAccessMenuItem():r&&n||i&&n?this.deactivateSearch():setTimeout((function(){t.searchActive=!0,t.searchMenu(t.searchTerm)}))},highlightPreviousItem:function(){this.searchIndex-1<0?this.searchIndex=0:this.searchIndex-=1,this.makeSureSelectedItemIsInViewport()},highlightNextItem:function(){var e=this.$refs.root.querySelectorAll("li.result").length;e<=this.searchIndex+1?this.searchIndex=e-1:this.searchIndex+=1,this.makeSureSelectedItemIsInViewport()},clickQuickAccessMenuItem:function(){var e=this,t=this.getCurrentlySelectedElement();t&&setTimeout((function(){t.click(),e.$emit("itemSelected",t)}),20)},deactivateSearch:function(){this.searchTerm="",this.searchActive=!1,this.$refs.input&&this.$refs.input.blur()},makeSureSelectedItemIsInViewport:function(){var e=this.getCurrentlySelectedElement();e&&!ca(e)&&sa(e)},getCurrentlySelectedElement:function(){var e=this.$refs.root.querySelectorAll("li.result");if(e&&e.length&&e.item(this.searchIndex))return e.item(this.searchIndex)},searchMenu:function(e){var t=this,n=e.toLowerCase(),r=-1,i={},a=[],o=function(e){var t=Object.assign({},e);r+=1,t.menuIndex=r;var n=t.category;n in i||(a.push({title:n,items:[]}),i[n]=a.length-1);var o=i[n];a[o].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,qi.searchSite(n).then((function(e){e&&(t.sites=e)})).finally((function(){t.isLoading=!1})));var l=function(e){return-1!==e.name.toLowerCase().indexOf(n)||-1!==e.category.toLowerCase().indexOf(n)};null===this.topMenuItems&&(this.topMenuItems=this.getTopMenuItems()),null===this.leftMenuItems&&(this.leftMenuItems=this.getLeftMenuItems()),null===this.segmentItems&&(this.segmentItems=this.getSegmentItems());var c=this.topMenuItems.filter(l),s=this.leftMenuItems.filter(l),u=this.segmentItems.filter(l);c.forEach(o),s.forEach(o),u.forEach(o),this.numMenuItems=c.length+s.length+u.length,this.menuItems=a},resetSearchIndex:function(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite:function(e){qi.loadSite(e)},selectMenuItem:function(e){var t=document.querySelector("[quick_access='".concat(e,"']"));if(t){this.deactivateSearch();var n=t.getAttribute("href");if(n&&n.length>10&&t&&t.click)try{t.click()}catch(r){window.$(t).click()}else window.$(t).click()}},onBlur:function(){this.searchActive=!1,this.$emit("blur")},activateSearch:function(){this.searchActive=!0},getTopMenuItems:function(){var e=this,t=C("CoreHome_Menu"),n=[];return document.querySelectorAll("nav .sidenav li > a").forEach((function(r){var i,a,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o||(o=null===(a=r.getAttribute("title"))||void 0===a?void 0:a.trim());o&&(n.push({name:o,index:e.menuIndexCounter+=1,category:t}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n},getLeftMenuItems:function(){var e=this,t=[];return document.querySelectorAll("#secondNavBar .menuTab").forEach((function(n){var r,i=window.$(n).find("> .item"),a=(null===(r=i[0])||void 0===r?void 0:r.innerText.trim())||"";a&&-1!==a.lastIndexOf("\n")&&(a=a.substr(0,a.lastIndexOf("\n")).trim()),window.$(n).find("li .item").each((function(n,r){var i,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o&&(t.push({name:o,category:a,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))}))})),t},getSegmentItems:function(){var e=this;if(!this.hasSegmentSelector)return[];var t=C("CoreHome_Segments"),n=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach((function(r){var i,a,o=null===(i=r.querySelector(".segname"))||void 0===i||null===(a=i.textContent)||void 0===a?void 0:a.trim();o&&(n.push({name:o,category:t,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n}}});ua.render=la;var da=ua;
/*!
* Matomo - free/libre analytics platform
*
@@ -461,7 +461,7 @@ function tc(){return{get pages(){return Cl.pages.value},findPageInCategory:funct
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-window.angular.module("piwikApp.service").factory("reportMetadataModel",(function(){return{get reports(){return lc.reports.value},findReport:lc.findReport.bind(lc),fetchReportMetadata:function(){return lc.fetchReportMetadata().then((function(e){return Et(e)}))}}}));var cc={key:0},sc={class:"notification system notification-error"},uc={key:0,rel:"noreferrer noopener",target:"_blank",href:"https://matomo.org/faq/troubleshooting/faq_19489/"},dc={class:"theWidgetContent",ref:"widgetContent"};function pc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("ActivityIndicator");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createVNode"])(l,{"loading-message":e.loadingMessage,loading:e.loading},null,8,["loading-message","loading"]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[e.widgetName?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",cc,Object(a["toDisplayString"])(e.widgetName),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",sc,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",uc,Object(a["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),1)):Object(a["createCommentVNode"])("",!0)])],512),[[a["vShow"],e.loadingFailed]]),Object(a["createElementVNode"])("div",dc,null,512)])}var mc=Object(a["defineComponent"])({props:{widgetParams:Object,widgetName:String},components:{ActivityIndicator:ho},data:function(){return{loading:!1,loadingFailed:!1,changeCounter:0,currentScope:null,lastWidgetAbortController:null}},watch:{widgetParams:function(e){e&&this.loadWidgetUrl(e,this.changeCounter+=1)}},computed:{loadingMessage:function(){return this.widgetName?C("General_LoadingPopover",this.widgetName):C("General_LoadingData")},hasErrorFaqLink:function(){var e=S.config.enable_general_settings_admin,t=S.config.enable_plugins_admin;return S.hasSuperUserAccess&&(e||t)}},mounted:function(){this.widgetParams&&this.loadWidgetUrl(this.widgetParams,this.changeCounter+=1)},unmounted:function(){this.cleanupLastWidgetContent()},methods:{abortHttpRequestIfNeeded:function(){this.lastWidgetAbortController&&(this.lastWidgetAbortController.abort(),this.lastWidgetAbortController=null)},cleanupLastWidgetContent:function(){var e=this.$refs.widgetContent;e&&(e.innerHTML=""),this.currentScope&&this.currentScope.$destroy()},getWidgetUrl:function(e){var t=Ce.parsed.value,n=Object.assign({},e||{}),r=Object.keys(Object.assign(Object.assign({},Ce.hashParsed.value),{},{idSite:"",period:"",date:"",segment:"",widget:""}));return r.forEach((function(e){"category"!==e&&"subcategory"!==e&&(e in n||(n[e]=t[e]))})),Or.isComparisonEnabled()&&(n=Object.assign(Object.assign({},n),{},{comparePeriods:t.comparePeriods,compareDates:t.compareDates,compareSegments:t.compareSegments})),e&&"showtitle"in e||(n.showtitle="1"),S.shouldPropagateTokenAuth&&t.token_auth&&(S.broadcast.isWidgetizeRequestWithoutSession()||(n.force_api_session="1"),n.token_auth=t.token_auth),n.random=Math.floor(1e4*Math.random()),n},loadWidgetUrl:function(e,t){var n=this;this.loading=!0,this.abortHttpRequestIfNeeded(),this.cleanupLastWidgetContent(),this.lastWidgetAbortController=new AbortController,Xe.fetch(this.getWidgetUrl(e),{format:"html",headers:{"X-Requested-With":"XMLHttpRequest"},abortController:this.lastWidgetAbortController}).then((function(r){if(t===n.changeCounter&&r&&"string"===typeof r){n.lastWidgetAbortController=null,n.loading=!1,n.loadingFailed=!1;var i=n.$refs.widgetContent;window.$(i).html(r);var a=window.$(i).children();if(n.widgetName){var o=a.find("> .card-content .card-title");o.length||(o=a.find("> h2")),o.length&&o.html(S.helper.htmlEntities(n.widgetName))}var l=S.helper.getAngularDependency("$rootScope"),c=l.$new();n.currentScope=c,S.helper.compileAngularComponents(a,{scope:c}),fl.parseNotificationDivs(),setTimeout((function(){S.postEvent("widget:loaded",{parameters:e,element:a})}))}})).catch((function(e){t===n.changeCounter&&(n.lastWidgetAbortController=null,n.cleanupLastWidgetContent(),n.loading=!1,"abort"!==e.xhrStatus&&(n.loadingFailed=!0))}))}}});mc.render=pc;var fc=mc;
+window.angular.module("piwikApp.service").factory("reportMetadataModel",(function(){return{get reports(){return lc.reports.value},findReport:lc.findReport.bind(lc),fetchReportMetadata:function(){return lc.fetchReportMetadata().then((function(e){return Et(e)}))}}}));var cc={key:0},sc={class:"notification system notification-error"},uc={key:0,rel:"noreferrer noopener",target:"_blank",href:"https://matomo.org/faq/troubleshooting/faq_19489/"},dc={class:"theWidgetContent",ref:"widgetContent"};function pc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("ActivityIndicator");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createVNode"])(l,{"loading-message":e.loadingMessage,loading:e.loading},null,8,["loading-message","loading"]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[e.widgetName?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",cc,Object(a["toDisplayString"])(e.widgetName),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",sc,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",uc,Object(a["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),1)):Object(a["createCommentVNode"])("",!0)])],512),[[a["vShow"],e.loadingFailed]]),Object(a["createElementVNode"])("div",dc,null,512)])}var mc=Object(a["defineComponent"])({props:{widgetParams:Object,widgetName:String},components:{ActivityIndicator:ho},data:function(){return{loading:!1,loadingFailed:!1,changeCounter:0,currentScope:null,lastWidgetAbortController:null}},watch:{widgetParams:function(e){e&&this.loadWidgetUrl(e,this.changeCounter+=1)}},computed:{loadingMessage:function(){return this.widgetName?C("General_LoadingPopover",this.widgetName):C("General_LoadingData")},hasErrorFaqLink:function(){var e=S.config.enable_general_settings_admin,t=S.config.enable_plugins_admin;return S.hasSuperUserAccess&&(e||t)}},mounted:function(){this.widgetParams&&this.loadWidgetUrl(this.widgetParams,this.changeCounter+=1)},unmounted:function(){this.cleanupLastWidgetContent()},methods:{abortHttpRequestIfNeeded:function(){this.lastWidgetAbortController&&(this.lastWidgetAbortController.abort(),this.lastWidgetAbortController=null)},cleanupLastWidgetContent:function(){var e=this.$refs.widgetContent;e&&(e.innerHTML=""),this.currentScope&&this.currentScope.$destroy()},getWidgetUrl:function(e){var t=Ce.parsed.value,n=Object.assign({},e||{}),r=Object.keys(Object.assign(Object.assign({},Ce.hashParsed.value),{},{idSite:"",period:"",date:"",segment:"",widget:""}));return r.forEach((function(e){"category"!==e&&"subcategory"!==e&&(e in n||(n[e]=t[e]))})),Or.isComparisonEnabled()&&(n=Object.assign(Object.assign({},n),{},{comparePeriods:t.comparePeriods,compareDates:t.compareDates,compareSegments:t.compareSegments})),e&&"showtitle"in e||(n.showtitle="1"),S.shouldPropagateTokenAuth&&t.token_auth&&(S.broadcast.isWidgetizeRequestWithoutSession()||(n.force_api_session="1"),n.token_auth=t.token_auth),n.random=Math.floor(1e4*Math.random()),n},loadWidgetUrl:function(e,t){var n=this;this.loading=!0,this.abortHttpRequestIfNeeded(),this.cleanupLastWidgetContent(),this.lastWidgetAbortController=new AbortController,Xe.fetch(this.getWidgetUrl(e),{format:"html",headers:{"X-Requested-With":"XMLHttpRequest"},abortController:this.lastWidgetAbortController}).then((function(r){if(t===n.changeCounter&&r&&"string"===typeof r){n.lastWidgetAbortController=null,n.loading=!1,n.loadingFailed=!1;var i=n.$refs.widgetContent;window.$(i).html(r);var a=window.$(i).children();if(n.widgetName){var o=a.find("> .card-content .card-title");o.length||(o=a.find("> h2")),o.length&&o.html(S.helper.htmlEntities(n.widgetName))}var l=S.helper.getAngularDependency("$rootScope"),c=l.$new();n.currentScope=c,S.helper.compileVueEntryComponents(a),S.helper.compileAngularComponents(a,{scope:c}),fl.parseNotificationDivs(),setTimeout((function(){S.postEvent("widget:loaded",{parameters:e,element:a})}))}})).catch((function(e){t===n.changeCounter&&(n.lastWidgetAbortController=null,n.cleanupLastWidgetContent(),n.loading=!1,"abort"!==e.xhrStatus&&(n.loadingFailed=!0))}))}}});mc.render=pc;var fc=mc;
/*!
* Matomo - free/libre analytics platform
*
@@ -547,19 +547,20 @@ function du(){return{restrict:"A",link:function(e,t){uu.mounted(t[0])}}}window.a
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ju(e){return{restrict:"A",scope:{submitApiMethod:"=",sendJsonPayload:"=",noErrorNotification:"=",noSuccessNotification:"=",useCustomDataBinding:"="},require:"?ngModel",transclude:!0,compile:function(t,n){return n.noErrorNotification=!!n.noErrorNotification,function(t,n,r,i,o){if(!t.submitApiMethod)throw new Error("submitApiMethod is required");if(t.ajaxForm={},t.ajaxForm.submitApiMethod=t.submitApiMethod,t.ajaxForm.sendJsonPayload=t.sendJsonPayload,t.ajaxForm.noErrorNotification=t.noErrorNotification,t.ajaxForm.noSuccessNotification=t.noSuccessNotification,t.ajaxForm.data={},i){var l=e(r.ngModel);t.ajaxForm.data=l(t.$parent)}var c={mounted:function(e,n){t.ajaxForm.submitForm=n.value.submitForm}},s='\n <AjaxForm\n :form-data="data"\n :submit-api-method="submitApiMethod"\n :send-json-payload="sendJsonPayload"\n :no-error-notification="noErrorNotification"\n :no-success-notification="noSuccessNotification"\n >\n <template v-slot:default="ajaxFormVue">\n <div\n ref="transcludeTarget"\n v-special-bind-directive="{ submitForm: ajaxFormVue.submitForm }"\n />\n </template>\n </AjaxForm>',u=ut({template:s,data:function(){return t.ajaxForm},setup:function(){var e=Object(a["ref"])(null);return{transcludeTarget:e}}});u.component("AjaxForm",yu),u.directive("SpecialBindDirective",c);var d=u.mount(n[0]);function p(e,n){var r,i=Ou(e).attr("name");r="checkbox"===Ou(e).attr("type")?Ou(e).is(":checked"):Ou(e).val(),t.ajaxForm.data[i]=r,n||setTimeout((function(){t.$apply()}),0)}n.on("$destroy",(function(){u.unmount()})),t.useCustomDataBinding||n.on("change","input,select",(function(e){p(e.target)})),o(t,(function(e,t){if(!t.useCustomDataBinding){var n=e.find("input,select").not("[type=submit]");n.each((function(){p(this,!0)}))}Ou(d.transcludeTarget).append(e)}))}}}}function ku(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Su(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Cu(e,t,n){return t&&Su(e.prototype,t),n&&Su(e,n),e}function Eu(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function ju(e){return{restrict:"A",scope:{submitApiMethod:"=",sendJsonPayload:"=",noErrorNotification:"=",noSuccessNotification:"=",useCustomDataBinding:"="},require:"?ngModel",transclude:!0,compile:function(t,n){return n.noErrorNotification=!!n.noErrorNotification,function(t,n,r,i,o){if(!t.submitApiMethod)throw new Error("submitApiMethod is required");if(t.ajaxForm={},t.ajaxForm.submitApiMethod=t.submitApiMethod,t.ajaxForm.sendJsonPayload=t.sendJsonPayload,t.ajaxForm.noErrorNotification=t.noErrorNotification,t.ajaxForm.noSuccessNotification=t.noSuccessNotification,t.ajaxForm.data={},i){var l=e(r.ngModel);t.ajaxForm.data=l(t.$parent)}var c={mounted:function(e,n){t.ajaxForm.submitForm=n.value.submitForm}},s='\n <AjaxForm\n :form-data="data"\n :submit-api-method="submitApiMethod"\n :send-json-payload="sendJsonPayload"\n :no-error-notification="noErrorNotification"\n :no-success-notification="noSuccessNotification"\n >\n <template v-slot:default="ajaxFormVue">\n <div\n ref="transcludeTarget"\n v-special-bind-directive="{ submitForm: ajaxFormVue.submitForm }"\n />\n </template>\n </AjaxForm>',u=ut({template:s,data:function(){return t.ajaxForm},setup:function(){var e=Object(a["ref"])(null);return{transcludeTarget:e}}});u.component("AjaxForm",yu),u.directive("SpecialBindDirective",c);var d=u.mount(n[0]);function p(e,n){var r,i=Ou(e).attr("name");r="checkbox"===Ou(e).attr("type")?Ou(e).is(":checked"):Ou(e).val(),t.ajaxForm.data[i]=r,n||setTimeout((function(){t.$apply()}),0)}n.on("$destroy",(function(){u.unmount()})),t.useCustomDataBinding||n.on("change","input,select",(function(e){p(e.target)})),o(t,(function(e,t){if(!t.useCustomDataBinding){var n=e.find("input,select").not("[type=submit]");n.each((function(){p(this,!0)}))}Ou(d.transcludeTarget).append(e)}))}}}}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */ju.$inject=["$parse"],window.angular.module("piwikApp").directive("piwikAjaxForm",ju);var Du=function(){function e(t){ku(this,e),Eu(this,"type",void 0),Eu(this,"instance",void 0),this.type=t}return Cu(e,[{key:"get",value:function(e,t,n){if(!this.instance){var r=this.type;this.instance=new r}return Reflect.get(this.instance,t,n)}}]),e}();function Pu(e){return new Proxy({},new Du(e))}
+ */
+function ku(e,t){var n,r=parseInt(t,10),i=parseInt(e,10)-r;return n=0===i||Number.isNaN(i)?0:0===r||Number.isNaN(r)?100:i/r*100,n}function Su(e){return"".concat(e>0?S.numbers.symbolPlus:"").concat(Math.round(e),"}%")}function Cu(e,t){var n=ku(e,t);return Su(n)}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Vu=jt({component:ho,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"});function Nu(e,t,n){var r=new Date;n||(n=432e4),r.setTime(r.getTime()+n),document.cookie="".concat(e,"=").concat(t,"; expires=").concat(r.toUTCString(),"; path=/")}function Tu(e){var t="; ".concat(document.cookie),n=t.split("; ".concat(e,"="));if(2==n.length){var r=n.pop().split(";").shift();if("undefined"!==typeof r)return r}return null}function Au(e){var t=new Date;t.setTime(t.getTime()+-864e5),document.cookie="".concat(e,"=; expires=").concat(t.toUTCString(),"; path=/")}
+ */ju.$inject=["$parse"],window.angular.module("piwikApp").directive("piwikAjaxForm",ju);var Eu=jt({component:ho,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"});function Du(e,t,n){var r=new Date;n||(n=432e4),r.setTime(r.getTime()+n),document.cookie="".concat(e,"=").concat(t,"; expires=").concat(r.toUTCString(),"; path=/")}function Pu(e){var t="; ".concat(document.cookie),n=t.split("; ".concat(e,"="));if(2==n.length){var r=n.pop().split(";").shift();if("undefined"!==typeof r)return r}return null}function Vu(e){var t=new Date;t.setTime(t.getTime()+-864e5),document.cookie="".concat(e,"=; expires=").concat(t.toUTCString(),"; path=/")}
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts b/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
index c49e0e84c0..2a3ee021dc 100644
--- a/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
+++ b/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
@@ -12,7 +12,7 @@ import jqXHR = JQuery.jqXHR;
import MatomoUrl from '../MatomoUrl/MatomoUrl';
import Matomo from '../Matomo/Matomo';
-interface AjaxOptions {
+export interface AjaxOptions {
withTokenInUrl?: boolean;
postParams?: QueryParameters;
headers?: Record<string, string>;
diff --git a/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts b/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
index e346e8179a..9ab1dc54aa 100644
--- a/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
+++ b/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
@@ -33,11 +33,11 @@ class MatomoUrl {
readonly hashQuery = ref('');
readonly urlParsed = computed(() => readonly(
- broadcast.getValuesFromUrl(`?${this.urlQuery.value}`, true) as ParsedQueryParameters,
+ this.parse(this.urlQuery.value) as ParsedQueryParameters,
));
readonly hashParsed = computed(() => readonly(
- broadcast.getValuesFromUrl(`?${this.hashQuery.value}`, true) as ParsedQueryParameters,
+ this.parse(this.hashQuery.value) as ParsedQueryParameters,
));
readonly parsed = computed(() => readonly({
@@ -61,6 +61,11 @@ class MatomoUrl {
this.updatePeriodParamsFromUrl();
}
+ updateHashToUrl(url: string) {
+ const $location: ILocationService = Matomo.helper.getAngularDependency('$location');
+ $location.url(url);
+ }
+
updateHash(params: QueryParameters|string) {
const modifiedParams = this.getFinalHashParams(params);
const serializedParams = this.stringify(modifiedParams);
@@ -95,11 +100,11 @@ class MatomoUrl {
) {
const paramsObj = typeof params !== 'string'
? params as QueryParameters
- : broadcast.getValuesFromUrl(`?${params}`, true);
+ : this.parse(params as string);
const urlParamsObj = typeof params !== 'string'
? urlParams as QueryParameters
- : broadcast.getValuesFromUrl(`?${urlParams}`, true);
+ : this.parse(urlParams as string);
return {
// these params must always be present in the hash
@@ -139,6 +144,10 @@ class MatomoUrl {
return window.broadcast.getValueFromUrl(paramName, window.location.search);
}
+ parse(query: string): QueryParameters {
+ return broadcast.getValuesFromUrl(`?${query}`, true);
+ }
+
stringify(search: QueryParameters): string {
const searchWithoutEmpty = Object.fromEntries(
Object.entries(search).filter(([, value]) => value !== '' && value !== null && value !== undefined),
diff --git a/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.less b/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.less
index 3bad77b9ba..1bfdf4285c 100644
--- a/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.less
+++ b/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.less
@@ -43,6 +43,7 @@
.quick-access-category {
text-align: left !important;
font-size: 11px;
+ font-weight: bold;
padding: 5px 5px 5px 10px;
cursor: pointer;
}
diff --git a/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue b/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue
index 159876a4ec..a9ae4a65f3 100644
--- a/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue
+++ b/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue
@@ -13,7 +13,6 @@
<span
class="icon-search"
@mouseenter="searchActive = true"
- v-show="!(searchTerm || searchActive)"
/>
<input
class="s"
@@ -24,6 +23,7 @@
tabindex="2"
v-focus-if:[searchActive]="{}"
:title="quickAccessTitle"
+ :placeholder="translate('General_Search')"
ref="input"
/>
<div
diff --git a/plugins/CoreHome/vue/src/SiteSelector/Site.ts b/plugins/CoreHome/vue/src/SiteSelector/Site.ts
index ec30bb5885..ee3d818dbd 100644
--- a/plugins/CoreHome/vue/src/SiteSelector/Site.ts
+++ b/plugins/CoreHome/vue/src/SiteSelector/Site.ts
@@ -14,6 +14,7 @@ interface Site {
currency?: string;
timezone_name: string;
currency_name?: string;
+ main_url: string;
alias_urls: string[];
excluded_ips: string;
excluded_parameters: string;
diff --git a/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue b/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
index 4aaedd4d6c..70e2743ab8 100644
--- a/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
+++ b/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
@@ -219,6 +219,7 @@ export default defineComponent({
const scope = $rootScope.$new();
this.currentScope = scope;
+ Matomo.helper.compileVueEntryComponents($content);
Matomo.helper.compileAngularComponents($content, { scope });
NotificationsStore.parseNotificationDivs();
diff --git a/plugins/CoreHome/vue/src/getFormattedEvolution.ts b/plugins/CoreHome/vue/src/getFormattedEvolution.ts
new file mode 100644
index 0000000000..84b8e57dec
--- /dev/null
+++ b/plugins/CoreHome/vue/src/getFormattedEvolution.ts
@@ -0,0 +1,37 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import Matomo from './Matomo/Matomo';
+
+function calculateEvolution(currentValue: string|number, pastValue: string|number) {
+ const pastValueParsed = parseInt(pastValue as string, 10);
+ const currentValueParsed = parseInt(currentValue as string, 10) - pastValueParsed;
+
+ let evolution: number;
+
+ if (currentValueParsed === 0 || Number.isNaN(currentValueParsed)) {
+ evolution = 0;
+ } else if (pastValueParsed === 0 || Number.isNaN(pastValueParsed)) {
+ evolution = 100;
+ } else {
+ evolution = (currentValueParsed / pastValueParsed) * 100;
+ }
+
+ return evolution;
+}
+
+function formatEvolution(evolution: number) {
+ return `${evolution > 0 ? Matomo.numbers.symbolPlus : ''}${Math.round(evolution)}}%`;
+}
+
+export default function getFormattedEvolution(
+ currentValue: string|number,
+ pastValue: string|number,
+): string {
+ const evolution = calculateEvolution(currentValue, pastValue);
+ return formatEvolution(evolution);
+}
diff --git a/plugins/CoreHome/vue/src/index.ts b/plugins/CoreHome/vue/src/index.ts
index 965cd2002b..3080549c03 100644
--- a/plugins/CoreHome/vue/src/index.ts
+++ b/plugins/CoreHome/vue/src/index.ts
@@ -60,7 +60,7 @@ export { default as createVueApp } from './createVueApp';
export { default as useExternalPluginComponent } from './useExternalPluginComponent';
export { default as DirectiveUtilities } from './directiveUtilities';
export { default as debounce } from './debounce';
-export { default as lazyInitSingleton } from './lazyInitSingleton';
+export { default as getFormattedEvolution } from './getFormattedEvolution';
export {
default as createAngularJsAdapter,
transformAngularJsBoolAttr,
@@ -73,7 +73,7 @@ export { default as activityIndicatorAdapter } from './ActivityIndicator/Activit
export { default as ActivityIndicator } from './ActivityIndicator/ActivityIndicator.vue';
export { default as translate } from './translate';
export { default as Alert } from './Alert/Alert.vue';
-export { default as AjaxHelper } from './AjaxHelper/AjaxHelper';
+export { default as AjaxHelper, AjaxOptions } from './AjaxHelper/AjaxHelper';
export { setCookie, getCookie, deleteCookie } from './CookieHelper/CookieHelper';
export { default as MatomoUrl } from './MatomoUrl/MatomoUrl';
export { default as Matomo } from './Matomo/Matomo';
@@ -106,6 +106,7 @@ export { default as FieldArray } from './FieldArray/FieldArray.vue';
export { default as MultiPairField } from './MultiPairField/MultiPairField.vue';
export { default as PeriodSelector } from './PeriodSelector/PeriodSelector.vue';
export { default as ReportingMenu } from './ReportingMenu/ReportingMenu.vue';
+export { default as ReportingMenuStore } from './ReportingMenu/ReportingMenu.store';
export { default as ReportingPagesStore } from './ReportingPages/ReportingPages.store';
export { default as ReportMetadataStore } from './ReportMetadata/ReportMetadata.store';
export { default as WidgetsStore } from './Widget/Widgets.store';
diff --git a/plugins/CoreHome/vue/src/lazyInitSingleton.ts b/plugins/CoreHome/vue/src/lazyInitSingleton.ts
deleted file mode 100644
index b47dbc1644..0000000000
--- a/plugins/CoreHome/vue/src/lazyInitSingleton.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/* eslint-disable @typescript-eslint/ban-types */
-
-class LazySingletonHandler<T extends object, C extends { new(): T }> implements ProxyHandler<T> {
- private instance?: T;
-
- constructor(private type: C) {}
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- get(target: T, key: string | symbol, recv: any): any {
- if (!this.instance) {
- const Type = this.type;
- this.instance = new Type();
- }
-
- return Reflect.get(this.instance!, key, recv);
- }
-}
-
-export default function lazyInitSingleton<
- T extends object,
- C extends { new(): T },
->(type: C): InstanceType<C> {
- return new Proxy<InstanceType<C>>(
- {} as unknown as InstanceType<C>,
- new LazySingletonHandler<T, C>(type),
- );
-}
diff --git a/plugins/CorePluginsAdmin/API.php b/plugins/CorePluginsAdmin/API.php
index dede5afc0a..203b88b818 100644
--- a/plugins/CorePluginsAdmin/API.php
+++ b/plugins/CorePluginsAdmin/API.php
@@ -12,7 +12,6 @@ use Piwik\Piwik;
use Piwik\Plugin\SettingsProvider;
use Exception;
use Piwik\Plugins\Login\PasswordVerifier;
-use Piwik\Version;
use Piwik\Container\StaticContainer;
use Piwik\Plugins\CoreAdminHome\Emails\SettingsChangedEmail;
use Piwik\Plugins\CoreAdminHome\Emails\SecurityNotificationEmail;
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php
index a6b7ae104e..4104e68376 100644
--- a/plugins/CorePluginsAdmin/Controller.php
+++ b/plugins/CorePluginsAdmin/Controller.php
@@ -13,7 +13,6 @@ use Piwik\Access;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\ErrorHandler;
use Piwik\Exception\MissingFilePermissionException;
use Piwik\Filechecks;
use Piwik\Filesystem;
@@ -26,7 +25,6 @@ use Piwik\Plugins\Login\PasswordVerifier;
use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Plugins\Marketplace\Controller as MarketplaceController;
use Piwik\Plugins\Marketplace\Plugins;
-use Piwik\Settings\Storage\Backend\PluginSettingsTable;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/CorePluginsAdmin/Menu.php b/plugins/CorePluginsAdmin/Menu.php
index be90fca29f..cce08378e4 100644
--- a/plugins/CorePluginsAdmin/Menu.php
+++ b/plugins/CorePluginsAdmin/Menu.php
@@ -12,7 +12,6 @@ use Piwik\Container\StaticContainer;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
-use Piwik\Plugin;
use Piwik\Plugins\CorePluginsAdmin\Model\TagManagerTeaser;
use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Plugins\Marketplace\Plugins;
diff --git a/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php b/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php
index b497f999d4..5298ea94fa 100644
--- a/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php
+++ b/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CorePluginsAdmin\tests\Integration;
use Piwik\Access;
use Piwik\Auth;
use Piwik\Container\StaticContainer;
-use Piwik\Piwik;
use Piwik\Plugins\CoreUpdater\SystemSettings;
use Piwik\Plugins\UsersManager\API;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
index 7dc1ef148b..e492932d9c 100644
--- a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
+++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
@@ -199,15 +199,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}
// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=06a43882
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=4a0aa5c3
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=3ee04378
-var FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_1 = {
+var FieldCheckboxvue_type_template_id_3ee04378_hoisted_1 = {
class: "checkbox"
};
-var FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_2 = ["checked", "id", "name"];
-var FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_3 = ["innerHTML"];
-function FieldCheckboxvue_type_template_id_4a0aa5c3_render(_ctx, _cache, $props, $setup, $data, $options) {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
+var FieldCheckboxvue_type_template_id_3ee04378_hoisted_2 = ["checked", "id", "name"];
+var FieldCheckboxvue_type_template_id_3ee04378_hoisted_3 = ["innerHTML"];
+function FieldCheckboxvue_type_template_id_3ee04378_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldCheckboxvue_type_template_id_3ee04378_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
onChange: _cache[0] || (_cache[0] = function ($event) {
return _ctx.onChange($event);
})
@@ -217,17 +217,17 @@ function FieldCheckboxvue_type_template_id_4a0aa5c3_render(_ctx, _cache, $props,
type: "checkbox",
id: _ctx.name,
name: _ctx.name
- }), null, 16, FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }), null, 16, FieldCheckboxvue_type_template_id_3ee04378_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.title)
- }, null, 8, FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_3)])]);
+ }, null, 8, FieldCheckboxvue_type_template_id_3ee04378_hoisted_3)])]);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=4a0aa5c3
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=3ee04378
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=script&lang=ts
/* harmony default export */ var FieldCheckboxvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
props: {
- modelValue: Boolean,
+ modelValue: [Boolean, Number],
uiControlAttributes: Object,
name: String,
title: String
@@ -248,7 +248,7 @@ function FieldCheckboxvue_type_template_id_4a0aa5c3_render(_ctx, _cache, $props,
-FieldCheckboxvue_type_script_lang_ts.render = FieldCheckboxvue_type_template_id_4a0aa5c3_render
+FieldCheckboxvue_type_script_lang_ts.render = FieldCheckboxvue_type_template_id_3ee04378_render
/* harmony default export */ var FieldCheckbox = (FieldCheckboxvue_type_script_lang_ts);
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue?vue&type=template&id=b01b8bfc
diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
index 3115d265bb..3d8b0e2cb3 100644
--- a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
+++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
@@ -1,4 +1,4 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["CorePluginsAdmin"]=t(require("CoreHome"),require("vue")):e["CorePluginsAdmin"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CorePluginsAdmin/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"FormField",(function(){return qt})),n.d(t,"Field",(function(){return Qt})),n.d(t,"PluginSettings",(function(){return Tn})),n.d(t,"PluginFilter",(function(){return no})),n.d(t,"PluginManagement",(function(){return Hn})),n.d(t,"PluginUpload",(function(){return Kn})),n.d(t,"SaveButton",(function(){return uo})),n.d(t,"Form",(function(){return mo})),n.d(t,"GroupedSettings",(function(){return wn})),"undefined"!==typeof window){var o=window.document.currentScript,r=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),l=n("8bbf"),a={class:"form-group row matomo-form-field"},u={key:0,class:"col s12"},c={key:0,class:"form-help"},s={key:0,class:"inline-help",ref:"inlineHelp"},d=Object(l["createElementVNode"])("br",null,null,-1);function m(e,t,n,o,r,i){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",a,[e.formField.introduction?(Object(l["openBlock"])(),Object(l["createElementBlock"])("h3",u,Object(l["toDisplayString"])(e.formField.introduction),1)):Object(l["createCommentVNode"])("",!0),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{"input-field":"checkbox"!==e.formField.uiControl&&"radio"!==e.formField.uiControl,"file-field":"file"===e.formField.uiControl,m6:!e.formField.fullWidth}])},[(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.childComponent),Object(l["mergeProps"])(Object.assign(Object.assign({formField:e.formField},e.formField),{},{modelValue:e.processedModelValue,availableOptions:e.availableOptions},e.extraChildComponentParams),{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)})}),null,16))],2),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{m6:!e.formField.fullWidth}])},[e.showFormHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",c,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",{class:"form-description"},Object(l["toDisplayString"])(e.formField.description),513),[[l["vShow"],e.formField.description]]),e.formField.inlineHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",s,[e.inlineHelpComponent?(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.inlineHelpComponent),Object(l["normalizeProps"])(Object(l["mergeProps"])({key:0},e.inlineHelpBind)),null,16)):Object(l["createCommentVNode"])("",!0)],512)):Object(l["createCommentVNode"])("",!0),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[d,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Default"))+": ",1),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.defaultValuePrettyTruncated),1)],512),[[l["vShow"],e.showDefaultValue]])])):Object(l["createCommentVNode"])("",!0)],2)],512)),[[l["vShow"],e.showField]])}var f={class:"checkbox"},p=["checked","id","name"],b=["innerHTML"];function v(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",f,[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes,{value:1,checked:!!e.modelValue,type:"checkbox",id:e.name,name:e.name}),null,16,p),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.title)},null,8,b)])])}var h=Object(l["defineComponent"])({props:{modelValue:Boolean,uiControlAttributes:Object,name:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.modelValue!==e.target.checked&&this.$emit("update:modelValue",e.target.checked)}}});h.render=v;var g=h,O=["value","checked","onChange","id","name"];function y(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n,class:"checkbox"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:t.key,checked:!!e.checkboxStates[n],onChange:function(t){return e.onChange(n)}},e.uiControlAttributes,{type:"checkbox",id:"".concat(e.name).concat(t.key),name:t.name}),null,16,O),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(t.description),513),[[l["vShow"],t.description]])])])})),128))])}function j(e){return S(e)||C(e)||w(e)||V()}function V(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e,t){if(e){if("string"===typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}function C(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function S(e){if(Array.isArray(e))return k(e)}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function A(e,t){return(e||[]).map((function(e){return t&&-1!==t.indexOf(e.key)}))}var F=Object(l["defineComponent"])({props:{modelValue:Array,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,type:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{checkboxStates:function(){return A(this.availableOptions,this.modelValue)}},mounted:function(){window.Materialize.updateTextFields()},methods:{onChange:function(e){var t=j(this.checkboxStates);t[e]=!t[e];var n=this.availableOptions||{},o=[];Object.values(n).forEach((function(e,n){t[n]&&o.push(e.key)})),this.$emit("update:modelValue",o)}}});F.render=y;var B=F,E={class:"expandableSelector"},x=Object(l["createElementVNode"])("svg",{class:"caret",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},[Object(l["createElementVNode"])("path",{d:"M7 10l5 5 5-5z"}),Object(l["createElementVNode"])("path",{d:"M0 0h24v24H0z",fill:"none"})],-1),N=["value"],T={class:"expandableList z-depth-2"},$={class:"searchContainer"},M={class:"collection firstLevel"},P=["onClick"],J={class:"collection secondLevel"},H=["onClick"],D={class:"primary-content"},L=["title"];function I(e,t,n,o,r,i){var a=Object(l["resolveDirective"])("focus-if"),u=Object(l["resolveDirective"])("focus-anywhere-but-here");return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",E,[Object(l["createElementVNode"])("div",{onClick:t[0]||(t[0]=function(t){return e.showSelect=!e.showSelect}),class:"select-wrapper"},[x,Object(l["createElementVNode"])("input",{type:"text",class:"select-dropdown",readonly:"readonly",value:e.modelValueText},null,8,N)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",T,[Object(l["createElementVNode"])("div",$,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text",placeholder:"Search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"expandableSearch browser-default"},null,512),[[l["vModelText"],e.searchTerm],[a,e.showSelect]])]),Object(l["createElementVNode"])("ul",M,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"collection-item",key:n},[Object(l["createElementVNode"])("h4",{class:"expandableListCategory",onClick:function(n){return e.onCategoryClicked(t)}},[Object(l["createTextVNode"])(Object(l["toDisplayString"])(t.group)+" ",1),Object(l["createElementVNode"])("span",{class:Object(l["normalizeClass"])(["secondary-content",{"icon-arrow-right":e.showCategory!==t.group,"icon-arrow-bottom":e.showCategory===t.group}])},null,2)],8,P),Object(l["withDirectives"])(Object(l["createElementVNode"])("ul",J,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})),(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"expandableListItem collection-item valign-wrapper",key:t.key,onClick:function(n){return e.onValueClicked(t)}},[Object(l["createElementVNode"])("span",D,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{title:t.tooltip,class:"secondary-content icon-help"},null,8,L),[[l["vShow"],t.tooltip]])],8,H)})),128))],512),[[l["vShow"],e.showCategory===t.group||e.searchTerm]])],512)),[[l["vShow"],t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})).length]])})),128))])],512),[[l["vShow"],e.showSelect]])],512)),[[u,{blur:e.onBlur}]])}function z(e){var t=[];if(!e)return t;var n={};return Object.values(e).forEach((function(e){var t=e,o=t.group||"";o in n&&n[o]||(n[o]={values:[],group:o});var r={key:t.key,value:t.value};"tooltip"in t&&t.tooltip&&(r.tooltip=t.tooltip),n[o].values.push(r)})),Object.values(n).forEach((function(e){e.values.length&&t.push(e)})),t}var U=Object(l["defineComponent"])({props:{modelValue:[Number,String],availableOptions:Array,title:String},directives:{FocusAnywhereButHere:i["FocusAnywhereButHere"],FocusIf:i["FocusIf"]},inheritAttrs:!1,emits:["update:modelValue"],data:function(){return{showSelect:!1,searchTerm:"",showCategory:""}},computed:{modelValueText:function(){if(this.title)return this.title;var e,t=this.modelValue,n=this.availableOptions||[];return n.some((function(n){return e=n.values.find((function(e){return e.key===t})),e})),e?e.value?"".concat(e.value):"":t?"".concat(t):""}},methods:{onBlur:function(){this.showSelect=!1},onCategoryClicked:function(e){this.showCategory===e.group?this.showCategory="":this.showCategory=e.group},onValueClicked:function(e){this.$emit("update:modelValue",e.key),this.showSelect=!1}}});U.render=I;var K=U,_=["for","innerHTML"];function q(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("FieldArray");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,_),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onValueUpdate(t)}),field:e.uiControlAttributes.field},null,8,["name","model-value","field"])])}var R=Object(l["defineComponent"])({components:{FieldArray:i["FieldArray"]},props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],methods:{onValueUpdate:function(e){this.$emit("update:modelValue",e)}}});R.render=q;var G=R,W={class:"btn"},Z=["for","innerHTML"],Y=["name","id"],Q={class:"file-path-wrapper"},X=["value"];function ee(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("div",W,[Object(l["createElementVNode"])("span",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Z),Object(l["createElementVNode"])("input",{ref:"fileInput",name:e.name,type:"file",id:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,Y)]),Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("input",{class:"file-path validate",value:e.filePath,type:"text"},null,8,X)])])}var te=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:[String,File]},inheritAttrs:!1,emits:["update:modelValue"],watch:{modelValue:function(e){if(!e||""===e){var t=this.$refs.fileInput;t.value=""}}},methods:{onChange:function(e){var t=e.target.files;if(t){var n=t.item(0);this.$emit("update:modelValue",n)}}},computed:{filePath:function(){if(this.modelValue instanceof File)return this.$refs.fileInput.value}}});te.render=ee;var ne=te,oe=["type","name","value"];function re(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("input",{type:e.uiControl,name:e.name,value:e.modelValue,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,oe)])}var ie=Object(l["defineComponent"])({props:{modelValue:null,uiControl:String,name:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});ie.render=re;var le=ie,ae={class:"fieldMultiTuple"},ue=["for","innerHTML"];function ce(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("MultiPairField");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ae,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ue),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":e.onUpdateValue,field1:e.uiControlAttributes.field1,field2:e.uiControlAttributes.field2,field3:e.uiControlAttributes.field3,field4:e.uiControlAttributes.field4},null,8,["name","model-value","onUpdate:modelValue","field1","field2","field3","field4"])])}var se=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,components:{MultiPairField:i["MultiPairField"]},emits:["update:modelValue"],methods:{onUpdateValue:function(e){this.$emit("update:modelValue",e)}}});se.render=ce;var de=se,me=["type","id","name","value"],fe=["for","innerHTML"];function pe(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:(e.modelValue||"").toString(),onKeydown:t[0]||(t[0]=function(t){return e.onChange(t)}),onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),null,16,me),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,fe)],64)}var be=Object(l["defineComponent"])({props:{uiControl:String,name:String,title:String,modelValue:[Number,String],uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onChange=Object(i["debounce"])(this.onChange.bind(this),50)},methods:{onChange:function(e){var t=parseFloat(e.target.value);this.$emit("update:modelValue",t)}},mounted:function(){window.Materialize.updateTextFields()},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}}});be.render=pe;var ve=be,he=["value","id","name","disabled","checked"];function ge(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions||[],(function(n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n.key,class:"radio"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:n.key,onChange:t[0]||(t[0]=function(t){return e.onChange(t)}),type:"radio",id:"".concat(e.name).concat(n.key),name:e.name,disabled:n.disabled||e.disabled},e.uiControlAttributes,{checked:e.modelValue===n.key||"".concat(e.modelValue)===n.key}),null,16,he),Object(l["createElementVNode"])("span",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(n.value)+" ",1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(n.description),513),[[l["vShow"],n.description]])])])])})),128))])}var Oe=Object(l["defineComponent"])({props:{title:String,availableOptions:Array,name:String,disabled:Boolean,uiControlAttributes:Object,modelValue:[String,Number]},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});Oe.render=ge;var ye=Oe;function je(e,t){return ke(e)||Se(e,t)||we(e,t)||Ve()}function Ve(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function we(e,t){if(e){if("string"===typeof e)return Ce(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(e,t):void 0}}function Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Se(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function ke(e){if(Array.isArray(e))return e}var Ae={key:0,class:"matomo-field-select"},Fe=["multiple","name"],Be=["label"],Ee=["value","selected","disabled"],xe=["for","innerHTML"],Ne={key:1,class:"matomo-field-select"},Te=["multiple","name"],$e=["value","selected","disabled"],Me=["for","innerHTML"];function Pe(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[e.groupedOptions?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ae,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({ref:"select",class:"grouped",multiple:e.multiple,name:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.groupedOptions,(function(t){var n=je(t,2),o=n[0],r=n[1];return Object(l["openBlock"])(),Object(l["createElementBlock"])("optgroup",{key:o,label:o},[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(r,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,Ee)})),128))],8,Be)})),128))],16,Fe),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,xe)])):Object(l["createCommentVNode"])("",!0),!e.groupedOptions&&e.options?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ne,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({class:"ungrouped",ref:"select",multiple:e.multiple,name:e.name,onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.options,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,$e)})),128))],16,Te),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,Me)])):Object(l["createCommentVNode"])("",!0)],64)}function Je(e){return Le(e)||De(e)||Ue(e)||He()}function He(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function De(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Le(e){if(Array.isArray(e))return Ke(e)}function Ie(e,t){return qe(e)||_e(e,t)||Ue(e,t)||ze()}function ze(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Ke(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ke(e,t):void 0}}function Ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function _e(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function qe(e){if(Array.isArray(e))return e}function Re(e){return Re="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}function Ge(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4?arguments[4]:void 0;if(e){var i=window.$(e);if(Array.from(e.options).forEach((function(e){e.selected=r?!!t&&-1!==t.indexOf(e.value.replace(/^string:/,"")):"string:".concat(t)===e.value})),i.formSelect(o),n){var l=i.closest(".select-wrapper").find("input");l.attr("placeholder",n)}}}function We(e){return!Array.isArray(e)&&"object"===Re(e)&&Object.values(e).some((function(e){return"object"===Re(e)}))}function Ze(e,t){return e.some((function(e){return e.key===t}))}function Ye(e,t,n){if(!e)return[];var o=!0,r=e;We(r)||(r={"":e},o=!1);var i=[];return Object.entries(r).forEach((function(e){var n=Ie(e,2),r=n[0],l=n[1];Object.entries(l).forEach((function(e){var n=Ie(e,2),l=n[0],a=n[1];if(a&&"object"===Re(a)&&"undefined"!==typeof a.key)i.push(a);else{var u=l;"integer"===t&&"string"===typeof l&&(u=parseInt(l,10)),i.push({group:o?r:void 0,key:u,value:a})}}))})),null!==n&&void 0!==n&&n.placeholder&&!Ze(i,"")?[{key:"",value:""}].concat(i):i}function Qe(e){return"string"===typeof e?e.replace(/^string:/,""):e}var Xe=Object(l["defineComponent"])({props:{modelValue:null,multiple:Boolean,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,uiControlOptions:Object},inheritAttrs:!1,emits:["update:modelValue"],computed:{options:function(){var e=this.availableOptions;return!e||Ze(e,"")||"undefined"!==typeof this.modelValue&&null!==this.modelValue&&""!==this.modelValue?e:[{key:"",value:this.modelValue,group:this.hasGroups?"":void 0}].concat(Je(e))},hasGroups:function(){var e=this.availableOptions;return e&&e[0]&&"undefined"!==typeof e[0].group},groupedOptions:function(){var e=this.options;if(!this.hasGroups||!e)return null;var t={};e.forEach((function(e){var n=e.group;t[n]=t[n]||[],t[n].push(e)}));var n=Object.entries(t);return n.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),n}},methods:{onChange:function(e){var t,n=this,o=e.target;this.multiple?(t=Array.from(o.options).filter((function(e){return e.selected})).map((function(e){return e.value})),t=t.map((function(e){return Qe(e)}))):(t=o.value,t=Qe(t)),this.$emit("update:modelValue",t),Object(l["nextTick"])((function(){n.modelValue!==t&&n.onModelValueChange(n.modelValue)}))},onModelValueChange:function(e){var t=this;window.$(this.$refs.select).val(e),setTimeout((function(){var n;Ge(t.$refs.select,e,null===(n=t.uiControlAttributes)||void 0===n?void 0:n.placeholder,t.uiControlOptions,t.multiple)}))}},watch:{modelValue:function(e){this.onModelValueChange(e)},"uiControlAttributes.disabled":{handler:function(e,t){var n=this;setTimeout((function(){var o;e!==t&&Ge(n.$refs.select,n.modelValue,null===(o=n.uiControlAttributes)||void 0===o?void 0:o.placeholder,n.uiControlOptions,n.multiple)}))}},availableOptions:function(e,t){var n=this;e!==t&&setTimeout((function(){var e;Ge(n.$refs.select,n.modelValue,null===(e=n.uiControlAttributes)||void 0===e?void 0:e.placeholder,n.uiControlOptions,n.multiple)}))}},mounted:function(){var e=this;setTimeout((function(){var t;Ge(e.$refs.select,e.modelValue,null===(t=e.uiControlAttributes)||void 0===t?void 0:t.placeholder,e.uiControlOptions,e.multiple)}))}});Xe.render=Pe;var et=Xe,tt=["for","innerHTML"],nt={class:"sites_autocomplete"};function ot(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("SiteSelector");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,class:"siteSelectorLabel",innerHTML:e.$sanitize(e.title)},null,8,tt),Object(l["createElementVNode"])("div",nt,[Object(l["createVNode"])(a,Object(l["mergeProps"])({"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)}),id:e.name,"show-all-sites-item":e.uiControlAttributes.showAllSitesItem||!1,"switch-site-on-select":!1,"show-selected-site":!0,"only-sites-with-admin-access":e.uiControlAttributes.onlySitesWithAdminAccess||!1},e.uiControlAttributes),null,16,["model-value","id","show-all-sites-item","only-sites-with-admin-access"])])])}var rt=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:Object,uiControlAttributes:Object},inheritAttrs:!1,components:{SiteSelector:i["SiteSelector"]},emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});rt.render=ot;var it=rt,lt=["type","id","name","value"],at=["for","innerHTML"];function ut(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:e.modelValueText,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)})},e.uiControlAttributes),null,16,lt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,at)],64)}var ct=Object(l["defineComponent"])({props:{title:String,name:String,uiControlAttributes:Object,modelValue:[String,Number],uiControl:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{modelValueText:function(){return"undefined"===typeof this.modelValue||null===this.modelValue?"":this.modelValue.toString()}},created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},mounted:function(){setTimeout((function(){window.Materialize.updateTextFields()}))},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}},methods:{onKeydown:function(e){var t=e.target.value;this.modelValue!==t&&this.$emit("update:modelValue",t)}}});ct.render=ut;var st=ct,dt=["for","innerHTML"],mt=["type","name","value"];function ft(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,dt),Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,name:e.name,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),value:e.concattedValues},e.uiControlAttributes),null,16,mt)])}var pt=Object(l["defineComponent"])({props:{name:String,title:String,uiControl:String,modelValue:Array,uiControlAttributes:Object},inheritAttrs:!1,computed:{concattedValues:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(", ")}},emits:["update:modelValue"],created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(",").map((function(e){return e.trim()}));t.join(", ")!==this.concattedValues&&this.$emit("update:modelValue",t)}}});pt.render=ft;var bt=pt,vt=["name","id","value"],ht=["for","innerHTML"];function gt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({name:e.name},e.uiControlAttributes,{id:e.name,value:e.modelValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea",ref:"textarea"}),null,16,vt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ht)],64)}var Ot=Object(l["defineComponent"])({props:{name:String,uiControlAttributes:Object,modelValue:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){this.$emit("update:modelValue",e.target.value)}},watch:{modelValue:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});Ot.render=gt;var yt=Ot,jt=["for","innerHTML"],Vt=["name","value"];function wt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,jt),Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({ref:"textarea",name:e.name},e.uiControlAttributes,{value:e.concattedValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea"}),null,16,Vt)])}var Ct="\n",St=Object(l["defineComponent"])({props:{name:String,title:String,uiControlAttributes:Object,modelValue:[Array,String]},inheritAttrs:!1,emits:["update:modelValue"],computed:{concattedValue:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(Ct)}},created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(Ct);t.join(Ct)!==this.concattedValue&&this.$emit("update:modelValue",t)}},watch:{modelValue:function(e,t){var n=this;e!==t&&setTimeout((function(){n.$refs.textarea&&window.Materialize.textareaAutoResize(n.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){e.$refs.textarea&&window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});St.render=wt;var kt=St;function At(e){return At="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Ft(e,t){return Tt(e)||Nt(e,t)||Et(e,t)||Bt()}function Bt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Et(e,t){if(e){if("string"===typeof e)return xt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xt(e,t):void 0}}function xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Nt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function Tt(e){if(Array.isArray(e))return e}
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["CorePluginsAdmin"]=t(require("CoreHome"),require("vue")):e["CorePluginsAdmin"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CorePluginsAdmin/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"FormField",(function(){return qt})),n.d(t,"Field",(function(){return Qt})),n.d(t,"PluginSettings",(function(){return Tn})),n.d(t,"PluginFilter",(function(){return no})),n.d(t,"PluginManagement",(function(){return Hn})),n.d(t,"PluginUpload",(function(){return Kn})),n.d(t,"SaveButton",(function(){return uo})),n.d(t,"Form",(function(){return mo})),n.d(t,"GroupedSettings",(function(){return wn})),"undefined"!==typeof window){var o=window.document.currentScript,r=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),l=n("8bbf"),a={class:"form-group row matomo-form-field"},u={key:0,class:"col s12"},c={key:0,class:"form-help"},s={key:0,class:"inline-help",ref:"inlineHelp"},d=Object(l["createElementVNode"])("br",null,null,-1);function m(e,t,n,o,r,i){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",a,[e.formField.introduction?(Object(l["openBlock"])(),Object(l["createElementBlock"])("h3",u,Object(l["toDisplayString"])(e.formField.introduction),1)):Object(l["createCommentVNode"])("",!0),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{"input-field":"checkbox"!==e.formField.uiControl&&"radio"!==e.formField.uiControl,"file-field":"file"===e.formField.uiControl,m6:!e.formField.fullWidth}])},[(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.childComponent),Object(l["mergeProps"])(Object.assign(Object.assign({formField:e.formField},e.formField),{},{modelValue:e.processedModelValue,availableOptions:e.availableOptions},e.extraChildComponentParams),{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)})}),null,16))],2),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{m6:!e.formField.fullWidth}])},[e.showFormHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",c,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",{class:"form-description"},Object(l["toDisplayString"])(e.formField.description),513),[[l["vShow"],e.formField.description]]),e.formField.inlineHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",s,[e.inlineHelpComponent?(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.inlineHelpComponent),Object(l["normalizeProps"])(Object(l["mergeProps"])({key:0},e.inlineHelpBind)),null,16)):Object(l["createCommentVNode"])("",!0)],512)):Object(l["createCommentVNode"])("",!0),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[d,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Default"))+": ",1),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.defaultValuePrettyTruncated),1)],512),[[l["vShow"],e.showDefaultValue]])])):Object(l["createCommentVNode"])("",!0)],2)],512)),[[l["vShow"],e.showField]])}var f={class:"checkbox"},p=["checked","id","name"],b=["innerHTML"];function v(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",f,[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes,{value:1,checked:!!e.modelValue,type:"checkbox",id:e.name,name:e.name}),null,16,p),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.title)},null,8,b)])])}var h=Object(l["defineComponent"])({props:{modelValue:[Boolean,Number],uiControlAttributes:Object,name:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.modelValue!==e.target.checked&&this.$emit("update:modelValue",e.target.checked)}}});h.render=v;var g=h,O=["value","checked","onChange","id","name"];function y(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n,class:"checkbox"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:t.key,checked:!!e.checkboxStates[n],onChange:function(t){return e.onChange(n)}},e.uiControlAttributes,{type:"checkbox",id:"".concat(e.name).concat(t.key),name:t.name}),null,16,O),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(t.description),513),[[l["vShow"],t.description]])])])})),128))])}function j(e){return S(e)||C(e)||w(e)||V()}function V(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e,t){if(e){if("string"===typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}function C(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function S(e){if(Array.isArray(e))return k(e)}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function A(e,t){return(e||[]).map((function(e){return t&&-1!==t.indexOf(e.key)}))}var F=Object(l["defineComponent"])({props:{modelValue:Array,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,type:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{checkboxStates:function(){return A(this.availableOptions,this.modelValue)}},mounted:function(){window.Materialize.updateTextFields()},methods:{onChange:function(e){var t=j(this.checkboxStates);t[e]=!t[e];var n=this.availableOptions||{},o=[];Object.values(n).forEach((function(e,n){t[n]&&o.push(e.key)})),this.$emit("update:modelValue",o)}}});F.render=y;var B=F,E={class:"expandableSelector"},x=Object(l["createElementVNode"])("svg",{class:"caret",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},[Object(l["createElementVNode"])("path",{d:"M7 10l5 5 5-5z"}),Object(l["createElementVNode"])("path",{d:"M0 0h24v24H0z",fill:"none"})],-1),N=["value"],T={class:"expandableList z-depth-2"},$={class:"searchContainer"},M={class:"collection firstLevel"},P=["onClick"],J={class:"collection secondLevel"},H=["onClick"],D={class:"primary-content"},L=["title"];function I(e,t,n,o,r,i){var a=Object(l["resolveDirective"])("focus-if"),u=Object(l["resolveDirective"])("focus-anywhere-but-here");return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",E,[Object(l["createElementVNode"])("div",{onClick:t[0]||(t[0]=function(t){return e.showSelect=!e.showSelect}),class:"select-wrapper"},[x,Object(l["createElementVNode"])("input",{type:"text",class:"select-dropdown",readonly:"readonly",value:e.modelValueText},null,8,N)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",T,[Object(l["createElementVNode"])("div",$,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text",placeholder:"Search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"expandableSearch browser-default"},null,512),[[l["vModelText"],e.searchTerm],[a,e.showSelect]])]),Object(l["createElementVNode"])("ul",M,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"collection-item",key:n},[Object(l["createElementVNode"])("h4",{class:"expandableListCategory",onClick:function(n){return e.onCategoryClicked(t)}},[Object(l["createTextVNode"])(Object(l["toDisplayString"])(t.group)+" ",1),Object(l["createElementVNode"])("span",{class:Object(l["normalizeClass"])(["secondary-content",{"icon-arrow-right":e.showCategory!==t.group,"icon-arrow-bottom":e.showCategory===t.group}])},null,2)],8,P),Object(l["withDirectives"])(Object(l["createElementVNode"])("ul",J,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})),(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"expandableListItem collection-item valign-wrapper",key:t.key,onClick:function(n){return e.onValueClicked(t)}},[Object(l["createElementVNode"])("span",D,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{title:t.tooltip,class:"secondary-content icon-help"},null,8,L),[[l["vShow"],t.tooltip]])],8,H)})),128))],512),[[l["vShow"],e.showCategory===t.group||e.searchTerm]])],512)),[[l["vShow"],t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})).length]])})),128))])],512),[[l["vShow"],e.showSelect]])],512)),[[u,{blur:e.onBlur}]])}function z(e){var t=[];if(!e)return t;var n={};return Object.values(e).forEach((function(e){var t=e,o=t.group||"";o in n&&n[o]||(n[o]={values:[],group:o});var r={key:t.key,value:t.value};"tooltip"in t&&t.tooltip&&(r.tooltip=t.tooltip),n[o].values.push(r)})),Object.values(n).forEach((function(e){e.values.length&&t.push(e)})),t}var U=Object(l["defineComponent"])({props:{modelValue:[Number,String],availableOptions:Array,title:String},directives:{FocusAnywhereButHere:i["FocusAnywhereButHere"],FocusIf:i["FocusIf"]},inheritAttrs:!1,emits:["update:modelValue"],data:function(){return{showSelect:!1,searchTerm:"",showCategory:""}},computed:{modelValueText:function(){if(this.title)return this.title;var e,t=this.modelValue,n=this.availableOptions||[];return n.some((function(n){return e=n.values.find((function(e){return e.key===t})),e})),e?e.value?"".concat(e.value):"":t?"".concat(t):""}},methods:{onBlur:function(){this.showSelect=!1},onCategoryClicked:function(e){this.showCategory===e.group?this.showCategory="":this.showCategory=e.group},onValueClicked:function(e){this.$emit("update:modelValue",e.key),this.showSelect=!1}}});U.render=I;var K=U,_=["for","innerHTML"];function q(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("FieldArray");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,_),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onValueUpdate(t)}),field:e.uiControlAttributes.field},null,8,["name","model-value","field"])])}var R=Object(l["defineComponent"])({components:{FieldArray:i["FieldArray"]},props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],methods:{onValueUpdate:function(e){this.$emit("update:modelValue",e)}}});R.render=q;var G=R,W={class:"btn"},Z=["for","innerHTML"],Y=["name","id"],Q={class:"file-path-wrapper"},X=["value"];function ee(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("div",W,[Object(l["createElementVNode"])("span",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Z),Object(l["createElementVNode"])("input",{ref:"fileInput",name:e.name,type:"file",id:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,Y)]),Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("input",{class:"file-path validate",value:e.filePath,type:"text"},null,8,X)])])}var te=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:[String,File]},inheritAttrs:!1,emits:["update:modelValue"],watch:{modelValue:function(e){if(!e||""===e){var t=this.$refs.fileInput;t.value=""}}},methods:{onChange:function(e){var t=e.target.files;if(t){var n=t.item(0);this.$emit("update:modelValue",n)}}},computed:{filePath:function(){if(this.modelValue instanceof File)return this.$refs.fileInput.value}}});te.render=ee;var ne=te,oe=["type","name","value"];function re(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("input",{type:e.uiControl,name:e.name,value:e.modelValue,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,oe)])}var ie=Object(l["defineComponent"])({props:{modelValue:null,uiControl:String,name:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});ie.render=re;var le=ie,ae={class:"fieldMultiTuple"},ue=["for","innerHTML"];function ce(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("MultiPairField");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ae,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ue),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":e.onUpdateValue,field1:e.uiControlAttributes.field1,field2:e.uiControlAttributes.field2,field3:e.uiControlAttributes.field3,field4:e.uiControlAttributes.field4},null,8,["name","model-value","onUpdate:modelValue","field1","field2","field3","field4"])])}var se=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,components:{MultiPairField:i["MultiPairField"]},emits:["update:modelValue"],methods:{onUpdateValue:function(e){this.$emit("update:modelValue",e)}}});se.render=ce;var de=se,me=["type","id","name","value"],fe=["for","innerHTML"];function pe(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:(e.modelValue||"").toString(),onKeydown:t[0]||(t[0]=function(t){return e.onChange(t)}),onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),null,16,me),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,fe)],64)}var be=Object(l["defineComponent"])({props:{uiControl:String,name:String,title:String,modelValue:[Number,String],uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onChange=Object(i["debounce"])(this.onChange.bind(this),50)},methods:{onChange:function(e){var t=parseFloat(e.target.value);this.$emit("update:modelValue",t)}},mounted:function(){window.Materialize.updateTextFields()},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}}});be.render=pe;var ve=be,he=["value","id","name","disabled","checked"];function ge(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions||[],(function(n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n.key,class:"radio"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:n.key,onChange:t[0]||(t[0]=function(t){return e.onChange(t)}),type:"radio",id:"".concat(e.name).concat(n.key),name:e.name,disabled:n.disabled||e.disabled},e.uiControlAttributes,{checked:e.modelValue===n.key||"".concat(e.modelValue)===n.key}),null,16,he),Object(l["createElementVNode"])("span",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(n.value)+" ",1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(n.description),513),[[l["vShow"],n.description]])])])])})),128))])}var Oe=Object(l["defineComponent"])({props:{title:String,availableOptions:Array,name:String,disabled:Boolean,uiControlAttributes:Object,modelValue:[String,Number]},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});Oe.render=ge;var ye=Oe;function je(e,t){return ke(e)||Se(e,t)||we(e,t)||Ve()}function Ve(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function we(e,t){if(e){if("string"===typeof e)return Ce(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(e,t):void 0}}function Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Se(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function ke(e){if(Array.isArray(e))return e}var Ae={key:0,class:"matomo-field-select"},Fe=["multiple","name"],Be=["label"],Ee=["value","selected","disabled"],xe=["for","innerHTML"],Ne={key:1,class:"matomo-field-select"},Te=["multiple","name"],$e=["value","selected","disabled"],Me=["for","innerHTML"];function Pe(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[e.groupedOptions?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ae,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({ref:"select",class:"grouped",multiple:e.multiple,name:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.groupedOptions,(function(t){var n=je(t,2),o=n[0],r=n[1];return Object(l["openBlock"])(),Object(l["createElementBlock"])("optgroup",{key:o,label:o},[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(r,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,Ee)})),128))],8,Be)})),128))],16,Fe),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,xe)])):Object(l["createCommentVNode"])("",!0),!e.groupedOptions&&e.options?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ne,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({class:"ungrouped",ref:"select",multiple:e.multiple,name:e.name,onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.options,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,$e)})),128))],16,Te),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,Me)])):Object(l["createCommentVNode"])("",!0)],64)}function Je(e){return Le(e)||De(e)||Ue(e)||He()}function He(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function De(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Le(e){if(Array.isArray(e))return Ke(e)}function Ie(e,t){return qe(e)||_e(e,t)||Ue(e,t)||ze()}function ze(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Ke(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ke(e,t):void 0}}function Ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function _e(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function qe(e){if(Array.isArray(e))return e}function Re(e){return Re="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}function Ge(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4?arguments[4]:void 0;if(e){var i=window.$(e);if(Array.from(e.options).forEach((function(e){e.selected=r?!!t&&-1!==t.indexOf(e.value.replace(/^string:/,"")):"string:".concat(t)===e.value})),i.formSelect(o),n){var l=i.closest(".select-wrapper").find("input");l.attr("placeholder",n)}}}function We(e){return!Array.isArray(e)&&"object"===Re(e)&&Object.values(e).some((function(e){return"object"===Re(e)}))}function Ze(e,t){return e.some((function(e){return e.key===t}))}function Ye(e,t,n){if(!e)return[];var o=!0,r=e;We(r)||(r={"":e},o=!1);var i=[];return Object.entries(r).forEach((function(e){var n=Ie(e,2),r=n[0],l=n[1];Object.entries(l).forEach((function(e){var n=Ie(e,2),l=n[0],a=n[1];if(a&&"object"===Re(a)&&"undefined"!==typeof a.key)i.push(a);else{var u=l;"integer"===t&&"string"===typeof l&&(u=parseInt(l,10)),i.push({group:o?r:void 0,key:u,value:a})}}))})),null!==n&&void 0!==n&&n.placeholder&&!Ze(i,"")?[{key:"",value:""}].concat(i):i}function Qe(e){return"string"===typeof e?e.replace(/^string:/,""):e}var Xe=Object(l["defineComponent"])({props:{modelValue:null,multiple:Boolean,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,uiControlOptions:Object},inheritAttrs:!1,emits:["update:modelValue"],computed:{options:function(){var e=this.availableOptions;return!e||Ze(e,"")||"undefined"!==typeof this.modelValue&&null!==this.modelValue&&""!==this.modelValue?e:[{key:"",value:this.modelValue,group:this.hasGroups?"":void 0}].concat(Je(e))},hasGroups:function(){var e=this.availableOptions;return e&&e[0]&&"undefined"!==typeof e[0].group},groupedOptions:function(){var e=this.options;if(!this.hasGroups||!e)return null;var t={};e.forEach((function(e){var n=e.group;t[n]=t[n]||[],t[n].push(e)}));var n=Object.entries(t);return n.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),n}},methods:{onChange:function(e){var t,n=this,o=e.target;this.multiple?(t=Array.from(o.options).filter((function(e){return e.selected})).map((function(e){return e.value})),t=t.map((function(e){return Qe(e)}))):(t=o.value,t=Qe(t)),this.$emit("update:modelValue",t),Object(l["nextTick"])((function(){n.modelValue!==t&&n.onModelValueChange(n.modelValue)}))},onModelValueChange:function(e){var t=this;window.$(this.$refs.select).val(e),setTimeout((function(){var n;Ge(t.$refs.select,e,null===(n=t.uiControlAttributes)||void 0===n?void 0:n.placeholder,t.uiControlOptions,t.multiple)}))}},watch:{modelValue:function(e){this.onModelValueChange(e)},"uiControlAttributes.disabled":{handler:function(e,t){var n=this;setTimeout((function(){var o;e!==t&&Ge(n.$refs.select,n.modelValue,null===(o=n.uiControlAttributes)||void 0===o?void 0:o.placeholder,n.uiControlOptions,n.multiple)}))}},availableOptions:function(e,t){var n=this;e!==t&&setTimeout((function(){var e;Ge(n.$refs.select,n.modelValue,null===(e=n.uiControlAttributes)||void 0===e?void 0:e.placeholder,n.uiControlOptions,n.multiple)}))}},mounted:function(){var e=this;setTimeout((function(){var t;Ge(e.$refs.select,e.modelValue,null===(t=e.uiControlAttributes)||void 0===t?void 0:t.placeholder,e.uiControlOptions,e.multiple)}))}});Xe.render=Pe;var et=Xe,tt=["for","innerHTML"],nt={class:"sites_autocomplete"};function ot(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("SiteSelector");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,class:"siteSelectorLabel",innerHTML:e.$sanitize(e.title)},null,8,tt),Object(l["createElementVNode"])("div",nt,[Object(l["createVNode"])(a,Object(l["mergeProps"])({"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)}),id:e.name,"show-all-sites-item":e.uiControlAttributes.showAllSitesItem||!1,"switch-site-on-select":!1,"show-selected-site":!0,"only-sites-with-admin-access":e.uiControlAttributes.onlySitesWithAdminAccess||!1},e.uiControlAttributes),null,16,["model-value","id","show-all-sites-item","only-sites-with-admin-access"])])])}var rt=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:Object,uiControlAttributes:Object},inheritAttrs:!1,components:{SiteSelector:i["SiteSelector"]},emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});rt.render=ot;var it=rt,lt=["type","id","name","value"],at=["for","innerHTML"];function ut(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:e.modelValueText,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)})},e.uiControlAttributes),null,16,lt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,at)],64)}var ct=Object(l["defineComponent"])({props:{title:String,name:String,uiControlAttributes:Object,modelValue:[String,Number],uiControl:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{modelValueText:function(){return"undefined"===typeof this.modelValue||null===this.modelValue?"":this.modelValue.toString()}},created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},mounted:function(){setTimeout((function(){window.Materialize.updateTextFields()}))},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}},methods:{onKeydown:function(e){var t=e.target.value;this.modelValue!==t&&this.$emit("update:modelValue",t)}}});ct.render=ut;var st=ct,dt=["for","innerHTML"],mt=["type","name","value"];function ft(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,dt),Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,name:e.name,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),value:e.concattedValues},e.uiControlAttributes),null,16,mt)])}var pt=Object(l["defineComponent"])({props:{name:String,title:String,uiControl:String,modelValue:Array,uiControlAttributes:Object},inheritAttrs:!1,computed:{concattedValues:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(", ")}},emits:["update:modelValue"],created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(",").map((function(e){return e.trim()}));t.join(", ")!==this.concattedValues&&this.$emit("update:modelValue",t)}}});pt.render=ft;var bt=pt,vt=["name","id","value"],ht=["for","innerHTML"];function gt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({name:e.name},e.uiControlAttributes,{id:e.name,value:e.modelValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea",ref:"textarea"}),null,16,vt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ht)],64)}var Ot=Object(l["defineComponent"])({props:{name:String,uiControlAttributes:Object,modelValue:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){this.$emit("update:modelValue",e.target.value)}},watch:{modelValue:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});Ot.render=gt;var yt=Ot,jt=["for","innerHTML"],Vt=["name","value"];function wt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,jt),Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({ref:"textarea",name:e.name},e.uiControlAttributes,{value:e.concattedValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea"}),null,16,Vt)])}var Ct="\n",St=Object(l["defineComponent"])({props:{name:String,title:String,uiControlAttributes:Object,modelValue:[Array,String]},inheritAttrs:!1,emits:["update:modelValue"],computed:{concattedValue:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(Ct)}},created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(Ct);t.join(Ct)!==this.concattedValue&&this.$emit("update:modelValue",t)}},watch:{modelValue:function(e,t){var n=this;e!==t&&setTimeout((function(){n.$refs.textarea&&window.Materialize.textareaAutoResize(n.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){e.$refs.textarea&&window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});St.render=wt;var kt=St;function At(e){return At="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Ft(e,t){return Tt(e)||Nt(e,t)||Et(e,t)||Bt()}function Bt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Et(e,t){if(e){if("string"===typeof e)return xt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xt(e,t):void 0}}function xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Nt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function Tt(e){if(Array.isArray(e))return e}
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue
index 1d1bb8d560..b84e83ac56 100644
--- a/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue
+++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue
@@ -27,7 +27,7 @@ import { defineComponent } from 'vue';
export default defineComponent({
props: {
- modelValue: Boolean,
+ modelValue: [Boolean, Number],
uiControlAttributes: Object,
name: String,
title: String,
diff --git a/plugins/CoreUpdater/Commands/Update.php b/plugins/CoreUpdater/Commands/Update.php
index e528796685..d3dee15b87 100644
--- a/plugins/CoreUpdater/Commands/Update.php
+++ b/plugins/CoreUpdater/Commands/Update.php
@@ -18,7 +18,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CoreUpdater\Commands\Update\CliUpdateObserver;
use Piwik\Plugins\CoreUpdater\NoUpdatesFoundException;
-use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\Updater;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
diff --git a/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php b/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php
index 589969d096..dd571b8c15 100644
--- a/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php
+++ b/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\CoreUpdater\Diagnostic;
-use Piwik\Config;
use Piwik\Plugins\CoreUpdater;
use Piwik\Plugins\Diagnostics\Diagnostic\Diagnostic;
use Piwik\Plugins\Diagnostics\Diagnostic\DiagnosticResult;
diff --git a/plugins/CoreUpdater/Updater.php b/plugins/CoreUpdater/Updater.php
index 42a965e1d0..40f1154309 100644
--- a/plugins/CoreUpdater/Updater.php
+++ b/plugins/CoreUpdater/Updater.php
@@ -10,17 +10,13 @@ namespace Piwik\Plugins\CoreUpdater;
use Exception;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Cache as PiwikCache;
use Piwik\CliMulti;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\Context;
use Piwik\Filechecks;
use Piwik\Filesystem;
-use Piwik\FrontController;
use Piwik\Http;
use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin\ReleaseChannels;
use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
diff --git a/plugins/CoreUpdater/lang/it.json b/plugins/CoreUpdater/lang/it.json
index 5466495f9a..afe24076e6 100644
--- a/plugins/CoreUpdater/lang/it.json
+++ b/plugins/CoreUpdater/lang/it.json
@@ -1,7 +1,7 @@
{
"CoreUpdater": {
"AlreadyUpToDate": "Tutto è già aggiornato.",
- "CheckingForPluginUpdates": "Controllo nuovi aggiornamenti del plugin",
+ "CheckingForPluginUpdates": "Controllo nuovi aggiornamenti dei plugin",
"ClickHereToViewSqlQueries": "Clicca qui per vedere e copiare l'elenco delle query SQL e i comandi di console che verranno eseguiti",
"CloudHosting": "Cloud hosting",
"ConsoleCommandDescription": "Trigger aggiornamenti. Usalo dopo il core di Matomo o eventuali file di plugin sono stati aggiornati. Aggiungi --yes per l'aggiornamento senza conferma.",
@@ -61,7 +61,7 @@
"PostUpdateSupport": "Se hai bisogno di aiuto per utilizzare Matomo, puoi averlo dai suoi creatori:",
"ReadyToGo": "Pronto a partire?",
"ReceiveEmailBecauseIsSuperUser": "Hai ricevuto questa email perché sei un Super User di Matomo su: %s",
- "ServicesSupport": "Servizi &amp; Supporto",
+ "ServicesSupport": "Servizi e Supporto",
"SkipCacheClear": "Salta la cancellazione delle cache.",
"SkipCacheClearDesc": "Salta la cancellazione delle cache prima dell'aggiornamento. Ciò è utile solo se puoi assicurarti che le istanze che eseguono questo comando non abbiano ancora creato una cache e se svuotare la cache per molti account Matomo non possa diventare un collo di bottiglia.",
"ThankYouUpdatePiwik": "Grazie per l'utilizzo di Matomo e per averlo aggiornato!",
diff --git a/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php b/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php
index e00697c1fb..64aa5df0db 100644
--- a/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php
+++ b/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\CoreUpdater\tests\Integration\Commands;
-use Piwik\Config;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
use Piwik\Db;
diff --git a/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php b/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php
index 57e49754e1..476b4e0e5c 100644
--- a/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php
+++ b/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php
@@ -8,10 +8,8 @@
namespace Piwik\Plugins\CoreUpdater\tests\ReleaseChannel;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Plugins\CoreUpdater\ReleaseChannel;
-use Piwik\UpdateCheck;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Url;
use Piwik\Version;
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator.php b/plugins/CoreVisualizations/JqplotDataGenerator.php
index e73e66a25f..320a1b0aa1 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator.php
@@ -15,9 +15,6 @@ use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Metrics;
-use Piwik\Period\Factory;
-use Piwik\Piwik;
-use Piwik\Plugins\API\Filter\DataComparisonFilter;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator\Chart;
use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph;
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
index 52dd29ae51..ea71ab47be 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
@@ -11,8 +11,6 @@ namespace Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\Archive\DataTableFactory;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\DataTableInterface;
-use Piwik\DataTable\Row;
use Piwik\Date;
use Piwik\Metrics;
use Piwik\Period;
diff --git a/plugins/CoreVisualizations/Visualizations/Cloud.php b/plugins/CoreVisualizations/Visualizations/Cloud.php
index 43ae5505f2..eb42ae0b63 100644
--- a/plugins/CoreVisualizations/Visualizations/Cloud.php
+++ b/plugins/CoreVisualizations/Visualizations/Cloud.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Plugin\Visualization;
-use Piwik\View;
/**
* Generates a tag cloud from a given data array.
diff --git a/plugins/CoreVisualizations/Visualizations/Graph.php b/plugins/CoreVisualizations/Visualizations/Graph.php
index 8c296ffc50..296ea624a8 100644
--- a/plugins/CoreVisualizations/Visualizations/Graph.php
+++ b/plugins/CoreVisualizations/Visualizations/Graph.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\Plugin\Metric;
use Piwik\Plugins\AbTesting\Columns\Metrics\ProcessedMetric;
use Piwik\Plugins\CoreVisualizations\Metrics\Formatter\Numeric;
diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
index 4c0ca2380c..5f655655c5 100644
--- a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
+++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
@@ -10,9 +10,7 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\View;
/**
* DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true.
diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php
index c69e00eb07..506af603a5 100644
--- a/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php
+++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\Columns\Dimension;
use Piwik\ViewDataTable\Config as VisualizationConfig;
/**
diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph.php
index 1ff6dea20e..8f5799f91d 100644
--- a/plugins/CoreVisualizations/Visualizations/JqplotGraph.php
+++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph.php
@@ -8,9 +8,7 @@
*/
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
-use Piwik\DataTable;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
-use Piwik\View;
/**
* DataTable visualization that displays DataTable data in a JQPlot graph.
diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php
index 770a144007..d56a07280c 100644
--- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php
+++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph;
use Piwik\API\Request as ApiRequest;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Period;
use Piwik\Period\Factory;
use Piwik\Period\Range;
diff --git a/plugins/CoreVisualizations/Visualizations/Sparkline.php b/plugins/CoreVisualizations/Visualizations/Sparkline.php
index 0a05b07be8..828504b4f3 100644
--- a/plugins/CoreVisualizations/Visualizations/Sparkline.php
+++ b/plugins/CoreVisualizations/Visualizations/Sparkline.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\DataTable;
use Piwik\Period;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Site;
/**
* Reads the requested DataTable from the API and prepare data for the Sparkline view.
diff --git a/plugins/CoreVisualizations/Visualizations/Sparklines.php b/plugins/CoreVisualizations/Visualizations/Sparklines.php
index 4a2b4a69ee..c8fe429659 100644
--- a/plugins/CoreVisualizations/Visualizations/Sparklines.php
+++ b/plugins/CoreVisualizations/Visualizations/Sparklines.php
@@ -16,7 +16,6 @@ use Piwik\Period\Factory;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\API\Filter\DataComparisonFilter;
use Piwik\SettingsPiwik;
-use Piwik\Url;
use Piwik\View;
/**
diff --git a/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php b/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php
index 45e74134d9..1fdda31c77 100644
--- a/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php
+++ b/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\DataTable\Filter\CalculateEvolutionFilter;
use Piwik\Metrics;
use Piwik\NoAccessException;
-use Piwik\Period\Factory;
use Piwik\Period\Range;
use Piwik\Site;
use Piwik\Url;
diff --git a/plugins/CoreVisualizations/Widgets/SingleMetricView.php b/plugins/CoreVisualizations/Widgets/SingleMetricView.php
index 74f05455ea..f2994bbbb6 100644
--- a/plugins/CoreVisualizations/Widgets/SingleMetricView.php
+++ b/plugins/CoreVisualizations/Widgets/SingleMetricView.php
@@ -14,7 +14,6 @@ use Piwik\Common;
use Piwik\View;
use Piwik\Widget\WidgetConfig;
use Piwik\Plugin\Manager as PluginManager;
-use Piwik\Plugins\Goals\API as GoalsAPI;
class SingleMetricView extends \Piwik\Widget\Widget
{
diff --git a/plugins/CoreVue/Commands/Build.php b/plugins/CoreVue/Commands/Build.php
index 558afd3ab2..a021f0de69 100644
--- a/plugins/CoreVue/Commands/Build.php
+++ b/plugins/CoreVue/Commands/Build.php
@@ -8,12 +8,10 @@
namespace Piwik\Plugins\CoreVue\Commands;
-use Piwik\AssetManager\UIAssetFetcher\JScriptUIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher\PluginUmdAssetFetcher;
use Piwik\Container\StaticContainer;
use Piwik\Filesystem;
use Piwik\Plugin\ConsoleCommand;
-use Piwik\Plugins\MobileMessaging\SMSProvider\Development;
use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -172,7 +170,7 @@ class Build extends ConsoleCommand
$vueIndexFile = $vueDir . '/src/index.ts';
if (!is_file($vueIndexFile)) {
- $logger->warning("NOTE: Plugin {plugin} has a vue folder but no webpack config, cannot build it.", ['plugin' => $plugin]);
+ $logger->warning("NOTE: Plugin {plugin} has a vue folder but no index.ts, cannot build it.", ['plugin' => $plugin]);
continue;
}
diff --git a/plugins/CoreVue/Commands/GenerateVueComponent.php b/plugins/CoreVue/Commands/GenerateVueComponent.php
index af091360d5..35849a397b 100644
--- a/plugins/CoreVue/Commands/GenerateVueComponent.php
+++ b/plugins/CoreVue/Commands/GenerateVueComponent.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\CoreVue\Commands;
-use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CoreConsole\Commands\GenerateAngularConstructBase;
use Symfony\Component\Console\Input\InputInterface;
diff --git a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js
index 3a672ee29f..4f6b0ae8be 100644
--- a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js
+++ b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js
@@ -440,6 +440,17 @@ eval("var has = __webpack_require__(/*! ../internals/has */ \"./node_modules/cor
/***/ }),
+/***/ "./node_modules/core-js/internals/correct-is-regexp-logic.js":
+/*!*******************************************************************!*\
+ !*** ./node_modules/core-js/internals/correct-is-regexp-logic.js ***!
+ \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/correct-is-regexp-logic.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/internals/correct-prototype-getter.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
@@ -873,6 +884,17 @@ eval("module.exports = false;\n\n\n//# sourceURL=webpack:///node_modules/core-js
/***/ }),
+/***/ "./node_modules/core-js/internals/is-regexp.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/internals/is-regexp.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/is-regexp.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/internals/is-symbol.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-symbol.js ***!
@@ -985,6 +1007,17 @@ eval("\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./n
/***/ }),
+/***/ "./node_modules/core-js/internals/not-a-regexp.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/internals/not-a-regexp.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/not-a-regexp.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/internals/object-assign.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/object-assign.js ***!
@@ -1596,6 +1629,18 @@ eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/co
/***/ }),
+/***/ "./node_modules/core-js/modules/es.array.includes.js":
+/*!***********************************************************!*\
+ !*** ./node_modules/core-js/modules/es.array.includes.js ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $includes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\").includes;\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.array.includes.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/modules/es.array.iterator.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/modules/es.array.iterator.js ***!
@@ -1723,6 +1768,18 @@ eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/
/***/ }),
+/***/ "./node_modules/core-js/modules/es.string.includes.js":
+/*!************************************************************!*\
+ !*** ./node_modules/core-js/modules/es.string.includes.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.string.includes.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/modules/es.string.iterator.js":
/*!************************************************************!*\
!*** ./node_modules/core-js/modules/es.string.iterator.js ***!
@@ -1747,6 +1804,18 @@ eval("\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals
/***/ }),
+/***/ "./node_modules/core-js/modules/es.string.split.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/core-js/modules/es.string.split.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.string.split.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/modules/es.string.trim.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.trim.js ***!
@@ -1836,7 +1905,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.assign.js */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.entries.js */ \"./node_modules/core-js/modules/es.object.entries.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.values.js */ \"./node_modules/core-js/modules/es.object.values.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ \"./node_modules/core-js/modules/es.object.from-entries.js\");\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */ \"./node_modules/core-js/modules/es.array.reduce.js\");\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! abortcontroller-polyfill/dist/abortcontroller-polyfill-only */ \"./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./jqueryNativeEventTrigger */ \"./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts\");\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_16__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*!\n * Matomo - free/libre analytics platform\n *\n * @link https://matomo.org\n * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later\n */\n\n/* eslint-disable */\n// this is a dummy file used to compile core-js polyfills so we don't have to include them in any\n// other file.\n\n\n\nwindow.tslib = tslib__WEBPACK_IMPORTED_MODULE_14__; // fromEntries does not have a polyfill in @vue/cli-plugin-babel/preset\n\nObject.fromEntries = function fromEntries(it) {\n return Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(it).reduce(function (result, _ref) {\n var _ref2 = Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n result[key] = value;\n return result;\n }, {});\n};\n\n\n\nfunction htmlDecode(value) {\n var textArea = document.createElement('textarea');\n textArea.innerHTML = value;\n return textArea.value;\n}\n\nvar invisibleCharEncoded = htmlDecode('&#8291;'); // modify Vue's escaping functionality to also escape angularjs {{ fields.\n// vue doesn't do this since it doesn't have this problem;\n\nvar oldToDisplayString = window.Vue.toDisplayString;\n\nwindow.Vue.toDisplayString = function matomoToDisplayString(val) {\n var result = oldToDisplayString.call(this, val);\n result = result.replace(/{{/g, \"{\".concat(invisibleCharEncoded, \"{\"));\n return result;\n};\n\nwindow.vueSanitize = function vueSanitize(val) {\n var result = dompurify__WEBPACK_IMPORTED_MODULE_13___default.a.sanitize(val);\n result = result.replace(/{{/g, '{&#8291;{');\n return result;\n};\n\n//# sourceURL=webpack:///plugins/CoreVue/polyfills/src/index.ts");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.assign.js */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.entries.js */ \"./node_modules/core-js/modules/es.object.entries.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.values.js */ \"./node_modules/core-js/modules/es.object.values.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ \"./node_modules/core-js/modules/es.object.from-entries.js\");\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */ \"./node_modules/core-js/modules/es.array.reduce.js\");\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! abortcontroller-polyfill/dist/abortcontroller-polyfill-only */ \"./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./jqueryNativeEventTrigger */ \"./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts\");\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_19__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*!\n * Matomo - free/libre analytics platform\n *\n * @link https://matomo.org\n * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later\n */\n\n/* eslint-disable */\n// this is a dummy file used to compile core-js polyfills so we don't have to include them in any\n// other file.\n\n\n\nwindow.tslib = tslib__WEBPACK_IMPORTED_MODULE_17__; // fromEntries does not have a polyfill in @vue/cli-plugin-babel/preset\n\nObject.fromEntries = function fromEntries(it) {\n return Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(it).reduce(function (result, _ref) {\n var _ref2 = Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n result[key] = value;\n return result;\n }, {});\n};\n\n\n\nfunction htmlDecode(value) {\n var textArea = document.createElement('textarea');\n textArea.innerHTML = value;\n return textArea.value;\n}\n\nvar invisibleCharEncoded = htmlDecode('&#8291;'); // modify Vue's escaping functionality to also escape angularjs {{ fields.\n// vue doesn't do this since it doesn't have this problem;\n\nvar oldToDisplayString = window.Vue.toDisplayString;\n\nwindow.Vue.toDisplayString = function matomoToDisplayString(val) {\n var result = oldToDisplayString.call(this, val);\n result = result.replace(/{{/g, \"{\".concat(invisibleCharEncoded, \"{\"));\n return result;\n};\n\nfunction hasSafeRel(rel) {\n var parts = rel.split(/\\s+/);\n return parts.includes('noopener') && parts.includes('noreferrer');\n} // remove target=_blank if a link doesn't have noopener noreferrer\n\n\ndompurify__WEBPACK_IMPORTED_MODULE_16___default.a.addHook('afterSanitizeAttributes', function (node) {\n if (node.hasAttribute('target') && node.getAttribute('target') === '_blank' && (!node.hasAttribute('rel') || !hasSafeRel(node.getAttribute('rel')))) {\n node.removeAttribute('target');\n }\n});\n\nwindow.vueSanitize = function vueSanitize(val) {\n var result = dompurify__WEBPACK_IMPORTED_MODULE_16___default.a.sanitize(val, {\n ADD_ATTR: ['target']\n });\n result = result.replace(/{{/g, '{&#8291;{');\n return result;\n};\n\n//# sourceURL=webpack:///plugins/CoreVue/polyfills/src/index.ts");
/***/ }),
diff --git a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js
index d5740050dd..385502fa8c 100644
--- a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js
+++ b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js
@@ -1,17 +1,17 @@
-(function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s="452c")})({"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"057f":function(t,e,n){var r=n("fc6a"),o=n("241c").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?c(t):o(r(t))}},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),a=n("fc6a"),c=n("a04b"),u=n("5135"),f=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=c(e),f)try{return l(t,e)}catch(n){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},"07ac":function(t,e,n){var r=n("23e7"),o=n("6f53").values;r({target:"Object",stat:!0},{values:function(t){return o(t)}})},"0b42":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t){var e;return o(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!o(e.prototype)?r(e)&&(e=e[a],null===e&&(e=void 0)):e=void 0),void 0===e?Array:e}},"0cb2":function(t,e,n){var r=n("7b0b"),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,c=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,u,f,l){var s=n+t.length,p=u.length,d=c;return void 0!==f&&(f=r(f),d=a),i.call(l,d,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(s);case"<":a=f[i.slice(1,-1)];break;default:var c=+i;if(0===c)return r;if(c>p){var l=o(c/10);return 0===l?r:l<=p?void 0===u[l-1]?i.charAt(1):u[l-1]+i.charAt(1):r}a=u[c-1]}return void 0===a?"":a}))}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"107c":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},"13d5":function(t,e,n){"use strict";var r=n("23e7"),o=n("d58f").left,i=n("a640"),a=n("2d00"),c=n("605d"),u=i("reduce"),f=!c&&a>79&&a<83;r({target:"Array",proto:!0,forced:!u||f},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,c={next:function(){return{done:!!a++}},return:function(){i=!0}};c[o]=function(){return this},Array.from(c,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(u){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),c=n("35a1"),u=n("2a62"),f=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var l,s,p,d,v,y,h,m=n&&n.that,b=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),x=!(!n||!n.INTERRUPTED),w=a(e,m,1+b+x),S=function(t){return l&&u(l),new f(!0,t)},O=function(t){return b?(r(t),x?w(t[0],t[1],S):w(t[0],t[1])):x?w(t,S):w(t)};if(g)l=t;else{if(s=c(t),"function"!=typeof s)throw TypeError("Target is not iterable");if(o(s)){for(p=0,d=i(t.length);d>p;p++)if(v=O(t[p]),v&&v instanceof f)return v;return new f(!1)}l=s.call(t)}y=l.next;while(!(h=y.call(l)).done){try{v=O(h.value)}catch(T){throw u(l),T}if("object"==typeof v&&v&&v instanceof f)return v}return new f(!1)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),u=n("e893"),f=n("94ca");t.exports=function(t,e){var n,l,s,p,d,v,y=t.target,h=t.global,m=t.stat;if(l=h?r:m?r[y]||c(y,{}):(r[y]||{}).prototype,l)for(s in e){if(d=e[s],t.noTargetGet?(v=o(l,s),p=v&&v.value):p=l[s],n=f(h?s:y+(m?".":"#")+s,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;u(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),a(l,s,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},"24aa":function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2cf4":function(t,e,n){var r,o,i,a,c=n("da84"),u=n("d039"),f=n("0366"),l=n("1be4"),s=n("cc12"),p=n("1cdc"),d=n("605d"),v=c.setImmediate,y=c.clearImmediate,h=c.process,m=c.MessageChannel,b=c.Dispatch,g=0,x={},w="onreadystatechange";try{r=c.location}catch(A){}var S=function(t){if(x.hasOwnProperty(t)){var e=x[t];delete x[t],e()}},O=function(t){return function(){S(t)}},T=function(t){S(t.data)},_=function(t){c.postMessage(String(t),r.protocol+"//"+r.host)};v&&y||(v=function(t){var e=[],n=arguments.length,r=1;while(n>r)e.push(arguments[r++]);return x[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},o(g),g},y=function(t){delete x[t]},d?o=function(t){h.nextTick(O(t))}:b&&b.now?o=function(t){b.now(O(t))}:m&&!p?(i=new m,a=i.port2,i.port1.onmessage=T,o=f(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&r&&"file:"!==r.protocol&&!u(_)?(o=_,c.addEventListener("message",T,!1)):o=w in s("script")?function(t){l.appendChild(s("script"))[w]=function(){l.removeChild(this),S(t)}}:function(t){setTimeout(O(t),0)}),t.exports={set:v,clear:y}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,u=i.Deno,f=c&&c.versions||u&&u.version,l=f&&f.v8;l?(r=l.split("."),o=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),a=i("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||o[r(t)]}},"37e8":function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("825a"),a=n("df75");t.exports=r?Object.defineProperties:function(t,e){i(t);var n,r=a(e),c=r.length,u=0;while(c>u)o.f(t,n=r[u++],e[n]);return t}},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var r=n("6547").charAt,o=n("577e"),i=n("69f3"),a=n("7dd0"),c="String Iterator",u=i.set,f=i.getterFor(c);a(String,"String",(function(t){u(this,{type:c,string:o(t),index:0})}),(function(){var t,e=f(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),c=Array.prototype;void 0==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"452c":function(t,e,n){"use strict";n.r(e);var r={};function o(t){if(Array.isArray(t))return t}n.r(r),n.d(r,"__extends",(function(){return m})),n.d(r,"__assign",(function(){return b})),n.d(r,"__rest",(function(){return g})),n.d(r,"__decorate",(function(){return x})),n.d(r,"__param",(function(){return w})),n.d(r,"__metadata",(function(){return S})),n.d(r,"__awaiter",(function(){return O})),n.d(r,"__generator",(function(){return T})),n.d(r,"__createBinding",(function(){return _})),n.d(r,"__exportStar",(function(){return A})),n.d(r,"__values",(function(){return E})),n.d(r,"__read",(function(){return j})),n.d(r,"__spread",(function(){return R})),n.d(r,"__spreadArrays",(function(){return P})),n.d(r,"__await",(function(){return k})),n.d(r,"__asyncGenerator",(function(){return I})),n.d(r,"__asyncDelegator",(function(){return L})),n.d(r,"__asyncValues",(function(){return M})),n.d(r,"__makeTemplateObject",(function(){return N})),n.d(r,"__importStar",(function(){return D})),n.d(r,"__importDefault",(function(){return C})),n.d(r,"__classPrivateFieldGet",(function(){return F})),n.d(r,"__classPrivateFieldSet",(function(){return U}));n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0");function i(t,e){var n=null==t?null:"undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i=[],a=!0,c=!1;try{for(n=n.call(t);!(a=(r=n.next()).done);a=!0)if(i.push(r.value),e&&i.length===e)break}catch(u){c=!0,o=u}finally{try{a||null==n["return"]||n["return"]()}finally{if(c)throw o}}return i}}n("fb6a"),n("a630");function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(t,e){if(t){if("string"===typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}function u(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(t,e){return o(t)||i(t,e)||c(t,e)||u()}function l(t){if(Array.isArray(t))return a(t)}function s(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function p(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(t){return l(t)||s(t)||c(t)||p()}n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("4fad"),n("07ac"),n("498a"),n("c1f9"),n("13d5"),n("ac1f"),n("5319");var v=n("c0c4"),y=n.n(v),h=function(t,e){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},h(t,e)};function m(t,e){function n(){this.constructor=t}h(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var b=function(){return b=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n],e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},b.apply(this,arguments)};function g(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n}function x(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var c=t.length-1;c>=0;c--)(o=t[c])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function w(t,e){return function(n,r){e(n,r,t)}}function S(t,e){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(t,e)}function O(t,e,n,r){function o(t){return t instanceof n?t:new n((function(e){e(t)}))}return new(n||(n=Promise))((function(n,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function c(t){try{u(r["throw"](t))}catch(e){i(e)}}function u(t){t.done?n(t.value):o(t.value).then(a,c)}u((r=r.apply(t,e||[])).next())}))}function T(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"===typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(t){return function(e){return u([t,e])}}function u(i){if(n)throw new TypeError("Generator is already executing.");while(a)try{if(n=1,r&&(o=2&i[0]?r["return"]:i[0]?r["throw"]||((o=r["return"])&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(o=a.trys,!(o=o.length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(c){i=[6,c],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}function _(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}function A(t,e){for(var n in t)"default"===n||e.hasOwnProperty(n)||(e[n]=t[n])}function E(t){var e="function"===typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"===typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function j(t,e){var n="function"===typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{while((void 0===e||e-- >0)&&!(r=i.next()).done)a.push(r.value)}catch(c){o={error:c}}finally{try{r&&!r.done&&(n=i["return"])&&n.call(i)}finally{if(o)throw o.error}}return a}function R(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(j(arguments[e]));return t}function P(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var r=Array(t),o=0;for(e=0;e<n;e++)for(var i=arguments[e],a=0,c=i.length;a<c;a++,o++)r[o]=i[a];return r}function k(t){return this instanceof k?(this.v=t,this):new k(t)}function I(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(t,e||[]),i=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(t){o[t]&&(r[t]=function(e){return new Promise((function(n,r){i.push([t,e,n,r])>1||c(t,e)}))})}function c(t,e){try{u(o[t](e))}catch(n){s(i[0][3],n)}}function u(t){t.value instanceof k?Promise.resolve(t.value.v).then(f,l):s(i[0][2],t)}function f(t){c("next",t)}function l(t){c("throw",t)}function s(t,e){t(e),i.shift(),i.length&&c(i[0][0],i[0][1])}}function L(t){var e,n;return e={},r("next"),r("throw",(function(t){throw t})),r("return"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:k(t[r](e)),done:"return"===r}:o?o(e):e}:o}}function M(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t="function"===typeof E?E(t):t[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,i){e=t[n](e),o(r,i,e.done,e.value)}))}}function o(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)}}function N(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function D(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function C(t){return t&&t.__esModule?t:{default:t}}function F(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function U(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}n("772f"),n("a572");function z(t){var e=document.createElement("textarea");return e.innerHTML=t,e.value}
+(function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s="452c")})({"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"057f":function(t,e,n){var r=n("fc6a"),o=n("241c").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?c(t):o(r(t))}},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),a=n("fc6a"),c=n("a04b"),u=n("5135"),f=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=c(e),f)try{return l(t,e)}catch(n){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},"07ac":function(t,e,n){var r=n("23e7"),o=n("6f53").values;r({target:"Object",stat:!0},{values:function(t){return o(t)}})},"0b42":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t){var e;return o(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!o(e.prototype)?r(e)&&(e=e[a],null===e&&(e=void 0)):e=void 0),void 0===e?Array:e}},"0cb2":function(t,e,n){var r=n("7b0b"),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,c=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,u,f,l){var s=n+t.length,p=u.length,d=c;return void 0!==f&&(f=r(f),d=a),i.call(l,d,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(s);case"<":a=f[i.slice(1,-1)];break;default:var c=+i;if(0===c)return r;if(c>p){var l=o(c/10);return 0===l?r:l<=p?void 0===u[l-1]?i.charAt(1):u[l-1]+i.charAt(1):r}a=u[c-1]}return void 0===a?"":a}))}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"107c":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},1276:function(t,e,n){"use strict";var r=n("d784"),o=n("44e7"),i=n("825a"),a=n("1d80"),c=n("4840"),u=n("8aa5"),f=n("50c4"),l=n("577e"),s=n("14c3"),p=n("9263"),d=n("9f7f"),v=n("d039"),h=d.UNSUPPORTED_Y,y=[].push,b=Math.min,m=4294967295,g=!v((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));r("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=l(a(this)),i=void 0===n?m:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!o(t))return e.call(r,t,i);var c,u,f,s=[],d=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,h=new RegExp(t.source,d+"g");while(c=p.call(h,r)){if(u=h.lastIndex,u>v&&(s.push(r.slice(v,c.index)),c.length>1&&c.index<r.length&&y.apply(s,c.slice(1)),f=c[0].length,v=u,s.length>=i))break;h.lastIndex===c.index&&h.lastIndex++}return v===r.length?!f&&h.test("")||s.push(""):s.push(r.slice(v)),s.length>i?s.slice(0,i):s}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=a(this),i=void 0==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(l(o),e,n)},function(t,o){var a=i(this),p=l(t),d=n(r,a,p,o,r!==e);if(d.done)return d.value;var v=c(a,RegExp),y=a.unicode,g=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(h?"g":"y"),x=new v(h?"^(?:"+a.source+")":a,g),w=void 0===o?m:o>>>0;if(0===w)return[];if(0===p.length)return null===s(x,p)?[p]:[];var S=0,O=0,T=[];while(O<p.length){x.lastIndex=h?0:O;var A,_=s(x,h?p.slice(O):p);if(null===_||(A=b(f(x.lastIndex+(h?O:0)),p.length))===S)O=u(p,O,y);else{if(T.push(p.slice(S,O)),T.length===w)return T;for(var E=1;E<=_.length-1;E++)if(T.push(_[E]),T.length===w)return T;O=S=A}}return T.push(p.slice(S)),T}]}),!g,h)},"13d5":function(t,e,n){"use strict";var r=n("23e7"),o=n("d58f").left,i=n("a640"),a=n("2d00"),c=n("605d"),u=i("reduce"),f=!c&&a>79&&a<83;r({target:"Array",proto:!0,forced:!u||f},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,c={next:function(){return{done:!!a++}},return:function(){i=!0}};c[o]=function(){return this},Array.from(c,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(u){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),c=n("35a1"),u=n("2a62"),f=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var l,s,p,d,v,h,y,b=n&&n.that,m=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),x=!(!n||!n.INTERRUPTED),w=a(e,b,1+m+x),S=function(t){return l&&u(l),new f(!0,t)},O=function(t){return m?(r(t),x?w(t[0],t[1],S):w(t[0],t[1])):x?w(t,S):w(t)};if(g)l=t;else{if(s=c(t),"function"!=typeof s)throw TypeError("Target is not iterable");if(o(s)){for(p=0,d=i(t.length);d>p;p++)if(v=O(t[p]),v&&v instanceof f)return v;return new f(!1)}l=s.call(t)}h=l.next;while(!(y=h.call(l)).done){try{v=O(y.value)}catch(T){throw u(l),T}if("object"==typeof v&&v&&v instanceof f)return v}return new f(!1)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),u=n("e893"),f=n("94ca");t.exports=function(t,e){var n,l,s,p,d,v,h=t.target,y=t.global,b=t.stat;if(l=y?r:b?r[h]||c(h,{}):(r[h]||{}).prototype,l)for(s in e){if(d=e[s],t.noTargetGet?(v=o(l,s),p=v&&v.value):p=l[s],n=f(y?s:h+(b?".":"#")+s,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;u(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),a(l,s,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},"24aa":function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},2532:function(t,e,n){"use strict";var r=n("23e7"),o=n("5a34"),i=n("1d80"),a=n("577e"),c=n("ab13");r({target:"String",proto:!0,forced:!c("includes")},{includes:function(t){return!!~a(i(this)).indexOf(a(o(t)),arguments.length>1?arguments[1]:void 0)}})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2cf4":function(t,e,n){var r,o,i,a,c=n("da84"),u=n("d039"),f=n("0366"),l=n("1be4"),s=n("cc12"),p=n("1cdc"),d=n("605d"),v=c.setImmediate,h=c.clearImmediate,y=c.process,b=c.MessageChannel,m=c.Dispatch,g=0,x={},w="onreadystatechange";try{r=c.location}catch(_){}var S=function(t){if(x.hasOwnProperty(t)){var e=x[t];delete x[t],e()}},O=function(t){return function(){S(t)}},T=function(t){S(t.data)},A=function(t){c.postMessage(String(t),r.protocol+"//"+r.host)};v&&h||(v=function(t){var e=[],n=arguments.length,r=1;while(n>r)e.push(arguments[r++]);return x[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},o(g),g},h=function(t){delete x[t]},d?o=function(t){y.nextTick(O(t))}:m&&m.now?o=function(t){m.now(O(t))}:b&&!p?(i=new b,a=i.port2,i.port1.onmessage=T,o=f(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&r&&"file:"!==r.protocol&&!u(A)?(o=A,c.addEventListener("message",T,!1)):o=w in s("script")?function(t){l.appendChild(s("script"))[w]=function(){l.removeChild(this),S(t)}}:function(t){setTimeout(O(t),0)}),t.exports={set:v,clear:h}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,u=i.Deno,f=c&&c.versions||u&&u.version,l=f&&f.v8;l?(r=l.split("."),o=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),a=i("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||o[r(t)]}},"37e8":function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("825a"),a=n("df75");t.exports=r?Object.defineProperties:function(t,e){i(t);var n,r=a(e),c=r.length,u=0;while(c>u)o.f(t,n=r[u++],e[n]);return t}},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var r=n("6547").charAt,o=n("577e"),i=n("69f3"),a=n("7dd0"),c="String Iterator",u=i.set,f=i.getterFor(c);a(String,"String",(function(t){u(this,{type:c,string:o(t),index:0})}),(function(){var t,e=f(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),c=Array.prototype;void 0==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"452c":function(t,e,n){"use strict";n.r(e);var r={};function o(t){if(Array.isArray(t))return t}n.r(r),n.d(r,"__extends",(function(){return b})),n.d(r,"__assign",(function(){return m})),n.d(r,"__rest",(function(){return g})),n.d(r,"__decorate",(function(){return x})),n.d(r,"__param",(function(){return w})),n.d(r,"__metadata",(function(){return S})),n.d(r,"__awaiter",(function(){return O})),n.d(r,"__generator",(function(){return T})),n.d(r,"__createBinding",(function(){return A})),n.d(r,"__exportStar",(function(){return _})),n.d(r,"__values",(function(){return E})),n.d(r,"__read",(function(){return j})),n.d(r,"__spread",(function(){return R})),n.d(r,"__spreadArrays",(function(){return P})),n.d(r,"__await",(function(){return k})),n.d(r,"__asyncGenerator",(function(){return I})),n.d(r,"__asyncDelegator",(function(){return L})),n.d(r,"__asyncValues",(function(){return M})),n.d(r,"__makeTemplateObject",(function(){return N})),n.d(r,"__importStar",(function(){return D})),n.d(r,"__importDefault",(function(){return C})),n.d(r,"__classPrivateFieldGet",(function(){return F})),n.d(r,"__classPrivateFieldSet",(function(){return U}));n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0");function i(t,e){var n=null==t?null:"undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i=[],a=!0,c=!1;try{for(n=n.call(t);!(a=(r=n.next()).done);a=!0)if(i.push(r.value),e&&i.length===e)break}catch(u){c=!0,o=u}finally{try{a||null==n["return"]||n["return"]()}finally{if(c)throw o}}return i}}n("fb6a"),n("a630");function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(t,e){if(t){if("string"===typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}function u(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(t,e){return o(t)||i(t,e)||c(t,e)||u()}function l(t){if(Array.isArray(t))return a(t)}function s(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function p(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(t){return l(t)||s(t)||c(t)||p()}n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("4fad"),n("07ac"),n("498a"),n("c1f9"),n("13d5"),n("ac1f"),n("5319"),n("1276"),n("caad"),n("2532");var v=n("c0c4"),h=n.n(v),y=function(t,e){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},y(t,e)};function b(t,e){function n(){this.constructor=t}y(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var m=function(){return m=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n],e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},m.apply(this,arguments)};function g(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n}function x(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var c=t.length-1;c>=0;c--)(o=t[c])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function w(t,e){return function(n,r){e(n,r,t)}}function S(t,e){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(t,e)}function O(t,e,n,r){function o(t){return t instanceof n?t:new n((function(e){e(t)}))}return new(n||(n=Promise))((function(n,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function c(t){try{u(r["throw"](t))}catch(e){i(e)}}function u(t){t.done?n(t.value):o(t.value).then(a,c)}u((r=r.apply(t,e||[])).next())}))}function T(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"===typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(t){return function(e){return u([t,e])}}function u(i){if(n)throw new TypeError("Generator is already executing.");while(a)try{if(n=1,r&&(o=2&i[0]?r["return"]:i[0]?r["throw"]||((o=r["return"])&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(o=a.trys,!(o=o.length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(c){i=[6,c],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}function A(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}function _(t,e){for(var n in t)"default"===n||e.hasOwnProperty(n)||(e[n]=t[n])}function E(t){var e="function"===typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"===typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function j(t,e){var n="function"===typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{while((void 0===e||e-- >0)&&!(r=i.next()).done)a.push(r.value)}catch(c){o={error:c}}finally{try{r&&!r.done&&(n=i["return"])&&n.call(i)}finally{if(o)throw o.error}}return a}function R(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(j(arguments[e]));return t}function P(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var r=Array(t),o=0;for(e=0;e<n;e++)for(var i=arguments[e],a=0,c=i.length;a<c;a++,o++)r[o]=i[a];return r}function k(t){return this instanceof k?(this.v=t,this):new k(t)}function I(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(t,e||[]),i=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(t){o[t]&&(r[t]=function(e){return new Promise((function(n,r){i.push([t,e,n,r])>1||c(t,e)}))})}function c(t,e){try{u(o[t](e))}catch(n){s(i[0][3],n)}}function u(t){t.value instanceof k?Promise.resolve(t.value.v).then(f,l):s(i[0][2],t)}function f(t){c("next",t)}function l(t){c("throw",t)}function s(t,e){t(e),i.shift(),i.length&&c(i[0][0],i[0][1])}}function L(t){var e,n;return e={},r("next"),r("throw",(function(t){throw t})),r("return"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:k(t[r](e)),done:"return"===r}:o?o(e):e}:o}}function M(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t="function"===typeof E?E(t):t[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,i){e=t[n](e),o(r,i,e.done,e.value)}))}}function o(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)}}function N(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function D(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function C(t){return t&&t.__esModule?t:{default:t}}function F(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function U(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}n("772f"),n("a572");function z(t){var e=document.createElement("textarea");return e.innerHTML=t,e.value}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-window.tslib=r,Object.fromEntries=function(t){return d(t).reduce((function(t,e){var n=f(e,2),r=n[0],o=n[1];return t[r]=o,t}),{})};var H=z("&#8291;"),B=window.Vue.toDisplayString;window.Vue.toDisplayString=function(t){var e=B.call(this,t);return e=e.replace(/{{/g,"{".concat(H,"{")),e},window.vueSanitize=function(t){var e=y.a.sanitize(t);return e=e.replace(/{{/g,"{&#8291;{"),e}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},"485a":function(t,e,n){var r=n("861d");t.exports=function(t,e){var n,o;if("string"===e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if("string"!==e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},4930:function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"498a":function(t,e,n){"use strict";var r=n("23e7"),o=n("58a8").trim,i=n("c8d2");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),l=i(a,f);if(t&&n!=n){while(f>l)if(c=u[l++],c!=c)return!0}else for(;f>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4df4":function(t,e,n){"use strict";var r=n("0366"),o=n("7b0b"),i=n("9bdd"),a=n("e95a"),c=n("50c4"),u=n("8418"),f=n("35a1");t.exports=function(t){var e,n,l,s,p,d,v=o(t),y="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,b=void 0!==m,g=f(v),x=0;if(b&&(m=r(m,h>2?arguments[2]:void 0,2)),void 0==g||y==Array&&a(g))for(e=c(v.length),n=new y(e);e>x;x++)d=b?m(v[x],x):v[x],u(n,x,d);else for(s=g.call(v),p=s.next,n=new y;!(l=p.call(s)).done;x++)d=b?i(s,m,[l.value,x],!0):l.value,u(n,x,d);return n.length=x,n}},"4fad":function(t,e,n){var r=n("23e7"),o=n("6f53").entries;r({target:"Object",stat:!0},{entries:function(t){return o(t)}})},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return o.call(r(t),e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("d039"),i=n("825a"),a=n("a691"),c=n("50c4"),u=n("577e"),f=n("1d80"),l=n("8aa5"),s=n("0cb2"),p=n("14c3"),d=n("b622"),v=d("replace"),y=Math.max,h=Math.min,m=function(t){return void 0===t?t:String(t)},b=function(){return"$0"==="a".replace(/./,"$0")}(),g=function(){return!!/./[v]&&""===/./[v]("a","$0")}(),x=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));r("replace",(function(t,e,n){var r=g?"$":"$0";return[function(t,n){var r=f(this),o=void 0==t?void 0:t[v];return void 0!==o?o.call(t,r,n):e.call(u(r),t,n)},function(t,o){var f=i(this),d=u(t);if("string"===typeof o&&-1===o.indexOf(r)&&-1===o.indexOf("$<")){var v=n(e,f,d,o);if(v.done)return v.value}var b="function"===typeof o;b||(o=u(o));var g=f.global;if(g){var x=f.unicode;f.lastIndex=0}var w=[];while(1){var S=p(f,d);if(null===S)break;if(w.push(S),!g)break;var O=u(S[0]);""===O&&(f.lastIndex=l(d,c(f.lastIndex),x))}for(var T="",_=0,A=0;A<w.length;A++){S=w[A];for(var E=u(S[0]),j=y(h(a(S.index),d.length),0),R=[],P=1;P<S.length;P++)R.push(m(S[P]));var k=S.groups;if(b){var I=[E].concat(R,j,d);void 0!==k&&I.push(k);var L=u(o.apply(void 0,I))}else L=s(E,d,j,R,k,o);j>=_&&(T+=d.slice(_,j)+L,_=j+E.length)}return T+d.slice(_)}]}),!x||!b||g)},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.16.3",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"577e":function(t,e,n){var r=n("d9b5");t.exports=function(t){if(r(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)}},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),o=n("577e"),i=n("5899"),a="["+i+"]",c=RegExp("^"+a+a+"*"),u=RegExp(a+a+"*$"),f=function(t){return function(e){var n=o(r(e));return 1&t&&(n=n.replace(c,"")),2&t&&(n=n.replace(u,"")),n}};t.exports={start:f(1),end:f(2),trim:f(3)}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6069:function(t,e){t.exports="object"==typeof window},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),c=n("d1e7"),u=n("7b0b"),f=n("44ad"),l=Object.assign,s=Object.defineProperty;t.exports=!l||o((function(){if(r&&1!==l({b:1},l(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||i(l({},e)).join("")!=o}))?function(t,e){var n=u(t),o=arguments.length,l=1,s=a.f,p=c.f;while(o>l){var d,v=f(arguments[l++]),y=s?i(v).concat(s(v)):i(v),h=y.length,m=0;while(h>m)d=y[m++],r&&!p.call(v,d)||(n[d]=v[d])}return n}:l},6547:function(t,e,n){var r=n("a691"),o=n("577e"),i=n("1d80"),a=function(t){return function(e,n){var a,c,u=o(i(e)),f=r(n),l=u.length;return f<0||f>=l?t?"":void 0:(a=u.charCodeAt(f),a<55296||a>56319||f+1===l||(c=u.charCodeAt(f+1))<56320||c>57343?t?u.charAt(f):a:t?u.slice(f,f+2):c-56320+(a-55296<<10)+65536)}};t.exports={codeAt:a(!1),charAt:a(!0)}},"65f0":function(t,e,n){var r=n("0b42");t.exports=function(t,e){return new(r(t))(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),u=n("861d"),f=n("9112"),l=n("5135"),s=n("c6cd"),p=n("f772"),d=n("d012"),v="Object already initialized",y=c.WeakMap,h=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||s.state){var b=s.state||(s.state=new y),g=b.get,x=b.has,w=b.set;r=function(t,e){if(x.call(b,t))throw new TypeError(v);return e.facade=t,w.call(b,t,e),e},o=function(t){return g.call(b,t)||{}},i=function(t){return x.call(b,t)}}else{var S=p("state");d[S]=!0,r=function(t,e){if(l(t,S))throw new TypeError(v);return e.facade=t,f(t,S,e),e},o=function(t){return l(t,S)?t[S]:{}},i=function(t){return l(t,S)}}t.exports={set:r,get:o,has:i,enforce:h,getterFor:m}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),u=n("69f3"),f=u.get,l=u.enforce,s=String(String).split("String");(t.exports=function(t,e,n,c){var u,f=!!c&&!!c.unsafe,p=!!c&&!!c.enumerable,d=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),u=l(n),u.source||(u.source=s.join("string"==typeof e?e:""))),t!==r?(f?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||c(this)}))},"6f53":function(t,e,n){var r=n("83ab"),o=n("df75"),i=n("fc6a"),a=n("d1e7").f,c=function(t){return function(e){var n,c=i(e),u=o(c),f=u.length,l=0,s=[];while(f>l)n=u[l++],r&&!a.call(c,n)||s.push(t?[n,c[n]]:c[n]);return s}};t.exports={entries:c(!0),values:c(!1)}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"772f":function(t,e,n){(function(r){var o,i;(function(r){o=r,i="function"===typeof o?o.call(e,n,e,t):o,void 0===i||(t.exports=i)})((function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function o(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function a(t,e){return a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},a(t,e)}function c(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,e){return!e||"object"!==typeof e&&"function"!==typeof e?u(t):e}function l(t){var e=c();return function(){var n,r=i(t);if(e){var o=i(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return f(this,n)}}function s(t,e){while(!Object.prototype.hasOwnProperty.call(t,e))if(t=i(t),null===t)break;return t}function p(t,e,n){return p="undefined"!==typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=s(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}},p(t,e,n||t)}var d=function(){function e(){t(this,e),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return n(e,[{key:"addEventListener",value:function(t,e,n){t in this.listeners||(this.listeners[t]=[]),this.listeners[t].push({callback:e,options:n})}},{key:"removeEventListener",value:function(t,e){if(t in this.listeners)for(var n=this.listeners[t],r=0,o=n.length;r<o;r++)if(n[r].callback===e)return void n.splice(r,1)}},{key:"dispatchEvent",value:function(t){if(t.type in this.listeners){for(var e=this.listeners[t.type],n=e.slice(),r=0,o=n.length;r<o;r++){var i=n[r];try{i.callback.call(this,t)}catch(a){Promise.resolve().then((function(){throw a}))}i.options&&i.options.once&&this.removeEventListener(t.type,i.callback)}return!t.defaultPrevented}}}]),e}(),v=function(e){o(a,e);var r=l(a);function a(){var e;return t(this,a),e=r.call(this),e.listeners||d.call(u(e)),Object.defineProperty(u(e),"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(u(e),"onabort",{value:null,writable:!0,configurable:!0}),e}return n(a,[{key:"toString",value:function(){return"[object AbortSignal]"}},{key:"dispatchEvent",value:function(t){"abort"===t.type&&(this.aborted=!0,"function"===typeof this.onabort&&this.onabort.call(this,t)),p(i(a.prototype),"dispatchEvent",this).call(this,t)}}]),a}(d),y=function(){function e(){t(this,e),Object.defineProperty(this,"signal",{value:new v,writable:!0,configurable:!0})}return n(e,[{key:"abort",value:function(){var t;try{t=new Event("abort")}catch(e){"undefined"!==typeof document?document.createEvent?(t=document.createEvent("Event"),t.initEvent("abort",!1,!1)):(t=document.createEventObject(),t.type="abort"):t={type:"abort",bubbles:!1,cancelable:!1}}this.signal.dispatchEvent(t)}},{key:"toString",value:function(){return"[object AbortController]"}}]),e}();function h(t){return t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):"function"===typeof t.Request&&!t.Request.prototype.hasOwnProperty("signal")||!t.AbortController}"undefined"!==typeof Symbol&&Symbol.toStringTag&&(y.prototype[Symbol.toStringTag]="AbortController",v.prototype[Symbol.toStringTag]="AbortSignal"),function(t){h(t)&&(t.AbortController=y,t.AbortSignal=v)}("undefined"!==typeof self?self:r)}))}).call(this,n("24aa"))},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),c=n("d012"),u=n("1be4"),f=n("cc12"),l=n("f772"),s=">",p="<",d="prototype",v="script",y=l("IE_PROTO"),h=function(){},m=function(t){return p+v+s+t+p+"/"+v+s},b=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=f("iframe"),n="java"+v+":";return e.style.display="none",u.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(m("document.F=Object")),t.close(),t.F},x=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}x="undefined"!=typeof document?document.domain&&r?b(r):g():b(r);var t=a.length;while(t--)delete x[d][a[t]];return x()};c[y]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(h[d]=o(t),n=new h,h[d]=null,n[y]=t):n=x(),void 0===e?n:i(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),o=n("9ed3"),i=n("e163"),a=n("d2bb"),c=n("d44e"),u=n("9112"),f=n("6eeb"),l=n("b622"),s=n("c430"),p=n("3f8c"),d=n("ae93"),v=d.IteratorPrototype,y=d.BUGGY_SAFARI_ITERATORS,h=l("iterator"),m="keys",b="values",g="entries",x=function(){return this};t.exports=function(t,e,n,l,d,w,S){o(n,e,l);var O,T,_,A=function(t){if(t===d&&k)return k;if(!y&&t in R)return R[t];switch(t){case m:return function(){return new n(this,t)};case b:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this)}},E=e+" Iterator",j=!1,R=t.prototype,P=R[h]||R["@@iterator"]||d&&R[d],k=!y&&P||A(d),I="Array"==e&&R.entries||P;if(I&&(O=i(I.call(new t)),v!==Object.prototype&&O.next&&(s||i(O)===v||(a?a(O,v):"function"!=typeof O[h]&&u(O,h,x)),c(O,E,!0,!0),s&&(p[E]=x))),d==b&&P&&P.name!==b&&(j=!0,k=function(){return P.call(this)}),s&&!S||R[h]===k||u(R,h,k),p[e]=k,d)if(T={values:A(b),keys:w?k:A(m),entries:A(g)},S)for(_ in T)(y||j||!(_ in R))&&f(R,_,T[_]);else r({target:e,proto:!0,forced:y||j},T);return T}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("a04b"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("577e"),o=n("ad6d"),i=n("9f7f"),a=n("5692"),c=n("7c73"),u=n("69f3").get,f=n("fce3"),l=n("107c"),s=RegExp.prototype.exec,p=a("native-string-replace",String.prototype.replace),d=s,v=function(){var t=/a/,e=/b*/g;return s.call(t,"a"),s.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),y=i.UNSUPPORTED_Y||i.BROKEN_CARET,h=void 0!==/()??/.exec("")[1],m=v||h||y||f||l;m&&(d=function(t){var e,n,i,a,f,l,m,b=this,g=u(b),x=r(t),w=g.raw;if(w)return w.lastIndex=b.lastIndex,e=d.call(w,x),b.lastIndex=w.lastIndex,e;var S=g.groups,O=y&&b.sticky,T=o.call(b),_=b.source,A=0,E=x;if(O&&(T=T.replace("y",""),-1===T.indexOf("g")&&(T+="g"),E=x.slice(b.lastIndex),b.lastIndex>0&&(!b.multiline||b.multiline&&"\n"!==x.charAt(b.lastIndex-1))&&(_="(?: "+_+")",E=" "+E,A++),n=new RegExp("^(?:"+_+")",T)),h&&(n=new RegExp("^"+_+"$(?!\\s)",T)),v&&(i=b.lastIndex),a=s.call(O?n:b,E),O?a?(a.input=a.input.slice(A),a[0]=a[0].slice(A),a.index=b.lastIndex,b.lastIndex+=a[0].length):b.lastIndex=0:v&&a&&(b.lastIndex=b.global?a.index+a[0].length:i),h&&a&&a.length>1&&p.call(a[0],n,(function(){for(f=1;f<arguments.length-2;f++)void 0===arguments[f]&&(a[f]=void 0)})),a&&S)for(a.groups=l=c(null),f=0;f<S.length;f++)m=S[f],l[m[0]]=a[m[1]];return a}),t.exports=d},"94ca":function(t,e,n){var r=n("d039"),o=/#|\.prototype\./,i=function(t,e){var n=c[a(t)];return n==f||n!=u&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},"9bdd":function(t,e,n){var r=n("825a"),o=n("2a62");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(a){throw o(t),a}}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("a04b"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9ed3":function(t,e,n){"use strict";var r=n("ae93").IteratorPrototype,o=n("7c73"),i=n("5c6c"),a=n("d44e"),c=n("3f8c"),u=function(){return this};t.exports=function(t,e,n){var f=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,f,!1,!0),c[f]=u,t}},"9f7f":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;e.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a04b:function(t,e,n){var r=n("c04e"),o=n("d9b5");t.exports=function(t){var e=r(t,"string");return o(e)?e:String(e)}},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),o=n("da84"),i=n("d066"),a=n("c430"),c=n("83ab"),u=n("4930"),f=n("d039"),l=n("5135"),s=n("e8b5"),p=n("861d"),d=n("d9b5"),v=n("825a"),y=n("7b0b"),h=n("fc6a"),m=n("a04b"),b=n("577e"),g=n("5c6c"),x=n("7c73"),w=n("df75"),S=n("241c"),O=n("057f"),T=n("7418"),_=n("06cf"),A=n("9bf2"),E=n("d1e7"),j=n("9112"),R=n("6eeb"),P=n("5692"),k=n("f772"),I=n("d012"),L=n("90e3"),M=n("b622"),N=n("e538"),D=n("746f"),C=n("d44e"),F=n("69f3"),U=n("b727").forEach,z=k("hidden"),H="Symbol",B="prototype",G=M("toPrimitive"),$=F.set,W=F.getterFor(H),V=Object[B],q=o.Symbol,Y=i("JSON","stringify"),K=_.f,X=A.f,J=O.f,Q=E.f,Z=P("symbols"),tt=P("op-symbols"),et=P("string-to-symbol-registry"),nt=P("symbol-to-string-registry"),rt=P("wks"),ot=o.QObject,it=!ot||!ot[B]||!ot[B].findChild,at=c&&f((function(){return 7!=x(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=K(V,e);r&&delete V[e],X(t,e,n),r&&t!==V&&X(V,e,r)}:X,ct=function(t,e){var n=Z[t]=x(q[B]);return $(n,{type:H,tag:t,description:e}),c||(n.description=e),n},ut=function(t,e,n){t===V&&ut(tt,e,n),v(t);var r=m(e);return v(n),l(Z,r)?(n.enumerable?(l(t,z)&&t[z][r]&&(t[z][r]=!1),n=x(n,{enumerable:g(0,!1)})):(l(t,z)||X(t,z,g(1,{})),t[z][r]=!0),at(t,r,n)):X(t,r,n)},ft=function(t,e){v(t);var n=h(e),r=w(n).concat(vt(n));return U(r,(function(e){c&&!st.call(n,e)||ut(t,e,n[e])})),t},lt=function(t,e){return void 0===e?x(t):ft(x(t),e)},st=function(t){var e=m(t),n=Q.call(this,e);return!(this===V&&l(Z,e)&&!l(tt,e))&&(!(n||!l(this,e)||!l(Z,e)||l(this,z)&&this[z][e])||n)},pt=function(t,e){var n=h(t),r=m(e);if(n!==V||!l(Z,r)||l(tt,r)){var o=K(n,r);return!o||!l(Z,r)||l(n,z)&&n[z][r]||(o.enumerable=!0),o}},dt=function(t){var e=J(h(t)),n=[];return U(e,(function(t){l(Z,t)||l(I,t)||n.push(t)})),n},vt=function(t){var e=t===V,n=J(e?tt:h(t)),r=[];return U(n,(function(t){!l(Z,t)||e&&!l(V,t)||r.push(Z[t])})),r};if(u||(q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?b(arguments[0]):void 0,e=L(t),n=function(t){this===V&&n.call(tt,t),l(this,z)&&l(this[z],e)&&(this[z][e]=!1),at(this,e,g(1,t))};return c&&it&&at(V,e,{configurable:!0,set:n}),ct(e,t)},R(q[B],"toString",(function(){return W(this).tag})),R(q,"withoutSetter",(function(t){return ct(L(t),t)})),E.f=st,A.f=ut,_.f=pt,S.f=O.f=dt,T.f=vt,N.f=function(t){return ct(M(t),t)},c&&(X(q[B],"description",{configurable:!0,get:function(){return W(this).description}}),a||R(V,"propertyIsEnumerable",st,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:q}),U(w(rt),(function(t){D(t)})),r({target:H,stat:!0,forced:!u},{for:function(t){var e=b(t);if(l(et,e))return et[e];var n=q(e);return et[e]=n,nt[n]=e,n},keyFor:function(t){if(!d(t))throw TypeError(t+" is not a symbol");if(l(nt,t))return nt[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:lt,defineProperty:ut,defineProperties:ft,getOwnPropertyDescriptor:pt}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:dt,getOwnPropertySymbols:vt}),r({target:"Object",stat:!0,forced:f((function(){T.f(1)}))},{getOwnPropertySymbols:function(t){return T.f(y(t))}}),Y){var yt=!u||f((function(){var t=q();return"[null]"!=Y([t])||"{}"!=Y({a:t})||"{}"!=Y(Object(t))}));r({target:"JSON",stat:!0,forced:yt},{stringify:function(t,e,n){var r,o=[t],i=1;while(arguments.length>i)o.push(arguments[i++]);if(r=e,(p(e)||void 0!==t)&&!d(t))return s(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!d(e))return e}),o[1]=e,Y.apply(null,o)}})}q[B][G]||j(q[B],G,q[B].valueOf),C(q,H),I[z]=!0},a572:function(t,e,n){"use strict";
+window.tslib=r,Object.fromEntries=function(t){return d(t).reduce((function(t,e){var n=f(e,2),r=n[0],o=n[1];return t[r]=o,t}),{})};var H=z("&#8291;"),B=window.Vue.toDisplayString;function G(t){var e=t.split(/\s+/);return e.includes("noopener")&&e.includes("noreferrer")}window.Vue.toDisplayString=function(t){var e=B.call(this,t);return e=e.replace(/{{/g,"{".concat(H,"{")),e},h.a.addHook("afterSanitizeAttributes",(function(t){!t.hasAttribute("target")||"_blank"!==t.getAttribute("target")||t.hasAttribute("rel")&&G(t.getAttribute("rel"))||t.removeAttribute("target")})),window.vueSanitize=function(t){var e=h.a.sanitize(t,{ADD_ATTR:["target"]});return e=e.replace(/{{/g,"{&#8291;{"),e}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},"485a":function(t,e,n){var r=n("861d");t.exports=function(t,e){var n,o;if("string"===e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if("string"!==e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},4930:function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"498a":function(t,e,n){"use strict";var r=n("23e7"),o=n("58a8").trim,i=n("c8d2");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),l=i(a,f);if(t&&n!=n){while(f>l)if(c=u[l++],c!=c)return!0}else for(;f>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4df4":function(t,e,n){"use strict";var r=n("0366"),o=n("7b0b"),i=n("9bdd"),a=n("e95a"),c=n("50c4"),u=n("8418"),f=n("35a1");t.exports=function(t){var e,n,l,s,p,d,v=o(t),h="function"==typeof this?this:Array,y=arguments.length,b=y>1?arguments[1]:void 0,m=void 0!==b,g=f(v),x=0;if(m&&(b=r(b,y>2?arguments[2]:void 0,2)),void 0==g||h==Array&&a(g))for(e=c(v.length),n=new h(e);e>x;x++)d=m?b(v[x],x):v[x],u(n,x,d);else for(s=g.call(v),p=s.next,n=new h;!(l=p.call(s)).done;x++)d=m?i(s,b,[l.value,x],!0):l.value,u(n,x,d);return n.length=x,n}},"4fad":function(t,e,n){var r=n("23e7"),o=n("6f53").entries;r({target:"Object",stat:!0},{entries:function(t){return o(t)}})},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return o.call(r(t),e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("d039"),i=n("825a"),a=n("a691"),c=n("50c4"),u=n("577e"),f=n("1d80"),l=n("8aa5"),s=n("0cb2"),p=n("14c3"),d=n("b622"),v=d("replace"),h=Math.max,y=Math.min,b=function(t){return void 0===t?t:String(t)},m=function(){return"$0"==="a".replace(/./,"$0")}(),g=function(){return!!/./[v]&&""===/./[v]("a","$0")}(),x=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));r("replace",(function(t,e,n){var r=g?"$":"$0";return[function(t,n){var r=f(this),o=void 0==t?void 0:t[v];return void 0!==o?o.call(t,r,n):e.call(u(r),t,n)},function(t,o){var f=i(this),d=u(t);if("string"===typeof o&&-1===o.indexOf(r)&&-1===o.indexOf("$<")){var v=n(e,f,d,o);if(v.done)return v.value}var m="function"===typeof o;m||(o=u(o));var g=f.global;if(g){var x=f.unicode;f.lastIndex=0}var w=[];while(1){var S=p(f,d);if(null===S)break;if(w.push(S),!g)break;var O=u(S[0]);""===O&&(f.lastIndex=l(d,c(f.lastIndex),x))}for(var T="",A=0,_=0;_<w.length;_++){S=w[_];for(var E=u(S[0]),j=h(y(a(S.index),d.length),0),R=[],P=1;P<S.length;P++)R.push(b(S[P]));var k=S.groups;if(m){var I=[E].concat(R,j,d);void 0!==k&&I.push(k);var L=u(o.apply(void 0,I))}else L=s(E,d,j,R,k,o);j>=A&&(T+=d.slice(A,j)+L,A=j+E.length)}return T+d.slice(A)}]}),!x||!m||g)},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.16.3",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"577e":function(t,e,n){var r=n("d9b5");t.exports=function(t){if(r(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)}},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),o=n("577e"),i=n("5899"),a="["+i+"]",c=RegExp("^"+a+a+"*"),u=RegExp(a+a+"*$"),f=function(t){return function(e){var n=o(r(e));return 1&t&&(n=n.replace(c,"")),2&t&&(n=n.replace(u,"")),n}};t.exports={start:f(1),end:f(2),trim:f(3)}},"5a34":function(t,e,n){var r=n("44e7");t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6069:function(t,e){t.exports="object"==typeof window},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),c=n("d1e7"),u=n("7b0b"),f=n("44ad"),l=Object.assign,s=Object.defineProperty;t.exports=!l||o((function(){if(r&&1!==l({b:1},l(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||i(l({},e)).join("")!=o}))?function(t,e){var n=u(t),o=arguments.length,l=1,s=a.f,p=c.f;while(o>l){var d,v=f(arguments[l++]),h=s?i(v).concat(s(v)):i(v),y=h.length,b=0;while(y>b)d=h[b++],r&&!p.call(v,d)||(n[d]=v[d])}return n}:l},6547:function(t,e,n){var r=n("a691"),o=n("577e"),i=n("1d80"),a=function(t){return function(e,n){var a,c,u=o(i(e)),f=r(n),l=u.length;return f<0||f>=l?t?"":void 0:(a=u.charCodeAt(f),a<55296||a>56319||f+1===l||(c=u.charCodeAt(f+1))<56320||c>57343?t?u.charAt(f):a:t?u.slice(f,f+2):c-56320+(a-55296<<10)+65536)}};t.exports={codeAt:a(!1),charAt:a(!0)}},"65f0":function(t,e,n){var r=n("0b42");t.exports=function(t,e){return new(r(t))(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),u=n("861d"),f=n("9112"),l=n("5135"),s=n("c6cd"),p=n("f772"),d=n("d012"),v="Object already initialized",h=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},b=function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||s.state){var m=s.state||(s.state=new h),g=m.get,x=m.has,w=m.set;r=function(t,e){if(x.call(m,t))throw new TypeError(v);return e.facade=t,w.call(m,t,e),e},o=function(t){return g.call(m,t)||{}},i=function(t){return x.call(m,t)}}else{var S=p("state");d[S]=!0,r=function(t,e){if(l(t,S))throw new TypeError(v);return e.facade=t,f(t,S,e),e},o=function(t){return l(t,S)?t[S]:{}},i=function(t){return l(t,S)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:b}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),u=n("69f3"),f=u.get,l=u.enforce,s=String(String).split("String");(t.exports=function(t,e,n,c){var u,f=!!c&&!!c.unsafe,p=!!c&&!!c.enumerable,d=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),u=l(n),u.source||(u.source=s.join("string"==typeof e?e:""))),t!==r?(f?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||c(this)}))},"6f53":function(t,e,n){var r=n("83ab"),o=n("df75"),i=n("fc6a"),a=n("d1e7").f,c=function(t){return function(e){var n,c=i(e),u=o(c),f=u.length,l=0,s=[];while(f>l)n=u[l++],r&&!a.call(c,n)||s.push(t?[n,c[n]]:c[n]);return s}};t.exports={entries:c(!0),values:c(!1)}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"772f":function(t,e,n){(function(r){var o,i;(function(r){o=r,i="function"===typeof o?o.call(e,n,e,t):o,void 0===i||(t.exports=i)})((function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function o(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function a(t,e){return a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},a(t,e)}function c(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,e){return!e||"object"!==typeof e&&"function"!==typeof e?u(t):e}function l(t){var e=c();return function(){var n,r=i(t);if(e){var o=i(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return f(this,n)}}function s(t,e){while(!Object.prototype.hasOwnProperty.call(t,e))if(t=i(t),null===t)break;return t}function p(t,e,n){return p="undefined"!==typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=s(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}},p(t,e,n||t)}var d=function(){function e(){t(this,e),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return n(e,[{key:"addEventListener",value:function(t,e,n){t in this.listeners||(this.listeners[t]=[]),this.listeners[t].push({callback:e,options:n})}},{key:"removeEventListener",value:function(t,e){if(t in this.listeners)for(var n=this.listeners[t],r=0,o=n.length;r<o;r++)if(n[r].callback===e)return void n.splice(r,1)}},{key:"dispatchEvent",value:function(t){if(t.type in this.listeners){for(var e=this.listeners[t.type],n=e.slice(),r=0,o=n.length;r<o;r++){var i=n[r];try{i.callback.call(this,t)}catch(a){Promise.resolve().then((function(){throw a}))}i.options&&i.options.once&&this.removeEventListener(t.type,i.callback)}return!t.defaultPrevented}}}]),e}(),v=function(e){o(a,e);var r=l(a);function a(){var e;return t(this,a),e=r.call(this),e.listeners||d.call(u(e)),Object.defineProperty(u(e),"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(u(e),"onabort",{value:null,writable:!0,configurable:!0}),e}return n(a,[{key:"toString",value:function(){return"[object AbortSignal]"}},{key:"dispatchEvent",value:function(t){"abort"===t.type&&(this.aborted=!0,"function"===typeof this.onabort&&this.onabort.call(this,t)),p(i(a.prototype),"dispatchEvent",this).call(this,t)}}]),a}(d),h=function(){function e(){t(this,e),Object.defineProperty(this,"signal",{value:new v,writable:!0,configurable:!0})}return n(e,[{key:"abort",value:function(){var t;try{t=new Event("abort")}catch(e){"undefined"!==typeof document?document.createEvent?(t=document.createEvent("Event"),t.initEvent("abort",!1,!1)):(t=document.createEventObject(),t.type="abort"):t={type:"abort",bubbles:!1,cancelable:!1}}this.signal.dispatchEvent(t)}},{key:"toString",value:function(){return"[object AbortController]"}}]),e}();function y(t){return t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):"function"===typeof t.Request&&!t.Request.prototype.hasOwnProperty("signal")||!t.AbortController}"undefined"!==typeof Symbol&&Symbol.toStringTag&&(h.prototype[Symbol.toStringTag]="AbortController",v.prototype[Symbol.toStringTag]="AbortSignal"),function(t){y(t)&&(t.AbortController=h,t.AbortSignal=v)}("undefined"!==typeof self?self:r)}))}).call(this,n("24aa"))},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),c=n("d012"),u=n("1be4"),f=n("cc12"),l=n("f772"),s=">",p="<",d="prototype",v="script",h=l("IE_PROTO"),y=function(){},b=function(t){return p+v+s+t+p+"/"+v+s},m=function(t){t.write(b("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=f("iframe"),n="java"+v+":";return e.style.display="none",u.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(b("document.F=Object")),t.close(),t.F},x=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}x="undefined"!=typeof document?document.domain&&r?m(r):g():m(r);var t=a.length;while(t--)delete x[d][a[t]];return x()};c[h]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(y[d]=o(t),n=new y,y[d]=null,n[h]=t):n=x(),void 0===e?n:i(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),o=n("9ed3"),i=n("e163"),a=n("d2bb"),c=n("d44e"),u=n("9112"),f=n("6eeb"),l=n("b622"),s=n("c430"),p=n("3f8c"),d=n("ae93"),v=d.IteratorPrototype,h=d.BUGGY_SAFARI_ITERATORS,y=l("iterator"),b="keys",m="values",g="entries",x=function(){return this};t.exports=function(t,e,n,l,d,w,S){o(n,e,l);var O,T,A,_=function(t){if(t===d&&k)return k;if(!h&&t in R)return R[t];switch(t){case b:return function(){return new n(this,t)};case m:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this)}},E=e+" Iterator",j=!1,R=t.prototype,P=R[y]||R["@@iterator"]||d&&R[d],k=!h&&P||_(d),I="Array"==e&&R.entries||P;if(I&&(O=i(I.call(new t)),v!==Object.prototype&&O.next&&(s||i(O)===v||(a?a(O,v):"function"!=typeof O[y]&&u(O,y,x)),c(O,E,!0,!0),s&&(p[E]=x))),d==m&&P&&P.name!==m&&(j=!0,k=function(){return P.call(this)}),s&&!S||R[y]===k||u(R,y,k),p[e]=k,d)if(T={values:_(m),keys:w?k:_(b),entries:_(g)},S)for(A in T)(h||j||!(A in R))&&f(R,A,T[A]);else r({target:e,proto:!0,forced:h||j},T);return T}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("a04b"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("577e"),o=n("ad6d"),i=n("9f7f"),a=n("5692"),c=n("7c73"),u=n("69f3").get,f=n("fce3"),l=n("107c"),s=RegExp.prototype.exec,p=a("native-string-replace",String.prototype.replace),d=s,v=function(){var t=/a/,e=/b*/g;return s.call(t,"a"),s.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),h=i.UNSUPPORTED_Y||i.BROKEN_CARET,y=void 0!==/()??/.exec("")[1],b=v||y||h||f||l;b&&(d=function(t){var e,n,i,a,f,l,b,m=this,g=u(m),x=r(t),w=g.raw;if(w)return w.lastIndex=m.lastIndex,e=d.call(w,x),m.lastIndex=w.lastIndex,e;var S=g.groups,O=h&&m.sticky,T=o.call(m),A=m.source,_=0,E=x;if(O&&(T=T.replace("y",""),-1===T.indexOf("g")&&(T+="g"),E=x.slice(m.lastIndex),m.lastIndex>0&&(!m.multiline||m.multiline&&"\n"!==x.charAt(m.lastIndex-1))&&(A="(?: "+A+")",E=" "+E,_++),n=new RegExp("^(?:"+A+")",T)),y&&(n=new RegExp("^"+A+"$(?!\\s)",T)),v&&(i=m.lastIndex),a=s.call(O?n:m,E),O?a?(a.input=a.input.slice(_),a[0]=a[0].slice(_),a.index=m.lastIndex,m.lastIndex+=a[0].length):m.lastIndex=0:v&&a&&(m.lastIndex=m.global?a.index+a[0].length:i),y&&a&&a.length>1&&p.call(a[0],n,(function(){for(f=1;f<arguments.length-2;f++)void 0===arguments[f]&&(a[f]=void 0)})),a&&S)for(a.groups=l=c(null),f=0;f<S.length;f++)b=S[f],l[b[0]]=a[b[1]];return a}),t.exports=d},"94ca":function(t,e,n){var r=n("d039"),o=/#|\.prototype\./,i=function(t,e){var n=c[a(t)];return n==f||n!=u&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},"9bdd":function(t,e,n){var r=n("825a"),o=n("2a62");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(a){throw o(t),a}}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("a04b"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9ed3":function(t,e,n){"use strict";var r=n("ae93").IteratorPrototype,o=n("7c73"),i=n("5c6c"),a=n("d44e"),c=n("3f8c"),u=function(){return this};t.exports=function(t,e,n){var f=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,f,!1,!0),c[f]=u,t}},"9f7f":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;e.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a04b:function(t,e,n){var r=n("c04e"),o=n("d9b5");t.exports=function(t){var e=r(t,"string");return o(e)?e:String(e)}},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),o=n("da84"),i=n("d066"),a=n("c430"),c=n("83ab"),u=n("4930"),f=n("d039"),l=n("5135"),s=n("e8b5"),p=n("861d"),d=n("d9b5"),v=n("825a"),h=n("7b0b"),y=n("fc6a"),b=n("a04b"),m=n("577e"),g=n("5c6c"),x=n("7c73"),w=n("df75"),S=n("241c"),O=n("057f"),T=n("7418"),A=n("06cf"),_=n("9bf2"),E=n("d1e7"),j=n("9112"),R=n("6eeb"),P=n("5692"),k=n("f772"),I=n("d012"),L=n("90e3"),M=n("b622"),N=n("e538"),D=n("746f"),C=n("d44e"),F=n("69f3"),U=n("b727").forEach,z=k("hidden"),H="Symbol",B="prototype",G=M("toPrimitive"),$=F.set,W=F.getterFor(H),V=Object[B],q=o.Symbol,Y=i("JSON","stringify"),K=A.f,X=_.f,J=O.f,Q=E.f,Z=P("symbols"),tt=P("op-symbols"),et=P("string-to-symbol-registry"),nt=P("symbol-to-string-registry"),rt=P("wks"),ot=o.QObject,it=!ot||!ot[B]||!ot[B].findChild,at=c&&f((function(){return 7!=x(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=K(V,e);r&&delete V[e],X(t,e,n),r&&t!==V&&X(V,e,r)}:X,ct=function(t,e){var n=Z[t]=x(q[B]);return $(n,{type:H,tag:t,description:e}),c||(n.description=e),n},ut=function(t,e,n){t===V&&ut(tt,e,n),v(t);var r=b(e);return v(n),l(Z,r)?(n.enumerable?(l(t,z)&&t[z][r]&&(t[z][r]=!1),n=x(n,{enumerable:g(0,!1)})):(l(t,z)||X(t,z,g(1,{})),t[z][r]=!0),at(t,r,n)):X(t,r,n)},ft=function(t,e){v(t);var n=y(e),r=w(n).concat(vt(n));return U(r,(function(e){c&&!st.call(n,e)||ut(t,e,n[e])})),t},lt=function(t,e){return void 0===e?x(t):ft(x(t),e)},st=function(t){var e=b(t),n=Q.call(this,e);return!(this===V&&l(Z,e)&&!l(tt,e))&&(!(n||!l(this,e)||!l(Z,e)||l(this,z)&&this[z][e])||n)},pt=function(t,e){var n=y(t),r=b(e);if(n!==V||!l(Z,r)||l(tt,r)){var o=K(n,r);return!o||!l(Z,r)||l(n,z)&&n[z][r]||(o.enumerable=!0),o}},dt=function(t){var e=J(y(t)),n=[];return U(e,(function(t){l(Z,t)||l(I,t)||n.push(t)})),n},vt=function(t){var e=t===V,n=J(e?tt:y(t)),r=[];return U(n,(function(t){!l(Z,t)||e&&!l(V,t)||r.push(Z[t])})),r};if(u||(q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?m(arguments[0]):void 0,e=L(t),n=function(t){this===V&&n.call(tt,t),l(this,z)&&l(this[z],e)&&(this[z][e]=!1),at(this,e,g(1,t))};return c&&it&&at(V,e,{configurable:!0,set:n}),ct(e,t)},R(q[B],"toString",(function(){return W(this).tag})),R(q,"withoutSetter",(function(t){return ct(L(t),t)})),E.f=st,_.f=ut,A.f=pt,S.f=O.f=dt,T.f=vt,N.f=function(t){return ct(M(t),t)},c&&(X(q[B],"description",{configurable:!0,get:function(){return W(this).description}}),a||R(V,"propertyIsEnumerable",st,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:q}),U(w(rt),(function(t){D(t)})),r({target:H,stat:!0,forced:!u},{for:function(t){var e=m(t);if(l(et,e))return et[e];var n=q(e);return et[e]=n,nt[n]=e,n},keyFor:function(t){if(!d(t))throw TypeError(t+" is not a symbol");if(l(nt,t))return nt[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:lt,defineProperty:ut,defineProperties:ft,getOwnPropertyDescriptor:pt}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:dt,getOwnPropertySymbols:vt}),r({target:"Object",stat:!0,forced:f((function(){T.f(1)}))},{getOwnPropertySymbols:function(t){return T.f(h(t))}}),Y){var ht=!u||f((function(){var t=q();return"[null]"!=Y([t])||"{}"!=Y({a:t})||"{}"!=Y(Object(t))}));r({target:"JSON",stat:!0,forced:ht},{stringify:function(t,e,n){var r,o=[t],i=1;while(arguments.length>i)o.push(arguments[i++]);if(r=e,(p(e)||void 0!==t)&&!d(t))return s(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!d(e))return e}),o[1]=e,Y.apply(null,o)}})}q[B][G]||j(q[B],G,q[B].valueOf),C(q,H),I[z]=!0},a572:function(t,e,n){"use strict";
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var r=window.$.fn.trigger;function o(t,e){var n=!0,o=t.type||t,i="on".concat(o);function a(t){if(!(n&&(n=!1,t[i]||t[o]instanceof Function&&("click"!==o||"A"!==t.tagName.toUpperCase())))&&(!(window.$._data(t,"events")||{})[o]||!window.$._data(t,"handle"))&&t.dispatchEvent){var e=new Event(o,{bubbles:!1,cancelable:!0});t.dispatchEvent(e)}}function c(t){a(t);var e=t.parentElement;e&&c(e)}var u=r.call(this,t,e);return"focus"===o||"blur"===o||this.each((function(){c(this)})),u}window.$.fn.trigger=o},a630:function(t,e,n){var r=n("23e7"),o=n("4df4"),i=n("1c7e"),a=!i((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:a},{from:o})},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),c=n("d066"),u=n("4840"),f=n("cdf9"),l=n("6eeb"),s=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:s},{finally:function(t){var e=u(this,c("Promise")),n="function"==typeof t;return this.then(n?function(n){return f(e,t()).then((function(){return n}))}:t,n?function(n){return f(e,t()).then((function(){throw n}))}:t)}}),!o&&"function"==typeof i){var p=c("Promise").prototype["finally"];i.prototype["finally"]!==p&&l(i.prototype,"finally",p,{unsafe:!0})}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("d039"),c=n("e163"),u=n("9112"),f=n("5135"),l=n("b622"),s=n("c430"),p=l("iterator"),d=!1,v=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):d=!0);var y=void 0==r||a((function(){var t={};return r[p].call(t)!==t}));y&&(r={}),s&&!y||f(r,p)||u(r,p,v),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b575:function(t,e,n){var r,o,i,a,c,u,f,l,s=n("da84"),p=n("06cf").f,d=n("2cf4").set,v=n("1cdc"),y=n("d4c3"),h=n("a4b4"),m=n("605d"),b=s.MutationObserver||s.WebKitMutationObserver,g=s.document,x=s.process,w=s.Promise,S=p(s,"queueMicrotask"),O=S&&S.value;O||(r=function(){var t,e;m&&(t=x.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},v||m||h||!b||!g?!y&&w&&w.resolve?(f=w.resolve(void 0),f.constructor=w,l=f.then,a=function(){l.call(f,r)}):a=m?function(){x.nextTick(r)}:function(){d.call(s,r)}:(c=!0,u=g.createTextNode(""),new b(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),t.exports=O||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),u=n("fdbf"),f=o("wks"),l=r.Symbol,s=u?l:l&&l.withoutSetter||a;t.exports=function(t){return i(f,t)&&(c||"string"==typeof f[t])||(c&&i(l,t)?f[t]=l[t]:f[t]=s("Symbol."+t)),f[t]}},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),c=n("65f0"),u=[].push,f=function(t){var e=1==t,n=2==t,f=3==t,l=4==t,s=6==t,p=7==t,d=5==t||s;return function(v,y,h,m){for(var b,g,x=i(v),w=o(x),S=r(y,h,3),O=a(w.length),T=0,_=m||c,A=e?_(v,O):n||p?_(v,0):void 0;O>T;T++)if((d||T in w)&&(b=w[T],g=S(b,T,x),t))if(e)A[T]=g;else if(g)switch(t){case 3:return!0;case 5:return b;case 6:return T;case 2:u.call(A,b)}else switch(t){case 4:return!1;case 7:u.call(A,b)}return s?-1:f||l?l:A}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},c04e:function(t,e,n){var r=n("861d"),o=n("d9b5"),i=n("485a"),a=n("b622"),c=a("toPrimitive");t.exports=function(t,e){if(!r(t)||o(t))return t;var n,a=t[c];if(void 0!==a){if(void 0===e&&(e="default"),n=a.call(t,e),!r(n)||o(n))return n;throw TypeError("Can't convert object to primitive value")}return void 0===e&&(e="number"),i(t,e)}},c0c4:function(t,e,n){
+ */var r=window.$.fn.trigger;function o(t,e){var n=!0,o=t.type||t,i="on".concat(o);function a(t){if(!(n&&(n=!1,t[i]||t[o]instanceof Function&&("click"!==o||"A"!==t.tagName.toUpperCase())))&&(!(window.$._data(t,"events")||{})[o]||!window.$._data(t,"handle"))&&t.dispatchEvent){var e=new Event(o,{bubbles:!1,cancelable:!0});t.dispatchEvent(e)}}function c(t){a(t);var e=t.parentElement;e&&c(e)}var u=r.call(this,t,e);return"focus"===o||"blur"===o||this.each((function(){c(this)})),u}window.$.fn.trigger=o},a630:function(t,e,n){var r=n("23e7"),o=n("4df4"),i=n("1c7e"),a=!i((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:a},{from:o})},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),c=n("d066"),u=n("4840"),f=n("cdf9"),l=n("6eeb"),s=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:s},{finally:function(t){var e=u(this,c("Promise")),n="function"==typeof t;return this.then(n?function(n){return f(e,t()).then((function(){return n}))}:t,n?function(n){return f(e,t()).then((function(){throw n}))}:t)}}),!o&&"function"==typeof i){var p=c("Promise").prototype["finally"];i.prototype["finally"]!==p&&l(i.prototype,"finally",p,{unsafe:!0})}},ab13:function(t,e,n){var r=n("b622"),o=r("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[o]=!1,"/./"[t](e)}catch(r){}}return!1}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("d039"),c=n("e163"),u=n("9112"),f=n("5135"),l=n("b622"),s=n("c430"),p=l("iterator"),d=!1,v=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):d=!0);var h=void 0==r||a((function(){var t={};return r[p].call(t)!==t}));h&&(r={}),s&&!h||f(r,p)||u(r,p,v),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b575:function(t,e,n){var r,o,i,a,c,u,f,l,s=n("da84"),p=n("06cf").f,d=n("2cf4").set,v=n("1cdc"),h=n("d4c3"),y=n("a4b4"),b=n("605d"),m=s.MutationObserver||s.WebKitMutationObserver,g=s.document,x=s.process,w=s.Promise,S=p(s,"queueMicrotask"),O=S&&S.value;O||(r=function(){var t,e;b&&(t=x.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},v||b||y||!m||!g?!h&&w&&w.resolve?(f=w.resolve(void 0),f.constructor=w,l=f.then,a=function(){l.call(f,r)}):a=b?function(){x.nextTick(r)}:function(){d.call(s,r)}:(c=!0,u=g.createTextNode(""),new m(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),t.exports=O||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),u=n("fdbf"),f=o("wks"),l=r.Symbol,s=u?l:l&&l.withoutSetter||a;t.exports=function(t){return i(f,t)&&(c||"string"==typeof f[t])||(c&&i(l,t)?f[t]=l[t]:f[t]=s("Symbol."+t)),f[t]}},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),c=n("65f0"),u=[].push,f=function(t){var e=1==t,n=2==t,f=3==t,l=4==t,s=6==t,p=7==t,d=5==t||s;return function(v,h,y,b){for(var m,g,x=i(v),w=o(x),S=r(h,y,3),O=a(w.length),T=0,A=b||c,_=e?A(v,O):n||p?A(v,0):void 0;O>T;T++)if((d||T in w)&&(m=w[T],g=S(m,T,x),t))if(e)_[T]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return T;case 2:u.call(_,m)}else switch(t){case 4:return!1;case 7:u.call(_,m)}return s?-1:f||l?l:_}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},c04e:function(t,e,n){var r=n("861d"),o=n("d9b5"),i=n("485a"),a=n("b622"),c=a("toPrimitive");t.exports=function(t,e){if(!r(t)||o(t))return t;var n,a=t[c];if(void 0!==a){if(void 0===e&&(e="default"),n=a.call(t,e),!r(n)||o(n))return n;throw TypeError("Can't convert object to primitive value")}return void 0===e&&(e="number"),i(t,e)}},c0c4:function(t,e,n){
/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */
-(function(e,n){t.exports=n()})(0,(function(){"use strict";function t(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var e=Object.hasOwnProperty,n=Object.setPrototypeOf,r=Object.isFrozen,o=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,c=Object.seal,u=Object.create,f="undefined"!==typeof Reflect&&Reflect,l=f.apply,s=f.construct;l||(l=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),c||(c=function(t){return t}),s||(s=function(e,n){return new(Function.prototype.bind.apply(e,[null].concat(t(n))))});var p=S(Array.prototype.forEach),d=S(Array.prototype.pop),v=S(Array.prototype.push),y=S(String.prototype.toLowerCase),h=S(String.prototype.match),m=S(String.prototype.replace),b=S(String.prototype.indexOf),g=S(String.prototype.trim),x=S(RegExp.prototype.test),w=O(TypeError);function S(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return l(t,e,r)}}function O(t){return function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return s(t,n)}}function T(t,e){n&&n(t,null);var o=e.length;while(o--){var i=e[o];if("string"===typeof i){var a=y(i);a!==i&&(r(e)||(e[o]=a),i=a)}t[i]=!0}return t}function _(t){var n=u(null),r=void 0;for(r in t)l(e,t,[r])&&(n[r]=t[r]);return n}function A(t,e){while(null!==t){var n=i(t,e);if(n){if(n.get)return S(n.get);if("function"===typeof n.value)return S(n.value)}t=o(t)}function r(t){return console.warn("fallback value for",t),null}return r}var E=a(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),j=a(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),R=a(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),P=a(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),k=a(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),I=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),L=a(["#text"]),M=a(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),N=a(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),D=a(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),C=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),F=c(/\{\{[\s\S]*|[\s\S]*\}\}/gm),U=c(/<%[\s\S]*|[\s\S]*%>/gm),z=c(/^data-[\-\w.\u00B7-\uFFFF]/),H=c(/^aria-[\-\w]+$/),B=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),G=c(/^(?:\w+script|data):/i),$=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),W="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function V(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var q=function(){return"undefined"===typeof window?null:window},Y=function(t,e){if("object"!==("undefined"===typeof t?"undefined":W(t))||"function"!==typeof t.createPolicy)return null;var n=null,r="data-tt-policy-suffix";e.currentScript&&e.currentScript.hasAttribute(r)&&(n=e.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return t.createPolicy(o,{createHTML:function(t){return t}})}catch(i){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function K(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q(),e=function(t){return K(t)};if(e.version="2.3.3",e.removed=[],!t||!t.document||9!==t.document.nodeType)return e.isSupported=!1,e;var n=t.document,r=t.document,o=t.DocumentFragment,i=t.HTMLTemplateElement,c=t.Node,u=t.Element,f=t.NodeFilter,l=t.NamedNodeMap,s=void 0===l?t.NamedNodeMap||t.MozNamedAttrMap:l,S=t.Text,O=t.Comment,X=t.DOMParser,J=t.trustedTypes,Q=u.prototype,Z=A(Q,"cloneNode"),tt=A(Q,"nextSibling"),et=A(Q,"childNodes"),nt=A(Q,"parentNode");if("function"===typeof i){var rt=r.createElement("template");rt.content&&rt.content.ownerDocument&&(r=rt.content.ownerDocument)}var ot=Y(J,n),it=ot&&Ct?ot.createHTML(""):"",at=r,ct=at.implementation,ut=at.createNodeIterator,ft=at.createDocumentFragment,lt=at.getElementsByTagName,st=n.importNode,pt={};try{pt=_(r).documentMode?r.documentMode:{}}catch(Se){}var dt={};e.isSupported="function"===typeof nt&&ct&&"undefined"!==typeof ct.createHTMLDocument&&9!==pt;var vt=F,yt=U,ht=z,mt=H,bt=G,gt=$,xt=B,wt=null,St=T({},[].concat(V(E),V(j),V(R),V(k),V(L))),Ot=null,Tt=T({},[].concat(V(M),V(N),V(D),V(C))),_t=null,At=null,Et=!0,jt=!0,Rt=!1,Pt=!1,kt=!1,It=!1,Lt=!1,Mt=!1,Nt=!1,Dt=!0,Ct=!1,Ft=!0,Ut=!0,zt=!1,Ht={},Bt=null,Gt=T({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),$t=null,Wt=T({},["audio","video","img","source","image","track"]),Vt=null,qt=T({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Yt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",Xt="http://www.w3.org/1999/xhtml",Jt=Xt,Qt=!1,Zt=void 0,te=["application/xhtml+xml","text/html"],ee="text/html",ne=void 0,re=null,oe=r.createElement("form"),ie=function(t){re&&re===t||(t&&"object"===("undefined"===typeof t?"undefined":W(t))||(t={}),t=_(t),wt="ALLOWED_TAGS"in t?T({},t.ALLOWED_TAGS):St,Ot="ALLOWED_ATTR"in t?T({},t.ALLOWED_ATTR):Tt,Vt="ADD_URI_SAFE_ATTR"in t?T(_(qt),t.ADD_URI_SAFE_ATTR):qt,$t="ADD_DATA_URI_TAGS"in t?T(_(Wt),t.ADD_DATA_URI_TAGS):Wt,Bt="FORBID_CONTENTS"in t?T({},t.FORBID_CONTENTS):Gt,_t="FORBID_TAGS"in t?T({},t.FORBID_TAGS):{},At="FORBID_ATTR"in t?T({},t.FORBID_ATTR):{},Ht="USE_PROFILES"in t&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,jt=!1!==t.ALLOW_DATA_ATTR,Rt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pt=t.SAFE_FOR_TEMPLATES||!1,kt=t.WHOLE_DOCUMENT||!1,Mt=t.RETURN_DOM||!1,Nt=t.RETURN_DOM_FRAGMENT||!1,Dt=!1!==t.RETURN_DOM_IMPORT,Ct=t.RETURN_TRUSTED_TYPE||!1,Lt=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Ut=!1!==t.KEEP_CONTENT,zt=t.IN_PLACE||!1,xt=t.ALLOWED_URI_REGEXP||xt,Jt=t.NAMESPACE||Xt,Zt=Zt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Zt?function(t){return t}:y,Pt&&(jt=!1),Nt&&(Mt=!0),Ht&&(wt=T({},[].concat(V(L))),Ot=[],!0===Ht.html&&(T(wt,E),T(Ot,M)),!0===Ht.svg&&(T(wt,j),T(Ot,N),T(Ot,C)),!0===Ht.svgFilters&&(T(wt,R),T(Ot,N),T(Ot,C)),!0===Ht.mathMl&&(T(wt,k),T(Ot,D),T(Ot,C))),t.ADD_TAGS&&(wt===St&&(wt=_(wt)),T(wt,t.ADD_TAGS)),t.ADD_ATTR&&(Ot===Tt&&(Ot=_(Ot)),T(Ot,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&T(Vt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Bt===Gt&&(Bt=_(Bt)),T(Bt,t.FORBID_CONTENTS)),Ut&&(wt["#text"]=!0),kt&&T(wt,["html","head","body"]),wt.table&&(T(wt,["tbody"]),delete _t.tbody),a&&a(t),re=t)},ae=T({},["mi","mo","mn","ms","mtext"]),ce=T({},["foreignobject","desc","title","annotation-xml"]),ue=T({},j);T(ue,R),T(ue,P);var fe=T({},k);T(fe,I);var le=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:Xt,tagName:"template"});var n=y(t.tagName),r=y(e.tagName);if(t.namespaceURI===Kt)return e.namespaceURI===Xt?"svg"===n:e.namespaceURI===Yt?"svg"===n&&("annotation-xml"===r||ae[r]):Boolean(ue[n]);if(t.namespaceURI===Yt)return e.namespaceURI===Xt?"math"===n:e.namespaceURI===Kt?"math"===n&&ce[r]:Boolean(fe[n]);if(t.namespaceURI===Xt){if(e.namespaceURI===Kt&&!ce[r])return!1;if(e.namespaceURI===Yt&&!ae[r])return!1;var o=T({},["title","style","font","a","script"]);return!fe[n]&&(o[n]||!ue[n])}return!1},se=function(t){v(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Se){try{t.outerHTML=it}catch(Se){t.remove()}}},pe=function(t,n){try{v(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(Se){v(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!Ot[t])if(Mt||Nt)try{se(n)}catch(Se){}else try{n.setAttribute(t,"")}catch(Se){}},de=function(t){var e=void 0,n=void 0;if(Lt)t="<remove></remove>"+t;else{var o=h(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Zt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=ot?ot.createHTML(t):t;if(Jt===Xt)try{e=(new X).parseFromString(i,Zt)}catch(Se){}if(!e||!e.documentElement){e=ct.createDocument(Jt,"template",null);try{e.documentElement.innerHTML=Qt?"":i}catch(Se){}}var a=e.body||e.documentElement;return t&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Jt===Xt?lt.call(e,kt?"html":"body")[0]:kt?e.documentElement:a},ve=function(t){return ut.call(t.ownerDocument||t,t,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},ye=function(t){return!(t instanceof S||t instanceof O)&&!("string"===typeof t.nodeName&&"string"===typeof t.textContent&&"function"===typeof t.removeChild&&t.attributes instanceof s&&"function"===typeof t.removeAttribute&&"function"===typeof t.setAttribute&&"string"===typeof t.namespaceURI&&"function"===typeof t.insertBefore)},he=function(t){return"object"===("undefined"===typeof c?"undefined":W(c))?t instanceof c:t&&"object"===("undefined"===typeof t?"undefined":W(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},me=function(t,n,r){dt[t]&&p(dt[t],(function(t){t.call(e,n,r,re)}))},be=function(t){var n=void 0;if(me("beforeSanitizeElements",t,null),ye(t))return se(t),!0;if(h(t.nodeName,/[\u0080-\uFFFF]/))return se(t),!0;var r=ne(t.nodeName);if(me("uponSanitizeElement",t,{tagName:r,allowedTags:wt}),!he(t.firstElementChild)&&(!he(t.content)||!he(t.content.firstElementChild))&&x(/<[/\w]/g,t.innerHTML)&&x(/<[/\w]/g,t.textContent))return se(t),!0;if("select"===r&&x(/<template/i,t.innerHTML))return se(t),!0;if(!wt[r]||_t[r]){if(Ut&&!Bt[r]){var o=nt(t)||t.parentNode,i=et(t)||t.childNodes;if(i&&o)for(var a=i.length,c=a-1;c>=0;--c)o.insertBefore(Z(i[c],!0),tt(t))}return se(t),!0}return t instanceof u&&!le(t)?(se(t),!0):"noscript"!==r&&"noembed"!==r||!x(/<\/no(script|embed)/i,t.innerHTML)?(Pt&&3===t.nodeType&&(n=t.textContent,n=m(n,vt," "),n=m(n,yt," "),t.textContent!==n&&(v(e.removed,{element:t.cloneNode()}),t.textContent=n)),me("afterSanitizeElements",t,null),!1):(se(t),!0)},ge=function(t,e,n){if(Ft&&("id"===e||"name"===e)&&(n in r||n in oe))return!1;if(jt&&!At[e]&&x(ht,e));else if(Et&&x(mt,e));else{if(!Ot[e]||At[e])return!1;if(Vt[e]);else if(x(xt,m(n,gt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==b(n,"data:")||!$t[t]){if(Rt&&!x(bt,m(n,gt,"")));else if(n)return!1}else;}return!0},xe=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;me("beforeSanitizeAttributes",t,null);var a=t.attributes;if(a){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ot};i=a.length;while(i--){n=a[i];var u=n,f=u.name,l=u.namespaceURI;if(r=g(n.value),o=ne(f),c.attrName=o,c.attrValue=r,c.keepAttr=!0,c.forceKeepAttr=void 0,me("uponSanitizeAttribute",t,c),r=c.attrValue,!c.forceKeepAttr&&(pe(f,t),c.keepAttr))if(x(/\/>/i,r))pe(f,t);else{Pt&&(r=m(r,vt," "),r=m(r,yt," "));var s=ne(t.nodeName);if(ge(s,o,r))try{l?t.setAttributeNS(l,f,r):t.setAttribute(f,r),d(e.removed)}catch(Se){}}}me("afterSanitizeAttributes",t,null)}},we=function t(e){var n=void 0,r=ve(e);me("beforeSanitizeShadowDOM",e,null);while(n=r.nextNode())me("uponSanitizeShadowNode",n,null),be(n)||(n.content instanceof o&&t(n.content),xe(n));me("afterSanitizeShadowDOM",e,null)};return e.sanitize=function(r,i){var a=void 0,u=void 0,f=void 0,l=void 0,s=void 0;if(Qt=!r,Qt&&(r="\x3c!--\x3e"),"string"!==typeof r&&!he(r)){if("function"!==typeof r.toString)throw w("toString is not a function");if(r=r.toString(),"string"!==typeof r)throw w("dirty is not a string, aborting")}if(!e.isSupported){if("object"===W(t.toStaticHTML)||"function"===typeof t.toStaticHTML){if("string"===typeof r)return t.toStaticHTML(r);if(he(r))return t.toStaticHTML(r.outerHTML)}return r}if(It||ie(i),e.removed=[],"string"===typeof r&&(zt=!1),zt);else if(r instanceof c)a=de("\x3c!----\x3e"),u=a.ownerDocument.importNode(r,!0),1===u.nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?a=u:a.appendChild(u);else{if(!Mt&&!Pt&&!kt&&-1===r.indexOf("<"))return ot&&Ct?ot.createHTML(r):r;if(a=de(r),!a)return Mt?null:it}a&&Lt&&se(a.firstChild);var p=ve(zt?r:a);while(f=p.nextNode())3===f.nodeType&&f===l||be(f)||(f.content instanceof o&&we(f.content),xe(f),l=f);if(l=null,zt)return r;if(Mt){if(Nt){s=ft.call(a.ownerDocument);while(a.firstChild)s.appendChild(a.firstChild)}else s=a;return Dt&&(s=st.call(n,s,!0)),s}var d=kt?a.outerHTML:a.innerHTML;return Pt&&(d=m(d,vt," "),d=m(d,yt," ")),ot&&Ct?ot.createHTML(d):d},e.setConfig=function(t){ie(t),It=!0},e.clearConfig=function(){re=null,It=!1},e.isValidAttribute=function(t,e,n){re||ie({});var r=ne(t),o=ne(e);return ge(r,o,n)},e.addHook=function(t,e){"function"===typeof e&&(dt[t]=dt[t]||[],v(dt[t],e))},e.removeHook=function(t){dt[t]&&d(dt[t])},e.removeHooks=function(t){dt[t]&&(dt[t]=[])},e.removeAllHooks=function(){dt={}},e}var X=K();return X}))},c1f9:function(t,e,n){var r=n("23e7"),o=n("2266"),i=n("8418");r({target:"Object",stat:!0},{fromEntries:function(t){var e={};return o(t,(function(t,n){i(e,t,n)}),{AS_ENTRIES:!0}),e}})},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8d2:function(t,e,n){var r=n("d039"),o=n("5899"),i="​…᠎";t.exports=function(t){return r((function(){return!!o[t]()||i[t]()!=i||o[t].name!==t}))}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)!r(a,n)&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84");t.exports=function(t,e){try{Object.defineProperty(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("da84"),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d28b:function(t,e,n){var r=n("746f");r("iterator")},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d4c3:function(t,e,n){var r=n("342f"),o=n("da84");t.exports=/ipad|iphone|ipod/i.test(r)&&void 0!==o.Pebble},d58f:function(t,e,n){var r=n("1c0b"),o=n("7b0b"),i=n("44ad"),a=n("50c4"),c=function(t){return function(e,n,c,u){r(n);var f=o(e),l=i(f),s=a(f.length),p=t?s-1:0,d=t?-1:1;if(c<2)while(1){if(p in l){u=l[p],p+=d;break}if(p+=d,t?p<0:s<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:s>p;p+=d)p in l&&(u=n(u,l[p],p,f));return u}};t.exports={left:c(!1),right:c(!0)}},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("9263"),i=n("d039"),a=n("b622"),c=n("9112"),u=a("species"),f=RegExp.prototype;t.exports=function(t,e,n,l){var s=a(t),p=!i((function(){var e={};return e[s]=function(){return 7},7!=""[t](e)})),d=p&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[u]=function(){return n},n.flags="",n[s]=/./[s]),n.exec=function(){return e=!0,null},n[s](""),!e}));if(!p||!d||n){var v=/./[s],y=e(s,""[t],(function(t,e,n,r,i){var a=e.exec;return a===o||a===f.exec?p&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}));r(String.prototype,t,y[0]),r(f,s,y[1])}l&&c(f[s],"sham",!0)}},d9b5:function(t,e,n){var r=n("d066"),o=n("fdbf");t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return"function"==typeof e&&Object(t)instanceof e}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("24aa"))},ddb0:function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("e260"),a=n("9112"),c=n("b622"),u=c("iterator"),f=c("toStringTag"),l=i.values;for(var s in o){var p=r[s],d=p&&p.prototype;if(d){if(d[u]!==l)try{a(d,u,l)}catch(y){d[u]=l}if(d[f]||a(d,f,s),o[s])for(var v in i)if(d[v]!==i[v])try{a(d,v,i[v])}catch(y){d[v]=i[v]}}}},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},e01a:function(t,e,n){"use strict";var r=n("23e7"),o=n("83ab"),i=n("da84"),a=n("5135"),c=n("861d"),u=n("9bf2").f,f=n("e893"),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var s={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new l(t):void 0===t?l():l(t);return""===t&&(s[e]=!0),e};f(p,l);var d=p.prototype=l.prototype;d.constructor=p;var v=d.toString,y="Symbol(test)"==String(l("test")),h=/^Symbol\((.*)\)[^)]+$/;u(d,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=v.call(t);if(a(s,t))return"";var n=y?e.slice(7,-1):e.replace(h,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},e163:function(t,e,n){var r=n("5135"),o=n("7b0b"),i=n("f772"),a=n("e177"),c=i("IE_PROTO"),u=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),a=n("69f3"),c=n("7dd0"),u="Array Iterator",f=a.set,l=a.getterFor(u);t.exports=c(Array,"Array",(function(t,e){f(this,{type:u,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,c=n("23e7"),u=n("c430"),f=n("da84"),l=n("d066"),s=n("fea9"),p=n("6eeb"),d=n("e2cc"),v=n("d2bb"),y=n("d44e"),h=n("2626"),m=n("861d"),b=n("1c0b"),g=n("19aa"),x=n("8925"),w=n("2266"),S=n("1c7e"),O=n("4840"),T=n("2cf4").set,_=n("b575"),A=n("cdf9"),E=n("44de"),j=n("f069"),R=n("e667"),P=n("69f3"),k=n("94ca"),I=n("b622"),L=n("6069"),M=n("605d"),N=n("2d00"),D=I("species"),C="Promise",F=P.get,U=P.set,z=P.getterFor(C),H=s&&s.prototype,B=s,G=H,$=f.TypeError,W=f.document,V=f.process,q=j.f,Y=q,K=!!(W&&W.createEvent&&f.dispatchEvent),X="function"==typeof PromiseRejectionEvent,J="unhandledrejection",Q="rejectionhandled",Z=0,tt=1,et=2,nt=1,rt=2,ot=!1,it=k(C,(function(){var t=x(B),e=t!==String(B);if(!e&&66===N)return!0;if(u&&!G["finally"])return!0;if(N>=51&&/native code/.test(t))return!1;var n=new B((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))},o=n.constructor={};return o[D]=r,ot=n.then((function(){}))instanceof r,!ot||!e&&L&&!X})),at=it||!S((function(t){B.all(t)["catch"]((function(){}))})),ct=function(t){var e;return!(!m(t)||"function"!=typeof(e=t.then))&&e},ut=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;_((function(){var r=t.value,o=t.state==tt,i=0;while(n.length>i){var a,c,u,f=n[i++],l=o?f.ok:f.fail,s=f.resolve,p=f.reject,d=f.domain;try{l?(o||(t.rejection===rt&&pt(t),t.rejection=nt),!0===l?a=r:(d&&d.enter(),a=l(r),d&&(d.exit(),u=!0)),a===f.promise?p($("Promise-chain cycle")):(c=ct(a))?c.call(a,s,p):s(a)):p(r)}catch(v){d&&!u&&d.exit(),p(v)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&lt(t)}))}},ft=function(t,e,n){var r,o;K?(r=W.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),f.dispatchEvent(r)):r={promise:e,reason:n},!X&&(o=f["on"+t])?o(r):t===J&&E("Unhandled promise rejection",n)},lt=function(t){T.call(f,(function(){var e,n=t.facade,r=t.value,o=st(t);if(o&&(e=R((function(){M?V.emit("unhandledRejection",r,n):ft(J,n,r)})),t.rejection=M||st(t)?rt:nt,e.error))throw e.value}))},st=function(t){return t.rejection!==nt&&!t.parent},pt=function(t){T.call(f,(function(){var e=t.facade;M?V.emit("rejectionHandled",e):ft(Q,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},vt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ut(t,!0))},yt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw $("Promise can't be resolved itself");var r=ct(e);r?_((function(){var n={done:!1};try{r.call(e,dt(yt,n,t),dt(vt,n,t))}catch(o){vt(n,o,t)}})):(t.value=e,t.state=tt,ut(t,!1))}catch(o){vt({done:!1},o,t)}}};if(it&&(B=function(t){g(this,B,C),b(t),r.call(this);var e=F(this);try{t(dt(yt,e),dt(vt,e))}catch(n){vt(e,n)}},G=B.prototype,r=function(t){U(this,{type:C,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Z,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=z(this),r=q(O(this,B));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=M?V.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Z&&ut(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=F(t);this.promise=t,this.resolve=dt(yt,e),this.reject=dt(vt,e)},j.f=q=function(t){return t===B||t===i?new o(t):Y(t)},!u&&"function"==typeof s&&H!==Object.prototype)){a=H.then,ot||(p(H,"then",(function(t,e){var n=this;return new B((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),p(H,"catch",G["catch"],{unsafe:!0}));try{delete H.constructor}catch(ht){}v&&v(H,G)}c({global:!0,wrap:!0,forced:it},{Promise:B}),y(B,C,!1,!0),h(C),i=l(C),c({target:C,stat:!0,forced:it},{reject:function(t){var e=q(this);return e.reject.call(void 0,t),e.promise}}),c({target:C,stat:!0,forced:u||it},{resolve:function(t){return A(u&&this===i?B:this,t)}}),c({target:C,stat:!0,forced:at},{all:function(t){var e=this,n=q(e),r=n.resolve,o=n.reject,i=R((function(){var n=b(e.resolve),i=[],a=0,c=1;w(t,(function(t){var u=a++,f=!1;i.push(void 0),c++,n.call(e,t).then((function(t){f||(f=!0,i[u]=t,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=q(e),r=n.reject,o=R((function(){var o=b(e.resolve);w(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,u=i.f,f=0;f<n.length;f++){var l=n[f];r(t,l)||c(t,l,u(e,l))}}},e8b5:function(t,e,n){var r=n("c6b6");t.exports=Array.isArray||function(t){return"Array"==r(t)}},e95a:function(t,e,n){var r=n("b622"),o=n("3f8c"),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},f069:function(t,e,n){"use strict";var r=n("1c0b"),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),c="Arguments"==o(function(){return arguments}()),u=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=u(e=Object(t),a))?n:c?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},fb6a:function(t,e,n){"use strict";var r=n("23e7"),o=n("861d"),i=n("e8b5"),a=n("23cb"),c=n("50c4"),u=n("fc6a"),f=n("8418"),l=n("b622"),s=n("1dde"),p=s("slice"),d=l("species"),v=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!p},{slice:function(t,e){var n,r,l,s=u(this),p=c(s.length),h=a(t,p),m=a(void 0===e?p:e,p);if(i(s)&&(n=s.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?o(n)&&(n=n[d],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return v.call(s,h,m);for(r=new(void 0===n?Array:n)(y(m-h,0)),l=0;h<m;h++,l++)h in s&&f(r,l,s[h]);return r.length=l,r}})},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fce3:function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)}))},fdbc:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fea9:function(t,e,n){var r=n("da84");t.exports=r.Promise}});
+(function(e,n){t.exports=n()})(0,(function(){"use strict";function t(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var e=Object.hasOwnProperty,n=Object.setPrototypeOf,r=Object.isFrozen,o=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,c=Object.seal,u=Object.create,f="undefined"!==typeof Reflect&&Reflect,l=f.apply,s=f.construct;l||(l=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),c||(c=function(t){return t}),s||(s=function(e,n){return new(Function.prototype.bind.apply(e,[null].concat(t(n))))});var p=S(Array.prototype.forEach),d=S(Array.prototype.pop),v=S(Array.prototype.push),h=S(String.prototype.toLowerCase),y=S(String.prototype.match),b=S(String.prototype.replace),m=S(String.prototype.indexOf),g=S(String.prototype.trim),x=S(RegExp.prototype.test),w=O(TypeError);function S(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return l(t,e,r)}}function O(t){return function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return s(t,n)}}function T(t,e){n&&n(t,null);var o=e.length;while(o--){var i=e[o];if("string"===typeof i){var a=h(i);a!==i&&(r(e)||(e[o]=a),i=a)}t[i]=!0}return t}function A(t){var n=u(null),r=void 0;for(r in t)l(e,t,[r])&&(n[r]=t[r]);return n}function _(t,e){while(null!==t){var n=i(t,e);if(n){if(n.get)return S(n.get);if("function"===typeof n.value)return S(n.value)}t=o(t)}function r(t){return console.warn("fallback value for",t),null}return r}var E=a(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),j=a(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),R=a(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),P=a(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),k=a(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),I=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),L=a(["#text"]),M=a(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),N=a(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),D=a(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),C=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),F=c(/\{\{[\s\S]*|[\s\S]*\}\}/gm),U=c(/<%[\s\S]*|[\s\S]*%>/gm),z=c(/^data-[\-\w.\u00B7-\uFFFF]/),H=c(/^aria-[\-\w]+$/),B=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),G=c(/^(?:\w+script|data):/i),$=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),W="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function V(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var q=function(){return"undefined"===typeof window?null:window},Y=function(t,e){if("object"!==("undefined"===typeof t?"undefined":W(t))||"function"!==typeof t.createPolicy)return null;var n=null,r="data-tt-policy-suffix";e.currentScript&&e.currentScript.hasAttribute(r)&&(n=e.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return t.createPolicy(o,{createHTML:function(t){return t}})}catch(i){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function K(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q(),e=function(t){return K(t)};if(e.version="2.3.3",e.removed=[],!t||!t.document||9!==t.document.nodeType)return e.isSupported=!1,e;var n=t.document,r=t.document,o=t.DocumentFragment,i=t.HTMLTemplateElement,c=t.Node,u=t.Element,f=t.NodeFilter,l=t.NamedNodeMap,s=void 0===l?t.NamedNodeMap||t.MozNamedAttrMap:l,S=t.Text,O=t.Comment,X=t.DOMParser,J=t.trustedTypes,Q=u.prototype,Z=_(Q,"cloneNode"),tt=_(Q,"nextSibling"),et=_(Q,"childNodes"),nt=_(Q,"parentNode");if("function"===typeof i){var rt=r.createElement("template");rt.content&&rt.content.ownerDocument&&(r=rt.content.ownerDocument)}var ot=Y(J,n),it=ot&&Ct?ot.createHTML(""):"",at=r,ct=at.implementation,ut=at.createNodeIterator,ft=at.createDocumentFragment,lt=at.getElementsByTagName,st=n.importNode,pt={};try{pt=A(r).documentMode?r.documentMode:{}}catch(Se){}var dt={};e.isSupported="function"===typeof nt&&ct&&"undefined"!==typeof ct.createHTMLDocument&&9!==pt;var vt=F,ht=U,yt=z,bt=H,mt=G,gt=$,xt=B,wt=null,St=T({},[].concat(V(E),V(j),V(R),V(k),V(L))),Ot=null,Tt=T({},[].concat(V(M),V(N),V(D),V(C))),At=null,_t=null,Et=!0,jt=!0,Rt=!1,Pt=!1,kt=!1,It=!1,Lt=!1,Mt=!1,Nt=!1,Dt=!0,Ct=!1,Ft=!0,Ut=!0,zt=!1,Ht={},Bt=null,Gt=T({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),$t=null,Wt=T({},["audio","video","img","source","image","track"]),Vt=null,qt=T({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Yt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",Xt="http://www.w3.org/1999/xhtml",Jt=Xt,Qt=!1,Zt=void 0,te=["application/xhtml+xml","text/html"],ee="text/html",ne=void 0,re=null,oe=r.createElement("form"),ie=function(t){re&&re===t||(t&&"object"===("undefined"===typeof t?"undefined":W(t))||(t={}),t=A(t),wt="ALLOWED_TAGS"in t?T({},t.ALLOWED_TAGS):St,Ot="ALLOWED_ATTR"in t?T({},t.ALLOWED_ATTR):Tt,Vt="ADD_URI_SAFE_ATTR"in t?T(A(qt),t.ADD_URI_SAFE_ATTR):qt,$t="ADD_DATA_URI_TAGS"in t?T(A(Wt),t.ADD_DATA_URI_TAGS):Wt,Bt="FORBID_CONTENTS"in t?T({},t.FORBID_CONTENTS):Gt,At="FORBID_TAGS"in t?T({},t.FORBID_TAGS):{},_t="FORBID_ATTR"in t?T({},t.FORBID_ATTR):{},Ht="USE_PROFILES"in t&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,jt=!1!==t.ALLOW_DATA_ATTR,Rt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pt=t.SAFE_FOR_TEMPLATES||!1,kt=t.WHOLE_DOCUMENT||!1,Mt=t.RETURN_DOM||!1,Nt=t.RETURN_DOM_FRAGMENT||!1,Dt=!1!==t.RETURN_DOM_IMPORT,Ct=t.RETURN_TRUSTED_TYPE||!1,Lt=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Ut=!1!==t.KEEP_CONTENT,zt=t.IN_PLACE||!1,xt=t.ALLOWED_URI_REGEXP||xt,Jt=t.NAMESPACE||Xt,Zt=Zt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Zt?function(t){return t}:h,Pt&&(jt=!1),Nt&&(Mt=!0),Ht&&(wt=T({},[].concat(V(L))),Ot=[],!0===Ht.html&&(T(wt,E),T(Ot,M)),!0===Ht.svg&&(T(wt,j),T(Ot,N),T(Ot,C)),!0===Ht.svgFilters&&(T(wt,R),T(Ot,N),T(Ot,C)),!0===Ht.mathMl&&(T(wt,k),T(Ot,D),T(Ot,C))),t.ADD_TAGS&&(wt===St&&(wt=A(wt)),T(wt,t.ADD_TAGS)),t.ADD_ATTR&&(Ot===Tt&&(Ot=A(Ot)),T(Ot,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&T(Vt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Bt===Gt&&(Bt=A(Bt)),T(Bt,t.FORBID_CONTENTS)),Ut&&(wt["#text"]=!0),kt&&T(wt,["html","head","body"]),wt.table&&(T(wt,["tbody"]),delete At.tbody),a&&a(t),re=t)},ae=T({},["mi","mo","mn","ms","mtext"]),ce=T({},["foreignobject","desc","title","annotation-xml"]),ue=T({},j);T(ue,R),T(ue,P);var fe=T({},k);T(fe,I);var le=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:Xt,tagName:"template"});var n=h(t.tagName),r=h(e.tagName);if(t.namespaceURI===Kt)return e.namespaceURI===Xt?"svg"===n:e.namespaceURI===Yt?"svg"===n&&("annotation-xml"===r||ae[r]):Boolean(ue[n]);if(t.namespaceURI===Yt)return e.namespaceURI===Xt?"math"===n:e.namespaceURI===Kt?"math"===n&&ce[r]:Boolean(fe[n]);if(t.namespaceURI===Xt){if(e.namespaceURI===Kt&&!ce[r])return!1;if(e.namespaceURI===Yt&&!ae[r])return!1;var o=T({},["title","style","font","a","script"]);return!fe[n]&&(o[n]||!ue[n])}return!1},se=function(t){v(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Se){try{t.outerHTML=it}catch(Se){t.remove()}}},pe=function(t,n){try{v(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(Se){v(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!Ot[t])if(Mt||Nt)try{se(n)}catch(Se){}else try{n.setAttribute(t,"")}catch(Se){}},de=function(t){var e=void 0,n=void 0;if(Lt)t="<remove></remove>"+t;else{var o=y(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Zt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=ot?ot.createHTML(t):t;if(Jt===Xt)try{e=(new X).parseFromString(i,Zt)}catch(Se){}if(!e||!e.documentElement){e=ct.createDocument(Jt,"template",null);try{e.documentElement.innerHTML=Qt?"":i}catch(Se){}}var a=e.body||e.documentElement;return t&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Jt===Xt?lt.call(e,kt?"html":"body")[0]:kt?e.documentElement:a},ve=function(t){return ut.call(t.ownerDocument||t,t,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},he=function(t){return!(t instanceof S||t instanceof O)&&!("string"===typeof t.nodeName&&"string"===typeof t.textContent&&"function"===typeof t.removeChild&&t.attributes instanceof s&&"function"===typeof t.removeAttribute&&"function"===typeof t.setAttribute&&"string"===typeof t.namespaceURI&&"function"===typeof t.insertBefore)},ye=function(t){return"object"===("undefined"===typeof c?"undefined":W(c))?t instanceof c:t&&"object"===("undefined"===typeof t?"undefined":W(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},be=function(t,n,r){dt[t]&&p(dt[t],(function(t){t.call(e,n,r,re)}))},me=function(t){var n=void 0;if(be("beforeSanitizeElements",t,null),he(t))return se(t),!0;if(y(t.nodeName,/[\u0080-\uFFFF]/))return se(t),!0;var r=ne(t.nodeName);if(be("uponSanitizeElement",t,{tagName:r,allowedTags:wt}),!ye(t.firstElementChild)&&(!ye(t.content)||!ye(t.content.firstElementChild))&&x(/<[/\w]/g,t.innerHTML)&&x(/<[/\w]/g,t.textContent))return se(t),!0;if("select"===r&&x(/<template/i,t.innerHTML))return se(t),!0;if(!wt[r]||At[r]){if(Ut&&!Bt[r]){var o=nt(t)||t.parentNode,i=et(t)||t.childNodes;if(i&&o)for(var a=i.length,c=a-1;c>=0;--c)o.insertBefore(Z(i[c],!0),tt(t))}return se(t),!0}return t instanceof u&&!le(t)?(se(t),!0):"noscript"!==r&&"noembed"!==r||!x(/<\/no(script|embed)/i,t.innerHTML)?(Pt&&3===t.nodeType&&(n=t.textContent,n=b(n,vt," "),n=b(n,ht," "),t.textContent!==n&&(v(e.removed,{element:t.cloneNode()}),t.textContent=n)),be("afterSanitizeElements",t,null),!1):(se(t),!0)},ge=function(t,e,n){if(Ft&&("id"===e||"name"===e)&&(n in r||n in oe))return!1;if(jt&&!_t[e]&&x(yt,e));else if(Et&&x(bt,e));else{if(!Ot[e]||_t[e])return!1;if(Vt[e]);else if(x(xt,b(n,gt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==m(n,"data:")||!$t[t]){if(Rt&&!x(mt,b(n,gt,"")));else if(n)return!1}else;}return!0},xe=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;be("beforeSanitizeAttributes",t,null);var a=t.attributes;if(a){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ot};i=a.length;while(i--){n=a[i];var u=n,f=u.name,l=u.namespaceURI;if(r=g(n.value),o=ne(f),c.attrName=o,c.attrValue=r,c.keepAttr=!0,c.forceKeepAttr=void 0,be("uponSanitizeAttribute",t,c),r=c.attrValue,!c.forceKeepAttr&&(pe(f,t),c.keepAttr))if(x(/\/>/i,r))pe(f,t);else{Pt&&(r=b(r,vt," "),r=b(r,ht," "));var s=ne(t.nodeName);if(ge(s,o,r))try{l?t.setAttributeNS(l,f,r):t.setAttribute(f,r),d(e.removed)}catch(Se){}}}be("afterSanitizeAttributes",t,null)}},we=function t(e){var n=void 0,r=ve(e);be("beforeSanitizeShadowDOM",e,null);while(n=r.nextNode())be("uponSanitizeShadowNode",n,null),me(n)||(n.content instanceof o&&t(n.content),xe(n));be("afterSanitizeShadowDOM",e,null)};return e.sanitize=function(r,i){var a=void 0,u=void 0,f=void 0,l=void 0,s=void 0;if(Qt=!r,Qt&&(r="\x3c!--\x3e"),"string"!==typeof r&&!ye(r)){if("function"!==typeof r.toString)throw w("toString is not a function");if(r=r.toString(),"string"!==typeof r)throw w("dirty is not a string, aborting")}if(!e.isSupported){if("object"===W(t.toStaticHTML)||"function"===typeof t.toStaticHTML){if("string"===typeof r)return t.toStaticHTML(r);if(ye(r))return t.toStaticHTML(r.outerHTML)}return r}if(It||ie(i),e.removed=[],"string"===typeof r&&(zt=!1),zt);else if(r instanceof c)a=de("\x3c!----\x3e"),u=a.ownerDocument.importNode(r,!0),1===u.nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?a=u:a.appendChild(u);else{if(!Mt&&!Pt&&!kt&&-1===r.indexOf("<"))return ot&&Ct?ot.createHTML(r):r;if(a=de(r),!a)return Mt?null:it}a&&Lt&&se(a.firstChild);var p=ve(zt?r:a);while(f=p.nextNode())3===f.nodeType&&f===l||me(f)||(f.content instanceof o&&we(f.content),xe(f),l=f);if(l=null,zt)return r;if(Mt){if(Nt){s=ft.call(a.ownerDocument);while(a.firstChild)s.appendChild(a.firstChild)}else s=a;return Dt&&(s=st.call(n,s,!0)),s}var d=kt?a.outerHTML:a.innerHTML;return Pt&&(d=b(d,vt," "),d=b(d,ht," ")),ot&&Ct?ot.createHTML(d):d},e.setConfig=function(t){ie(t),It=!0},e.clearConfig=function(){re=null,It=!1},e.isValidAttribute=function(t,e,n){re||ie({});var r=ne(t),o=ne(e);return ge(r,o,n)},e.addHook=function(t,e){"function"===typeof e&&(dt[t]=dt[t]||[],v(dt[t],e))},e.removeHook=function(t){dt[t]&&d(dt[t])},e.removeHooks=function(t){dt[t]&&(dt[t]=[])},e.removeAllHooks=function(){dt={}},e}var X=K();return X}))},c1f9:function(t,e,n){var r=n("23e7"),o=n("2266"),i=n("8418");r({target:"Object",stat:!0},{fromEntries:function(t){var e={};return o(t,(function(t,n){i(e,t,n)}),{AS_ENTRIES:!0}),e}})},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8d2:function(t,e,n){var r=n("d039"),o=n("5899"),i="​…᠎";t.exports=function(t){return r((function(){return!!o[t]()||i[t]()!=i||o[t].name!==t}))}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)!r(a,n)&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},caad:function(t,e,n){"use strict";var r=n("23e7"),o=n("4d64").includes,i=n("44d2");r({target:"Array",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84");t.exports=function(t,e){try{Object.defineProperty(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("da84"),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d28b:function(t,e,n){var r=n("746f");r("iterator")},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d4c3:function(t,e,n){var r=n("342f"),o=n("da84");t.exports=/ipad|iphone|ipod/i.test(r)&&void 0!==o.Pebble},d58f:function(t,e,n){var r=n("1c0b"),o=n("7b0b"),i=n("44ad"),a=n("50c4"),c=function(t){return function(e,n,c,u){r(n);var f=o(e),l=i(f),s=a(f.length),p=t?s-1:0,d=t?-1:1;if(c<2)while(1){if(p in l){u=l[p],p+=d;break}if(p+=d,t?p<0:s<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:s>p;p+=d)p in l&&(u=n(u,l[p],p,f));return u}};t.exports={left:c(!1),right:c(!0)}},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("9263"),i=n("d039"),a=n("b622"),c=n("9112"),u=a("species"),f=RegExp.prototype;t.exports=function(t,e,n,l){var s=a(t),p=!i((function(){var e={};return e[s]=function(){return 7},7!=""[t](e)})),d=p&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[u]=function(){return n},n.flags="",n[s]=/./[s]),n.exec=function(){return e=!0,null},n[s](""),!e}));if(!p||!d||n){var v=/./[s],h=e(s,""[t],(function(t,e,n,r,i){var a=e.exec;return a===o||a===f.exec?p&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}));r(String.prototype,t,h[0]),r(f,s,h[1])}l&&c(f[s],"sham",!0)}},d9b5:function(t,e,n){var r=n("d066"),o=n("fdbf");t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return"function"==typeof e&&Object(t)instanceof e}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("24aa"))},ddb0:function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("e260"),a=n("9112"),c=n("b622"),u=c("iterator"),f=c("toStringTag"),l=i.values;for(var s in o){var p=r[s],d=p&&p.prototype;if(d){if(d[u]!==l)try{a(d,u,l)}catch(h){d[u]=l}if(d[f]||a(d,f,s),o[s])for(var v in i)if(d[v]!==i[v])try{a(d,v,i[v])}catch(h){d[v]=i[v]}}}},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},e01a:function(t,e,n){"use strict";var r=n("23e7"),o=n("83ab"),i=n("da84"),a=n("5135"),c=n("861d"),u=n("9bf2").f,f=n("e893"),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var s={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new l(t):void 0===t?l():l(t);return""===t&&(s[e]=!0),e};f(p,l);var d=p.prototype=l.prototype;d.constructor=p;var v=d.toString,h="Symbol(test)"==String(l("test")),y=/^Symbol\((.*)\)[^)]+$/;u(d,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=v.call(t);if(a(s,t))return"";var n=h?e.slice(7,-1):e.replace(y,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},e163:function(t,e,n){var r=n("5135"),o=n("7b0b"),i=n("f772"),a=n("e177"),c=i("IE_PROTO"),u=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),a=n("69f3"),c=n("7dd0"),u="Array Iterator",f=a.set,l=a.getterFor(u);t.exports=c(Array,"Array",(function(t,e){f(this,{type:u,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,c=n("23e7"),u=n("c430"),f=n("da84"),l=n("d066"),s=n("fea9"),p=n("6eeb"),d=n("e2cc"),v=n("d2bb"),h=n("d44e"),y=n("2626"),b=n("861d"),m=n("1c0b"),g=n("19aa"),x=n("8925"),w=n("2266"),S=n("1c7e"),O=n("4840"),T=n("2cf4").set,A=n("b575"),_=n("cdf9"),E=n("44de"),j=n("f069"),R=n("e667"),P=n("69f3"),k=n("94ca"),I=n("b622"),L=n("6069"),M=n("605d"),N=n("2d00"),D=I("species"),C="Promise",F=P.get,U=P.set,z=P.getterFor(C),H=s&&s.prototype,B=s,G=H,$=f.TypeError,W=f.document,V=f.process,q=j.f,Y=q,K=!!(W&&W.createEvent&&f.dispatchEvent),X="function"==typeof PromiseRejectionEvent,J="unhandledrejection",Q="rejectionhandled",Z=0,tt=1,et=2,nt=1,rt=2,ot=!1,it=k(C,(function(){var t=x(B),e=t!==String(B);if(!e&&66===N)return!0;if(u&&!G["finally"])return!0;if(N>=51&&/native code/.test(t))return!1;var n=new B((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))},o=n.constructor={};return o[D]=r,ot=n.then((function(){}))instanceof r,!ot||!e&&L&&!X})),at=it||!S((function(t){B.all(t)["catch"]((function(){}))})),ct=function(t){var e;return!(!b(t)||"function"!=typeof(e=t.then))&&e},ut=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;A((function(){var r=t.value,o=t.state==tt,i=0;while(n.length>i){var a,c,u,f=n[i++],l=o?f.ok:f.fail,s=f.resolve,p=f.reject,d=f.domain;try{l?(o||(t.rejection===rt&&pt(t),t.rejection=nt),!0===l?a=r:(d&&d.enter(),a=l(r),d&&(d.exit(),u=!0)),a===f.promise?p($("Promise-chain cycle")):(c=ct(a))?c.call(a,s,p):s(a)):p(r)}catch(v){d&&!u&&d.exit(),p(v)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&lt(t)}))}},ft=function(t,e,n){var r,o;K?(r=W.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),f.dispatchEvent(r)):r={promise:e,reason:n},!X&&(o=f["on"+t])?o(r):t===J&&E("Unhandled promise rejection",n)},lt=function(t){T.call(f,(function(){var e,n=t.facade,r=t.value,o=st(t);if(o&&(e=R((function(){M?V.emit("unhandledRejection",r,n):ft(J,n,r)})),t.rejection=M||st(t)?rt:nt,e.error))throw e.value}))},st=function(t){return t.rejection!==nt&&!t.parent},pt=function(t){T.call(f,(function(){var e=t.facade;M?V.emit("rejectionHandled",e):ft(Q,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},vt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ut(t,!0))},ht=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw $("Promise can't be resolved itself");var r=ct(e);r?A((function(){var n={done:!1};try{r.call(e,dt(ht,n,t),dt(vt,n,t))}catch(o){vt(n,o,t)}})):(t.value=e,t.state=tt,ut(t,!1))}catch(o){vt({done:!1},o,t)}}};if(it&&(B=function(t){g(this,B,C),m(t),r.call(this);var e=F(this);try{t(dt(ht,e),dt(vt,e))}catch(n){vt(e,n)}},G=B.prototype,r=function(t){U(this,{type:C,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Z,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=z(this),r=q(O(this,B));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=M?V.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Z&&ut(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=F(t);this.promise=t,this.resolve=dt(ht,e),this.reject=dt(vt,e)},j.f=q=function(t){return t===B||t===i?new o(t):Y(t)},!u&&"function"==typeof s&&H!==Object.prototype)){a=H.then,ot||(p(H,"then",(function(t,e){var n=this;return new B((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),p(H,"catch",G["catch"],{unsafe:!0}));try{delete H.constructor}catch(yt){}v&&v(H,G)}c({global:!0,wrap:!0,forced:it},{Promise:B}),h(B,C,!1,!0),y(C),i=l(C),c({target:C,stat:!0,forced:it},{reject:function(t){var e=q(this);return e.reject.call(void 0,t),e.promise}}),c({target:C,stat:!0,forced:u||it},{resolve:function(t){return _(u&&this===i?B:this,t)}}),c({target:C,stat:!0,forced:at},{all:function(t){var e=this,n=q(e),r=n.resolve,o=n.reject,i=R((function(){var n=m(e.resolve),i=[],a=0,c=1;w(t,(function(t){var u=a++,f=!1;i.push(void 0),c++,n.call(e,t).then((function(t){f||(f=!0,i[u]=t,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=q(e),r=n.reject,o=R((function(){var o=m(e.resolve);w(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,u=i.f,f=0;f<n.length;f++){var l=n[f];r(t,l)||c(t,l,u(e,l))}}},e8b5:function(t,e,n){var r=n("c6b6");t.exports=Array.isArray||function(t){return"Array"==r(t)}},e95a:function(t,e,n){var r=n("b622"),o=n("3f8c"),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},f069:function(t,e,n){"use strict";var r=n("1c0b"),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),c="Arguments"==o(function(){return arguments}()),u=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=u(e=Object(t),a))?n:c?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},fb6a:function(t,e,n){"use strict";var r=n("23e7"),o=n("861d"),i=n("e8b5"),a=n("23cb"),c=n("50c4"),u=n("fc6a"),f=n("8418"),l=n("b622"),s=n("1dde"),p=s("slice"),d=l("species"),v=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!p},{slice:function(t,e){var n,r,l,s=u(this),p=c(s.length),y=a(t,p),b=a(void 0===e?p:e,p);if(i(s)&&(n=s.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?o(n)&&(n=n[d],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return v.call(s,y,b);for(r=new(void 0===n?Array:n)(h(b-y,0)),l=0;y<b;y++,l++)y in s&&f(r,l,s[y]);return r.length=l,r}})},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fce3:function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)}))},fdbc:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fea9:function(t,e,n){var r=n("da84");t.exports=r.Promise}});
//# sourceMappingURL=MatomoPolyfills.min.js.map \ No newline at end of file
diff --git a/plugins/CoreVue/polyfills/src/index.ts b/plugins/CoreVue/polyfills/src/index.ts
index 2b16439410..56a48ae823 100644
--- a/plugins/CoreVue/polyfills/src/index.ts
+++ b/plugins/CoreVue/polyfills/src/index.ts
@@ -43,8 +43,24 @@ window.Vue.toDisplayString = function matomoToDisplayString(val: unknown): strin
return result;
};
+function hasSafeRel(rel: string) {
+ const parts = rel.split(/\s+/);
+ return parts.includes('noopener') && parts.includes('noreferrer');
+}
+
+// remove target=_blank if a link doesn't have noopener noreferrer
+DOMPurify.addHook('afterSanitizeAttributes', (node: Element) => {
+ if (node.hasAttribute('target')
+ && node.getAttribute('target') === '_blank'
+ && (!node.hasAttribute('rel')
+ || !hasSafeRel(node.getAttribute('rel')))
+ ) {
+ node.removeAttribute('target');
+ }
+});
+
window.vueSanitize = function vueSanitize(val: unknown): string {
- let result = DOMPurify.sanitize(val);
+ let result = DOMPurify.sanitize(val, { ADD_ATTR: ['target'] });
result = result.replace(/{{/g, '{&#8291;{');
return result;
};
diff --git a/plugins/CoreVue/types/index.d.ts b/plugins/CoreVue/types/index.d.ts
index 18b1e7fe34..49fd91baa5 100644
--- a/plugins/CoreVue/types/index.d.ts
+++ b/plugins/CoreVue/types/index.d.ts
@@ -76,7 +76,7 @@ declare global {
interface PiwikHelperGlobal {
escape(text: string): string;
- redirect(params: any);
+ redirect(params?: any);
htmlDecode(encoded: string): string;
htmlEntities(value: string): string;
modalConfirm(element: JQuery|JQLite|HTMLElement|string, callbacks?: ModalConfirmCallbacks, options?: ModalConfirmOptions);
@@ -87,6 +87,7 @@ declare global {
lazyScrollToContent(): void;
registerShortcut(key: string, description: string, callback: (event: ExtendedKeyboardEvent) => void): void;
compileAngularComponents(selector: JQuery|JQLite|HTMLElement|string, options?: CompileAngularComponentsOptions): void;
+ compileVueEntryComponents(selector: JQuery|JQLite|HTMLElement|string): void;
calculateEvolution(currentValue: number, pastValue?: number|null): number;
sendContentAsDownload(filename: string, content: any, mimeType?: string): void;
}
@@ -146,6 +147,7 @@ declare global {
hasSuperUserAccess: boolean;
language: string;
cacheBuster: string;
+ numbers: Record<string, string>;
updatePeriodParamsFromUrl(): void;
updateDateInTitle(date: string, period: string): void;
@@ -175,6 +177,12 @@ declare global {
scrollToAnchorInUrl(): void;
}
+ interface NumberFormatter {
+ formatNumber(value?: number|string): string;
+ formatPercent(value?: number|string): string;
+ formatCurrency(value?: number|string, currency: string): string;
+ }
+
interface Window {
angular: IAngularStatic;
globalAjaxQueue: GlobalAjaxQueue;
@@ -188,6 +196,7 @@ declare global {
anchorLinkFix: AnchorLinkFix;
$: JQueryStatic;
Piwik_Popover: PiwikPopoverGlobal;
+ NumberFormatter: NumberFormatter;
_pk_translate(translationStringId: string, values: string[]): string;
require(p: string): any;
diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts
-Subproject ee719d667935b5493ca10e33677898990db68e7
+Subproject 9f64178fc555b97286af2853012b45b1d5fd2cc
diff --git a/plugins/CustomDimensions/API.php b/plugins/CustomDimensions/API.php
index d2ef2f4983..1e93914520 100644
--- a/plugins/CustomDimensions/API.php
+++ b/plugins/CustomDimensions/API.php
@@ -9,12 +9,10 @@
namespace Piwik\Plugins\CustomDimensions;
use Piwik\Common;
-use Piwik\DataTable\Row;
use Piwik\Archive;
use Piwik\DataTable;
use Piwik\Filesystem;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
diff --git a/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php b/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php
index cd298d6a7c..a6f11f890b 100644
--- a/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php
+++ b/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php
@@ -7,8 +7,6 @@
*/
namespace Piwik\Plugins\CustomDimensions\Columns\Metrics;
-use Piwik\DataTable\Row;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
diff --git a/plugins/CustomDimensions/Commands/AddCustomDimension.php b/plugins/CustomDimensions/Commands/AddCustomDimension.php
index 44aee50ac2..1b67650627 100644
--- a/plugins/CustomDimensions/Commands/AddCustomDimension.php
+++ b/plugins/CustomDimensions/Commands/AddCustomDimension.php
@@ -13,7 +13,6 @@ use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Tracker\Cache;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CustomDimensions/Commands/Info.php b/plugins/CustomDimensions/Commands/Info.php
index a72e2f87c6..ce43bc074c 100644
--- a/plugins/CustomDimensions/Commands/Info.php
+++ b/plugins/CustomDimensions/Commands/Info.php
@@ -12,9 +12,7 @@ namespace Piwik\Plugins\CustomDimensions\Commands;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
/**
diff --git a/plugins/CustomDimensions/Commands/RemoveCustomDimension.php b/plugins/CustomDimensions/Commands/RemoveCustomDimension.php
index e571fb8dc7..dda9da4127 100644
--- a/plugins/CustomDimensions/Commands/RemoveCustomDimension.php
+++ b/plugins/CustomDimensions/Commands/RemoveCustomDimension.php
@@ -14,7 +14,6 @@ use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Tracker\Cache;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CustomDimensions/Controller.php b/plugins/CustomDimensions/Controller.php
index bc7fec5738..6defa629cc 100644
--- a/plugins/CustomDimensions/Controller.php
+++ b/plugins/CustomDimensions/Controller.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\CustomDimensions;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Piwik;
-use Piwik\View;
class Controller extends \Piwik\Plugin\ControllerAdmin
{
diff --git a/plugins/CustomDimensions/CustomDimensions.php b/plugins/CustomDimensions/CustomDimensions.php
index f79621246d..a55660f383 100644
--- a/plugins/CustomDimensions/CustomDimensions.php
+++ b/plugins/CustomDimensions/CustomDimensions.php
@@ -191,20 +191,13 @@ class CustomDimensions extends Plugin
public function getJsFiles(&$jsFiles)
{
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/model.js";
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/list.controller.js";
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/list.directive.js";
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/edit.controller.js";
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/edit.directive.js";
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/manage.controller.js";
- $jsFiles[] = "plugins/CustomDimensions/angularjs/manage/manage.directive.js";
$jsFiles[] = "plugins/CustomDimensions/javascripts/rowactions.js";
}
public function getStylesheetFiles(&$stylesheets)
{
- $stylesheets[] = "plugins/CustomDimensions/angularjs/manage/edit.directive.less";
- $stylesheets[] = "plugins/CustomDimensions/angularjs/manage/list.directive.less";
+ $stylesheets[] = "plugins/CustomDimensions/vue/src/Edit/Edit.less";
+ $stylesheets[] = "plugins/CustomDimensions/vue/src/List/List.less";
$stylesheets[] = "plugins/CustomDimensions/stylesheets/reports.less";
}
@@ -322,6 +315,9 @@ class CustomDimensions extends Plugin
$translationKeys[] = 'CustomDimensions_ColumnUniqueActions';
$translationKeys[] = 'CustomDimensions_ColumnAvgTimeOnDimension';
$translationKeys[] = 'CustomDimensions_CustomDimensionId';
+ $translationKeys[] = 'General_Update';
+ $translationKeys[] = 'General_Create';
+ $translationKeys[] = 'CustomDimensions_UrlQueryStringParameter';
}
public function addConversionInformation(&$conversion, $visitInformation, Tracker\Request $request)
diff --git a/plugins/CustomDimensions/Dao/AutoSuggest.php b/plugins/CustomDimensions/Dao/AutoSuggest.php
index 6b6c35c3b5..320a43e20a 100644
--- a/plugins/CustomDimensions/Dao/AutoSuggest.php
+++ b/plugins/CustomDimensions/Dao/AutoSuggest.php
@@ -10,10 +10,8 @@
namespace Piwik\Plugins\CustomDimensions\Dao;
use Piwik\API\Request;
-use Piwik\Common;
use Piwik\DataTable;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugins\CustomDimensions\Archiver;
class AutoSuggest
diff --git a/plugins/CustomDimensions/Dao/Configuration.php b/plugins/CustomDimensions/Dao/Configuration.php
index d6894a72b8..03aa4eac85 100644
--- a/plugins/CustomDimensions/Dao/Configuration.php
+++ b/plugins/CustomDimensions/Dao/Configuration.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\Dao;
-use Piwik\API\Request;
use Piwik\Common;
use Piwik\Db;
use Piwik\DbHelper;
diff --git a/plugins/CustomDimensions/Dao/LogTable.php b/plugins/CustomDimensions/Dao/LogTable.php
index 57b0e29575..d932af5d16 100644
--- a/plugins/CustomDimensions/Dao/LogTable.php
+++ b/plugins/CustomDimensions/Dao/LogTable.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CustomDimensions\Dao;
use Piwik\Common;
use Piwik\DataAccess\TableMetadata;
-use Piwik\DataTable;
use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
diff --git a/plugins/CustomDimensions/DataArray.php b/plugins/CustomDimensions/DataArray.php
index 5e87c07954..c5c8565b5d 100644
--- a/plugins/CustomDimensions/DataArray.php
+++ b/plugins/CustomDimensions/DataArray.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CustomDimensions;
-use Piwik\Metrics;
/**
* The DataArray is a data structure used to aggregate datasets,
diff --git a/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php b/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php
index 759c148c9c..fe07f4b461 100644
--- a/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php
+++ b/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\CustomDimensions\Archiver;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
diff --git a/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php b/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php
index a6ecdd779f..3d8897e294 100644
--- a/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php
+++ b/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php
@@ -9,11 +9,9 @@
namespace Piwik\Plugins\CustomDimensions\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\CustomDimensions\Archiver;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
-use Piwik\Tracker\PageUrl;
class AddSubtableSegmentMetadata extends BaseFilter
{
diff --git a/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php b/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php
index dde4985376..d0e36f0a32 100644
--- a/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php
+++ b/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\CoreHome\Columns\UserId;
diff --git a/plugins/CustomDimensions/Dimension/Extraction.php b/plugins/CustomDimensions/Dimension/Extraction.php
index 48b574a98f..e08e66cd70 100644
--- a/plugins/CustomDimensions/Dimension/Extraction.php
+++ b/plugins/CustomDimensions/Dimension/Extraction.php
@@ -12,8 +12,6 @@ namespace Piwik\Plugins\CustomDimensions\Dimension;
use Piwik\Common;
use Piwik\Tracker\Request;
use Piwik\Tracker\Action;
-use Piwik\Url;
-use Piwik\UrlHelper;
use Piwik\Piwik;
use Exception;
use Piwik\Validators\Regex;
diff --git a/plugins/CustomDimensions/Dimension/Scope.php b/plugins/CustomDimensions/Dimension/Scope.php
index affea4b25b..1ea6190cdf 100644
--- a/plugins/CustomDimensions/Dimension/Scope.php
+++ b/plugins/CustomDimensions/Dimension/Scope.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\Dimension;
-use \Exception;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
class Scope
diff --git a/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php b/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php
index c933ad0858..e714eb8051 100644
--- a/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php
+++ b/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php
@@ -18,7 +18,6 @@ use Piwik\Tracker\Model;
use Piwik\Tracker\Request;
use Piwik\Tracker\RequestProcessor;
use Piwik\Tracker\Visit\VisitProperties;
-use Piwik\Url;
/**
* Handles tracking of custom dimensions
diff --git a/plugins/CustomDimensions/Updates/0.1.2.php b/plugins/CustomDimensions/Updates/0.1.2.php
index 0730338976..ad59a6beda 100644
--- a/plugins/CustomDimensions/Updates/0.1.2.php
+++ b/plugins/CustomDimensions/Updates/0.1.2.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions;
-use Piwik\Common;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/plugins/CustomDimensions/VisitorDetails.php b/plugins/CustomDimensions/VisitorDetails.php
index f8834aa9b6..07762a84c4 100644
--- a/plugins/CustomDimensions/VisitorDetails.php
+++ b/plugins/CustomDimensions/VisitorDetails.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions;
use Piwik\API\Request;
-use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
diff --git a/plugins/CustomDimensions/angularjs/manage/edit.controller.js b/plugins/CustomDimensions/angularjs/manage/edit.controller.js
deleted file mode 100644
index 39993b6545..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/edit.controller.js
+++ /dev/null
@@ -1,141 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('CustomDimensionsEditController', CustomDimensionsEditController);
-
- CustomDimensionsEditController.$inject = ['$scope', 'customDimensionsModel', 'piwik', '$location', '$filter'];
-
- function CustomDimensionsEditController($scope, customDimensionsModel, piwik, $location, $filter) {
-
- var self = this;
- var currentId = null;
- var notificationId = 'customdimensions';
-
- var translate = $filter('translate');
-
- this.model = customDimensionsModel;
-
- function getNotification()
- {
- var UI = require('piwik/UI');
- return new UI.Notification();
- }
-
- function removeAnyCustomDimensionNotification()
- {
- getNotification().remove(notificationId);
- }
-
- function showNotification(message, context)
- {
- var notification = getNotification();
- notification.show(message, {context: context, id: notificationId});
- }
-
- function init(dimensionId)
- {
- self.create = dimensionId == '0';
- self.edit = !(dimensionId == '0');
-
- if (dimensionId !== null) {
- removeAnyCustomDimensionNotification();
- }
-
- self.model.fetchCustomDimensionsConfiguration().then(function () {
-
- if (self.edit && dimensionId) {
- self.model.findCustomDimension(dimensionId).then(function (dimension) {
- self.dimension = dimension;
- if (dimension && !dimension.extractions.length) {
- self.addExtraction();
- }
- });
- } else if (self.create) {
- self.dimension = {
- idSite: piwik.idSite,
- name: '',
- active: false,
- extractions: [],
- scope: $scope.dimensionScope,
- case_sensitive: true,
- };
- self.addExtraction();
- }
- });
- }
-
- this.removeExtraction = function(index)
- {
- if (index > -1) {
- this.dimension.extractions.splice(index, 1);
- }
- };
-
- this.addExtraction = function()
- {
- if (this.doesScopeSupportExtraction()) {
- this.dimension.extractions.push({dimension: 'url', pattern: ''});
- }
- };
-
- this.doesScopeSupportExtraction = function () {
- if (!this.dimension || !this.dimension.scope || !this.model.availableScopes) {
- return false;
- }
-
- var index, scope;
- for (index in this.model.availableScopes) {
- scope = this.model.availableScopes[index];
- if (scope && scope.value === this.dimension.scope) {
- return scope.supportsExtractions;
- }
- }
-
- return false;
- };
-
- this.createCustomDimension = function () {
- var method = 'CustomDimensions.configureNewCustomDimension';
-
- this.isUpdating = true;
-
- customDimensionsModel.createOrUpdateDimension(this.dimension, method).then(function (response) {
- if (response.type === 'error') {
- return;
- }
-
- showNotification(translate('CustomDimensions_DimensionCreated'), response.type);
- self.model.reload();
- $location.url('/list');
- });
- };
-
- this.updateCustomDimension = function () {
- this.dimension.idDimension = this.dimension.idcustomdimension;
-
- var method = 'CustomDimensions.configureExistingCustomDimension';
-
- this.isUpdating = true;
-
- customDimensionsModel.createOrUpdateDimension(this.dimension, method).then(function (response) {
- if (response.type === 'error') {
- return;
- }
-
- showNotification(translate('CustomDimensions_DimensionUpdated'), response.type);
- $location.url('/list');
- });
- };
-
- $scope.$watch('dimensionId', function (newValue, oldValue) {
- if (newValue != oldValue || currentId === null) {
- currentId = newValue;
- init(newValue);
- }
- });
- }
-})(); \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/edit.directive.html b/plugins/CustomDimensions/angularjs/manage/edit.directive.html
deleted file mode 100644
index 10719bd798..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/edit.directive.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<div class="editCustomDimension">
- <div piwik-content-block content-title="{{ 'CustomDimensions_ConfigureDimension'|translate:(dimensionScope|ucfirst):(editDimension.dimension.index || '') }}">
-
- <p ng-show="editDimension.model.isLoading || editDimension.model.isUpdating">
- <span class="loadingPiwik"><img src="plugins/Morpheus/images/loading-blue.gif"/> {{ 'General_LoadingData'|translate }}</span>
- </p>
-
- <div ng-show="!editDimension.model.isLoading">
- <form ng-submit="editDimension.edit ? editDimension.updateCustomDimension() : editDimension.createCustomDimension()">
-
- <div piwik-field uicontrol="text" name="name"
- ng-model="editDimension.dimension.name"
- title="{{ 'General_Name'|translate }}"
- maxlength="255"
- required="true"
- inline-help="{{ 'CustomDimensions_NameAllowedCharacters'|translate }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="active"
- ng-model="editDimension.dimension.active"
- title="{{ 'CorePluginsAdmin_Active'|translate }}"
- inline-help="{{ 'CustomDimensions_CannotBeDeleted'|translate }}">
- </div>
-
- <div class="row form-group" ng-show="editDimension.doesScopeSupportExtraction()">
-
- <h3 class="col s12">{{ 'CustomDimensions_ExtractValue'|translate }}</h3>
-
- <div class="col s12 m6">
-
- <div ng-repeat="(index, extraction) in editDimension.dimension.extractions" class="extraction {{ index }}">
-
- <div class="row">
-
- <div class="col s12 m6">
- <div piwik-field uicontrol="select" name="dimension{{index}}"
- ng-model="editDimension.dimension.extractions[index].dimension"
- full-width="true"
- options="editDimension.model.extractionDimensions">
- </div></div>
- <div class="col s12 m6">
- <div piwik-field uicontrol="text" name="pattern{{index}}"
- full-width="true"
- ng-model="editDimension.dimension.extractions[index].pattern"
- title="{{ editDimension.dimension.extractions[index].dimension === 'urlparam' ? 'url query string parameter' : 'eg. /blog/(.*)/' }}"
- >
- </div>
- </div>
- <div class="col s12">
- <span ng-click="editDimension.addExtraction()"
- ng-show="editDimension.dimension.extractions[index].pattern"
- class="icon-plus"></span>
- <span ng-click="editDimension.removeExtraction(index)"
- ng-show="(editDimension.dimension.extractions|length) > 1"
- class="icon-minus"></span>
- </div>
- </div>
-
- </div>
-
- <div class="row">
- <div class="col s12">
- <div piwik-field uicontrol="checkbox" name="casesensitive"
- ng-show="editDimension.dimension.extractions[0].pattern"
- ng-model="editDimension.dimension.case_sensitive"
- title="{{ 'Goals_CaseSensitive'|translate }}">
- </div>
- </div>
- </div>
-
- </div>
- <div class="col s12 m6 form-help">
- {{ 'CustomDimensions_ExtractionsHelp'|translate }}
- </div>
- </div>
-
- <input class="btn update" type="submit" ng-show="editDimension.edit" ng-disabled="editDimension.model.isUpdating" value="Update">
- <input class="btn create" type="submit" ng-show="editDimension.create" ng-disabled="editDimension.model.isUpdating" value="Create">
- <a class="btn cancel" type="button" ng-href="#list">{{ 'General_Cancel'|translate }}</a>
- </form>
-
- <div class="alert alert-info howToTrackInfo" ng-show="editDimension.edit">
- <strong>{{ 'CustomDimensions_HowToTrackManuallyTitle'|translate }}</strong>
- <p>
- {{ 'CustomDimensions_HowToTrackManuallyViaJs'|translate }}
- </p>
- <pre piwik-select-on-focus><code>_paq.push(['setCustomDimension', {{ editDimension.dimension.idcustomdimension }}, '{{ 'CustomDimensions_ExampleValue'|translate }}']);</code></pre>
- <p ng-bind-html="'CustomDimensions_HowToTrackManuallyViaJsDetails'|translate:'&lt;a target=_blank href=\'https://developer.piwik.org/guides/tracking-javascript-guide#custom-dimensions\'>':'&lt;/a>'">
- </p>
- <p>
- {{ 'CustomDimensions_HowToTrackManuallyViaPhp'|translate }}
- </p>
- <pre piwik-select-on-focus><code>$tracker->setCustomDimension('{{ editDimension.dimension.idcustomdimension }}', '{{ 'CustomDimensions_ExampleValue'|translate }}');</code></pre>
- <p>
- {{ 'CustomDimensions_HowToTrackManuallyViaHttp'|translate }}
- </p>
- <pre piwik-select-on-focus><code>&dimension{{ editDimension.dimension.idcustomdimension }}={{ 'CustomDimensions_ExampleValue'|translate }}</code></pre>
- </div>
- </div>
-
- </div>
-</div> \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/edit.directive.js b/plugins/CustomDimensions/angularjs/manage/edit.directive.js
deleted file mode 100644
index ceafc6fb75..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/edit.directive.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-custom-dimensions-edit>
- */
-(function () {
- angular.module('piwikApp').directive('piwikCustomDimensionsEdit', piwikCustomDimensionsEdit);
-
- piwikCustomDimensionsEdit.$inject = ['piwik'];
-
- function piwikCustomDimensionsEdit(piwik){
-
- return {
- restrict: 'A',
- scope: {
- dimensionId: '=',
- dimensionScope: '=',
- },
- templateUrl: 'plugins/CustomDimensions/angularjs/manage/edit.directive.html?cb=' + piwik.cacheBuster,
- controller: 'CustomDimensionsEditController',
- controllerAs: 'editDimension'
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/edit.directive.less b/plugins/CustomDimensions/angularjs/manage/edit.directive.less
deleted file mode 100644
index 515681d4ac..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/edit.directive.less
+++ /dev/null
@@ -1,25 +0,0 @@
-.editCustomDimension {
- .icon-plus, .icon-minus {
- cursor: pointer;
- font-size: 16px;
- padding-left: 10px;
- }
-
- .extraction {
- .form-group {
- margin-top: 8px;
- margin-bottom: 8px;
- }
- }
-
- .howToTrackInfo {
- margin-top: 32px;
- strong {
- margin-bottom: 16px;
- display: inline-block;
- }
- pre {
- margin-top: 0;
- }
- }
-} \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/list.controller.js b/plugins/CustomDimensions/angularjs/manage/list.controller.js
deleted file mode 100644
index c4ca6a9e78..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/list.controller.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('CustomDimensionsListController', CustomDimensionsListController);
-
- CustomDimensionsListController.$inject = ['customDimensionsModel', 'piwik'];
-
- function CustomDimensionsListController(customDimensionsModel, piwik) {
- customDimensionsModel.fetchCustomDimensionsConfiguration();
-
- this.siteName = piwik.siteName;
-
- this.model = customDimensionsModel;
- }
-})(); \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/list.directive.html b/plugins/CustomDimensions/angularjs/manage/list.directive.html
deleted file mode 100644
index 5e7637ea3d..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/list.directive.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<div>
- <div piwik-content-intro>
- <h2 piwik-enriched-headline>{{ 'CustomDimensions_CustomDimensions'|translate }}</h2>
-
- <p ng-bind-html="('CustomDimensions_CustomDimensionsIntro'|translate:'&lt;a target=_blank href=\'https://piwik.org/docs/custom-dimensions\'>':'&lt;/a>':dimensionsList.siteName) + ' ' + ('CustomDimensions_CustomDimensionsIntroNext'|translate:'&lt;a target=_blank href=\'https://piwik.org/docs/custom-variables\'>':'&lt;/a>':'&lt;a target=_blank href=\'https://piwik.org/faq/general/faq_21117\'>':'&lt;/a>') ">
- </p>
-
- <p ng-show="dimensionsList.model.isLoading">
- <span class="loadingPiwik"><img src="plugins/Morpheus/images/loading-blue.gif"/> {{ 'General_LoadingData'|translate }}</span>
- </p>
- </div>
-
- <div ng-repeat="scope in dimensionsList.model.availableScopes" ng-show="!dimensionsList.model.isLoading">
- <div piwik-content-block content-title="{{ scope.name }} Dimensions">
-
- <p>
- {{ 'CustomDimensions_ScopeDescription' + (scope.value|ucfirst) |translate }}
- {{ 'CustomDimensions_ScopeDescription' + (scope.value|ucfirst) + 'MoreInfo' |translate }}
- </p>
-
- <table piwik-content-table>
- <thead>
- <tr>
- <th class="index">{{ 'General_Id'|translate }}</th>
- <th class="name">{{ 'General_Name'|translate }}</th>
- <th class="extractions" ng-show="scope.supportsExtractions">{{ 'CustomDimensions_Extractions'|translate }}</th>
- <th class="active">{{ 'CorePluginsAdmin_Active'|translate }}</th>
- <th class="action">{{ 'General_Action'|translate }}</th>
- </tr>
- </thead>
- <tbody>
- <tr ng-show="scope.numSlotsUsed == 0 && !dimensionsList.model.isLoading">
- <td colspan="5">{{ 'CustomDimensions_NoCustomDimensionConfigured'|translate }}</td>
- </tr>
- <tr ng-repeat="customDimension in dimensionsList.model.customDimensions|filter:{scope: scope.value}|orderBy:'idcustomdimension.parseInt()'"
- class="customdimension" ng-class="customDimension.idcustomdimension">
- <td class="index">{{ customDimension.idcustomdimension }}</td>
- <td class="name">{{ customDimension.name }}</td>
- <td class="extractions" ng-show="scope.supportsExtractions"><span ng-class="{'icon-ok': customDimension.extractions[0].pattern}"></span></td>
- <td class="active"><span ng-class="{'icon-ok': customDimension.active}"></span></td>
- <td class="action"><a ng-href="#?idDimension={{ customDimension.idcustomdimension }}&scope={{ scope.value }}" class="table-action icon-edit" ng-click="addCustomVar"></a></td>
- </tr>
- </tbody>
- </table>
-
- <div class="tableActionBar">
- <a class="{{scope.value }}" ng-show="!dimensionsList.model.isLoading"
- value="" ng-href="#?idDimension=0&scope={{ scope.value }}" ng-class="{'disabled': !scope.numSlotsLeft}"
- ><span class="icon-add"></span> {{ 'CustomDimensions_ConfigureNewDimension'|translate }}
- <span class="info">({{ 'CustomDimensions_XofYLeft'|translate:scope.numSlotsLeft:scope.numSlotsAvailable }})</span></a>
- </div>
-
- </div>
- </div>
-</div>
diff --git a/plugins/CustomDimensions/angularjs/manage/list.directive.js b/plugins/CustomDimensions/angularjs/manage/list.directive.js
deleted file mode 100644
index c01eb0330e..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/list.directive.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-custom-dimensions-list>
- */
-(function () {
- angular.module('piwikApp').directive('piwikCustomDimensionsList', piwikCustomDimensionsList);
-
- piwikCustomDimensionsList.$inject = ['piwik'];
-
- function piwikCustomDimensionsList(piwik){
-
- return {
- restrict: 'A',
- scope: {},
- templateUrl: 'plugins/CustomDimensions/angularjs/manage/list.directive.html?cb=' + piwik.cacheBuster,
- controller: 'CustomDimensionsListController',
- controllerAs: 'dimensionsList'
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/manage.controller.js b/plugins/CustomDimensions/angularjs/manage/manage.controller.js
deleted file mode 100644
index 58ec4772d7..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/manage.controller.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('ManageCustomDimensionsController', ManageCustomDimensionsController);
-
- ManageCustomDimensionsController.$inject = ['$scope', '$rootScope', '$location', 'piwik'];
-
- function ManageCustomDimensionsController($scope, $rootScope, $location, piwik) {
-
- this.editMode = false;
-
- var self = this;
-
- function getValidDimensionScope(scope)
- {
- if (-1 !== ['action', 'visit'].indexOf(scope)) {
- return scope;
- }
-
- return '';
- }
-
- function initState() {
- // as we're not using angular router we have to handle it manually here
- var $search = $location.search();
- if ('idDimension' in $search) {
-
- var scope = getValidDimensionScope($search['scope']);
-
- if ($search.idDimension === 0 || $search.idDimension === '0') {
- var parameters = {isAllowed: true, scope: scope};
- $rootScope.$emit('CustomDimensions.initAddDimension', parameters);
- if (parameters && !parameters.isAllowed) {
- self.editMode = false;
- self.dimensionId = null;
- self.dimensionScope = '';
-
- return;
- }
- }
-
- self.editMode = true;
- self.dimensionId = parseInt($search['idDimension'], 10);
- self.dimensionScope = scope;
- } else {
- self.editMode = false;
- self.dimensionId = null;
- self.dimensionScope = '';
- }
-
- piwik.helper.lazyScrollToContent();
- }
-
- initState();
-
- var onChangeSuccess = $rootScope.$on('$locationChangeSuccess', initState);
-
- $scope.$on('$destroy', function() {
- if (onChangeSuccess) {
- onChangeSuccess();
- }
- });
- }
-})();
diff --git a/plugins/CustomDimensions/angularjs/manage/manage.directive.html b/plugins/CustomDimensions/angularjs/manage/manage.directive.html
deleted file mode 100644
index db1727e592..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/manage.directive.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<div class="manageCustomDimensions">
-
- <div ng-show="!manageDimensions.editMode">
- <div piwik-custom-dimensions-list></div>
-
- <div piwik-content-block content-title="{{ 'CustomDimensions_IncreaseAvailableCustomDimensionsTitle'|translate }}" id="customDimensionsCreateMoreDimensions">
-
- <p>
- {{ 'CustomDimensions_IncreaseAvailableCustomDimensionsTakesLong'|translate }}
- <br><br>{{ 'CustomDimensions_HowToCreateCustomDimension'|translate }}
- <br><br>
- </p>
- <pre piwik-select-on-focus><code>./console customdimensions:add-custom-dimension --scope=action
-./console customdimensions:add-custom-dimension --scope=visit</code></pre>
- <p>
- {{ 'CustomDimensions_HowToManyCreateCustomDimensions'|translate }}
-
- {{ 'CustomDimensions_ExampleCreateCustomDimensions'|translate:5 }}
- </p>
- <pre piwik-select-on-focus><code>./console customdimensions:add-custom-dimension --scope=action --count=5</code></pre>
-
- </div>
-
- </div>
- <div ng-show="manageDimensions.editMode">
- <div piwik-custom-dimensions-edit
- dimension-id="manageDimensions.dimensionId"
- dimension-scope="manageDimensions.dimensionScope"></div>
- </div>
-</div>
diff --git a/plugins/CustomDimensions/angularjs/manage/manage.directive.js b/plugins/CustomDimensions/angularjs/manage/manage.directive.js
deleted file mode 100644
index d9c937cb1c..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/manage.directive.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-custom-dimensions-manage>
- */
-(function () {
- angular.module('piwikApp').directive('piwikCustomDimensionsManage', piwikManageCustomDimensions);
-
- piwikManageCustomDimensions.$inject = ['piwik'];
-
- function piwikManageCustomDimensions(piwik){
-
- return {
- restrict: 'A',
- scope: {},
- templateUrl: 'plugins/CustomDimensions/angularjs/manage/manage.directive.html?cb=' + piwik.cacheBuster,
- controller: 'ManageCustomDimensionsController',
- controllerAs: 'manageDimensions'
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/CustomDimensions/angularjs/manage/model.js b/plugins/CustomDimensions/angularjs/manage/model.js
deleted file mode 100644
index f2318e1dfc..0000000000
--- a/plugins/CustomDimensions/angularjs/manage/model.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').factory('customDimensionsModel', customDimensionsModel);
-
- customDimensionsModel.$inject = ['piwikApi', '$q'];
-
- function customDimensionsModel(piwikApi, $q) {
- var fetchAllPromise;
-
- var model = {
- customDimensions : [],
- availableScopes: [],
- extractionDimensions: [],
- isLoading: false,
- isUpdating: false,
- fetchCustomDimensionsConfiguration: fetchCustomDimensionsConfiguration,
- findCustomDimension: findCustomDimension,
- createOrUpdateDimension: createOrUpdateDimension,
- reload: reload
- };
-
- return model;
-
- function reload()
- {
- model.customDimensions = [];
- model.availableScopes = [];
- model.extractionDimensions = [];
- fetchAllPromise = null;
- fetchCustomDimensionsConfiguration();
- }
-
- function fetchCustomDimensionsConfiguration() {
- if (fetchAllPromise) {
- return fetchAllPromise;
- }
-
- model.isLoading = true;
-
- var deferred = $q.defer();
- // .fetch does not return a proper promise
- piwikApi.fetch({method: 'CustomDimensions.getConfiguredCustomDimensions', filter_limit: '-1'}).then(function (customDimensions) {
- model.customDimensions = customDimensions;
- deferred.resolve(customDimensions);
- });
-
- fetchAllPromise = $q.all([deferred.promise, fetchAvailableScopes(), fetchAvailableExtractionDimensions()]).then(function () {
- model.isLoading = false;
-
- return model.customDimensions;
- });
-
- return fetchAllPromise;
- }
-
- function fetchAvailableExtractionDimensions() {
- var deferred = $q.defer();
- // .fetch does not return a proper promise
- piwikApi.fetch({method: 'CustomDimensions.getAvailableExtractionDimensions', filter_limit: '-1'}).then(function (availableExtractionDimensions) {
-
- model.extractionDimensions = [];
- angular.forEach(availableExtractionDimensions, function (value) {
- model.extractionDimensions.push({key: value.value, value: value.name});
- });
- deferred.resolve(availableExtractionDimensions);
- });
-
- return deferred.promise;
- }
-
- function fetchAvailableScopes() {
- var deferred = $q.defer();
-
- // .fetch does not return a proper promise
- piwikApi.fetch({method: 'CustomDimensions.getAvailableScopes', filter_limit: '-1'}).then(function (availableScopes) {
- model.availableScopes = availableScopes;
- deferred.resolve(availableScopes);
- });
-
- return deferred.promise;
- }
-
- function findCustomDimension(customDimensionId) {
- return fetchCustomDimensionsConfiguration().then(function (customDimensions) {
- var found;
- angular.forEach(customDimensions, function (dimension) {
- if (parseInt(dimension.idcustomdimension, 10) === customDimensionId) {
- found = dimension;
- }
- });
-
- return found;
- });
- }
-
- function createOrUpdateDimension(dimension, method) {
- dimension = angular.copy(dimension);
- dimension.active = dimension.active ? '1' : '0';
- dimension.method = method;
- var extractions = dimension.extractions;
- delete dimension.extractions;
-
- dimension.caseSensitive = dimension.case_sensitive ? '1' : '0';
- delete dimension.case_sensitive;
-
- model.isUpdating = true;
-
- return piwikApi.post(dimension, {extractions: extractions}).then(function (response) {
- model.isUpdating = false;
-
- return {type: 'success'};
-
- }, function (error) {
- model.isUpdating = false;
- return {type: 'error', message: error};
- });
- }
- }
-})(); \ No newline at end of file
diff --git a/plugins/CustomDimensions/lang/en.json b/plugins/CustomDimensions/lang/en.json
index 72822366d2..5848fdaa0c 100644
--- a/plugins/CustomDimensions/lang/en.json
+++ b/plugins/CustomDimensions/lang/en.json
@@ -39,6 +39,7 @@
"ScopeDescriptionActionMoreInfo": "Extractions may be defined so that the custom dimension value is extracted from the Page URL, Page Title or a Page URL query parameter.",
"ScopeDescriptionVisit": "Custom Dimensions in scope 'Visit' can be sent along any tracking request and are stored in the visit.",
"ScopeDescriptionVisitMoreInfo": "If you set different values for a given dimension during the lifetime of a visit, the last value set will be used.",
- "XofYLeft": "%1$s of %2$s dimensions left"
+ "XofYLeft": "%1$s of %2$s dimensions left",
+ "UrlQueryStringParameter": "url query string parameter"
}
}
diff --git a/plugins/CustomDimensions/lang/nb.json b/plugins/CustomDimensions/lang/nb.json
index 72b3ddb3f3..ad5bf35b06 100644
--- a/plugins/CustomDimensions/lang/nb.json
+++ b/plugins/CustomDimensions/lang/nb.json
@@ -34,6 +34,7 @@
"NoCustomDimensionConfigured": "Ingen tilpassede dimensjoner er konfigurert ennå. Konfigurer en nå.",
"NoValue": "ingen verdi",
"PageUrlParam": "Side-URL-parameter",
+ "PluginDescription": "Utvid Matomo til dine behov ved å definere å spore egendefinerte dimensjoner innenfor rammen «handling» eller «Besøk»",
"ScopeDescriptionAction": "Tilpassede dimensjoner av typen «handling» kan sendes sammen med alle handlinger (sidevisning, nedlasting, hendelse, etc.).",
"ScopeDescriptionActionMoreInfo": "Uttrekk kan defineres slik at verdien til den tilpassede dimensjonen hentes ut fra side-URL, sidetittel eller et spørreparameter i URL-en.",
"ScopeDescriptionVisit": "Tilpassede dimensjoner av typen «Besøk» kan sendes sammen med alle sporingsspørringer og lagres i besøket.",
diff --git a/plugins/CustomDimensions/templates/manage.twig b/plugins/CustomDimensions/templates/manage.twig
index 9628665a50..88ba094678 100644
--- a/plugins/CustomDimensions/templates/manage.twig
+++ b/plugins/CustomDimensions/templates/manage.twig
@@ -7,5 +7,5 @@
{% endblock %}
{% block content %}
- <div piwik-custom-dimensions-manage>
+ <div piwik-custom-dimensions-manage></div>
{% endblock %} \ No newline at end of file
diff --git a/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php b/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php
index 0da15e9f16..27673a4482 100644
--- a/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php
+++ b/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php
@@ -12,7 +12,6 @@ use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor as Processor;
-use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\ActionPageview;
diff --git a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
index df97006206..1d297bc968 100644
--- a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
+++ b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<uniqueId>General_Actions.customdimension3</uniqueId>
@@ -7,13 +7,13 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>customdimension3</id>
<name>MyName3</name>
<order>72</order>
- <help/>
+ <help />
</subcategory>
<widgets>
<row>
@@ -40,13 +40,13 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>customdimension5</id>
<name>MyName5</name>
<order>73</order>
- <help/>
+ <help />
</subcategory>
<widgets>
<row>
@@ -73,7 +73,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>VisitorInterest_Engagement</id>
@@ -179,13 +179,13 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Transitions_Transitions</id>
<name>Transitions</name>
<order>46</order>
- <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -209,7 +209,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>General_Downloads</id>
@@ -241,7 +241,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Actions_SubmenuPagesEntry</id>
@@ -287,7 +287,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Actions_SubmenuPagesExit</id>
@@ -333,7 +333,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>General_Outlinks</id>
@@ -365,7 +365,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Actions_SubmenuPageTitles</id>
@@ -397,7 +397,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>General_Pages</id>
@@ -429,13 +429,13 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can&#x2019;t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -517,17 +517,17 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
- <name/>
+ <name />
<module>CoreHome</module>
<action>renderWidgetContainer</action>
<order>99</order>
@@ -547,14 +547,14 @@
<id>General_Actions</id>
<name>Actions</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>Events_Events</id>
<name>Events</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>Events</module>
<action>getCategory</action>
@@ -575,14 +575,14 @@
<id>General_Actions</id>
<name>Actions</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>Events_Events</id>
<name>Events</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>Events</module>
<action>getAction</action>
@@ -603,14 +603,14 @@
<id>General_Actions</id>
<name>Actions</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>Events_Events</id>
<name>Events</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>Events</module>
<action>getName</action>
@@ -636,17 +636,17 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
- <name/>
+ <name />
<module>CoreHome</module>
<action>renderWidgetContainer</action>
<order>99</order>
@@ -666,14 +666,14 @@
<id>General_Actions</id>
<name>Actions</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>Contents_Contents</id>
<name>Contents</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>Contents</module>
<action>getContentNames</action>
@@ -693,14 +693,14 @@
<id>General_Actions</id>
<name>Actions</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>Contents_Contents</id>
<name>Contents</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>Contents</module>
<action>getContentPieces</action>
@@ -725,7 +725,7 @@
<name>Behaviour</name>
<order>10</order>
<icon>icon-reporting-actions</icon>
- <help/>
+ <help />
</category>
<subcategory>
<id>PagePerformance_Performance</id>
@@ -751,7 +751,7 @@
<isReport>1</isReport>
</row>
<row>
- <name/>
+ <name />
<module>PagePerformance</module>
<action>get</action>
<order>2</order>
@@ -809,13 +809,13 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>customdimension1</id>
<name>MyName1</name>
<order>70</order>
- <help/>
+ <help />
</subcategory>
<widgets>
<row>
@@ -842,13 +842,13 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>customdimension2</id>
<name>MyName2</name>
<order>71</order>
- <help/>
+ <help />
</subcategory>
<widgets>
<row>
@@ -875,13 +875,13 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>customdimension6</id>
<name>MyName6</name>
<order>74</order>
- <help/>
+ <help />
</subcategory>
<widgets>
<row>
@@ -908,7 +908,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>DevicesDetection_Devices</id>
@@ -982,7 +982,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>DevicesDetection_Software</id>
@@ -1098,7 +1098,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>General_Overview</id>
@@ -1148,7 +1148,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>UserCountry_SubmenuLocations</id>
@@ -1184,7 +1184,7 @@
<isReport>1</isReport>
</row>
<row>
- <name/>
+ <name />
<module>CoreHome</module>
<action>renderWidgetContainer</action>
<order>106</order>
@@ -1195,7 +1195,7 @@
</parameters>
<uniqueId>widgetContinent</uniqueId>
<isWide>0</isWide>
- <layout/>
+ <layout />
<isContainer>1</isContainer>
<widgets>
<row>
@@ -1204,14 +1204,14 @@
<id>General_Visitors</id>
<name>Visitors</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>UserCountry_SubmenuLocations</id>
<name>Locations</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>UserCountry</module>
<action>getContinent</action>
@@ -1226,19 +1226,19 @@
<isReport>1</isReport>
</row>
<row>
- <name/>
+ <name />
<category>
<id>General_Visitors</id>
<name>Visitors</name>
<order>99</order>
- <icon/>
- <help/>
+ <icon />
+ <help />
</category>
<subcategory>
<id>UserCountry_SubmenuLocations</id>
<name>Locations</name>
<order>99</order>
- <help/>
+ <help />
</subcategory>
<module>UserCountry</module>
<action>getDistinctCountries</action>
@@ -1319,7 +1319,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>VisitTime_SubmenuTimes</id>
@@ -1379,7 +1379,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>UserCountryMap_RealTimeMap</id>
@@ -1409,7 +1409,7 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>General_RealTime</id>
@@ -1439,13 +1439,13 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>Live_VisitorLog</id>
<name>Visits Log</name>
<order>5</order>
- <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" target="_blank" rel="noreferrer noopener"&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1474,13 +1474,13 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>UserId_UserReportTitle</id>
<name>User IDs</name>
<order>40</order>
- <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="noopener noreferrer" href="https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides"&gt;&lt;span class="icon-info"&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1506,13 +1506,13 @@
<name>Visitors</name>
<order>5</order>
<icon>icon-reporting-visitors</icon>
- <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')"&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
</category>
<subcategory>
<id>CustomVariables_CustomVariables</id>
<name>Custom Variables</name>
<order>45</order>
- <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/custom-variables/" rel="noreferrer noopener" target="_blank"&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/custom-variables/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1531,4 +1531,4 @@
</row>
</widgets>
</row>
-</result>
+</result> \ No newline at end of file
diff --git a/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js
new file mode 100644
index 0000000000..869d8036b6
--- /dev/null
+++ b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js
@@ -0,0 +1,1089 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
+ else if(typeof exports === 'object')
+ exports["CustomDimensions"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["CustomDimensions"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/CustomDimensions/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "CustomDimensionsStore", function() { return /* reexport */ CustomDimensions_store; });
+__webpack_require__.d(__webpack_exports__, "Edit", function() { return /* reexport */ Edit; });
+__webpack_require__.d(__webpack_exports__, "List", function() { return /* reexport */ List; });
+__webpack_require__.d(__webpack_exports__, "Manage", function() { return /* reexport */ Manage; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=template&id=0836097a
+
+var _hoisted_1 = {
+ class: "editCustomDimension"
+};
+var _hoisted_2 = {
+ class: "loadingPiwik"
+};
+
+var _hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ src: "plugins/Morpheus/images/loading-blue.gif"
+}, null, -1);
+
+var _hoisted_4 = {
+ class: "row form-group"
+};
+var _hoisted_5 = {
+ class: "col s12"
+};
+var _hoisted_6 = {
+ class: "col s12 m6"
+};
+var _hoisted_7 = {
+ class: "row"
+};
+var _hoisted_8 = {
+ class: "col s12 m6"
+};
+var _hoisted_9 = {
+ class: "col s12 m6"
+};
+var _hoisted_10 = {
+ class: "col s12"
+};
+var _hoisted_11 = ["onClick"];
+var _hoisted_12 = {
+ class: "row"
+};
+var _hoisted_13 = {
+ class: "col s12"
+};
+var _hoisted_14 = {
+ class: "col s12 m6 form-help"
+};
+var _hoisted_15 = ["value", "disabled"];
+var _hoisted_16 = ["value", "disabled"];
+var _hoisted_17 = {
+ class: "btn cancel",
+ type: "button",
+ href: "#list"
+};
+var _hoisted_18 = {
+ class: "alert alert-info howToTrackInfo"
+};
+var _hoisted_19 = ["innerHTML"];
+var _hoisted_20 = ["innerHTML"];
+var _hoisted_21 = ["innerHTML"];
+var _hoisted_22 = ["innerHTML"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ var _directive_select_on_focus = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("select-on-focus");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.contentTitleText
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ var _ctx$dimension$extrac;
+
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_2, [_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_LoadingData')), 1)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isLoading || _ctx.isUpdating]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", {
+ onSubmit: _cache[4] || (_cache[4] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.edit ? _ctx.updateCustomDimension() : _ctx.createCustomDimension();
+ }, ["prevent"]))
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "name",
+ modelValue: _ctx.dimension.name,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.dimension.name = $event;
+ }),
+ maxlength: 255,
+ required: true,
+ title: _ctx.translate('General_Name'),
+ "inline-help": _ctx.translate('CustomDimensions_NameAllowedCharacters')
+ }, null, 8, ["modelValue", "title", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "active",
+ modelValue: _ctx.dimension.active,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.dimension.active = $event;
+ }),
+ title: _ctx.translate('CorePluginsAdmin_Active'),
+ "inline-help": _ctx.translate('CustomDimensions_CannotBeDeleted')
+ }, null, 8, ["modelValue", "title", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_ExtractValue')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.dimension.extractions, function (extraction, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])("".concat(index, "extraction ")),
+ key: index
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "".concat(index, "dimension"),
+ modelValue: extraction.dimension,
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ return extraction.dimension = $event;
+ },
+ "full-width": true,
+ options: _ctx.extractionDimensionsOptions
+ }, null, 8, ["name", "modelValue", "onUpdate:modelValue", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "".concat(index, "pattern"),
+ modelValue: extraction.pattern,
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ return extraction.pattern = $event;
+ },
+ "full-width": true,
+ title: extraction.dimension === 'urlparam' ? _ctx.translate('CustomDimensions_UrlQueryStringParameter') : 'eg. /blog/(.*)/'
+ }, null, 8, ["name", "modelValue", "onUpdate:modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-plus",
+ onClick: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.addExtraction();
+ })
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], extraction.pattern]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-minus",
+ onClick: function onClick($event) {
+ return _ctx.removeExtraction(index);
+ }
+ }, null, 8, _hoisted_11), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.dimension.extractions.length > 1]])])])], 2);
+ }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "casesensitive",
+ modelValue: _ctx.dimension.case_sensitive,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.dimension.case_sensitive = $event;
+ }),
+ title: _ctx.translate('Goals_CaseSensitive')
+ }, null, 8, ["modelValue", "title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], (_ctx$dimension$extrac = _ctx.dimension.extractions[0]) === null || _ctx$dimension$extrac === void 0 ? void 0 : _ctx$dimension$extrac.pattern]])])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_ExtractionsHelp')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.doesScopeSupportExtraction]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "btn update",
+ type: "submit",
+ value: _ctx.translate('General_Update'),
+ disabled: _ctx.isUpdating,
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 8, _hoisted_15), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.edit]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "btn create",
+ type: "submit",
+ value: _ctx.translate('General_Create'),
+ disabled: _ctx.isUpdating,
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 8, _hoisted_16), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.create]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)], 32), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyTitle')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyViaJs')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
+ innerHTML: _ctx.manuallyTrackCodeViaJs(_ctx.dimension)
+ }, null, 8, _hoisted_19)], 512), [[_directive_select_on_focus, {}]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.howToTrackManuallyText)
+ }, null, 8, _hoisted_20), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyViaPhp')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
+ innerHTML: _ctx.manuallyTrackCodeViaPhp(_ctx.dimension)
+ }, null, 8, _hoisted_21)], 512), [[_directive_select_on_focus, {}]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyViaHttp')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
+ innerHTML: _ctx.manuallyTrackCode
+ }, null, 8, _hoisted_22)], 512), [[_directive_select_on_focus, {}]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.edit]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isLoading]])];
+ }),
+ _: 1
+ }, 8, ["content-title"])]);
+}
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=template&id=0836097a
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/CustomDimensions.store.ts
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+var CustomDimensions_store_CustomDimensionsStore = /*#__PURE__*/function () {
+ function CustomDimensionsStore() {
+ var _this = this;
+
+ _classCallCheck(this, CustomDimensionsStore);
+
+ _defineProperty(this, "privateState", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["reactive"])({
+ customDimensions: [],
+ availableScopes: [],
+ extractionDimensions: [],
+ isLoading: false,
+ isUpdating: false
+ }));
+
+ _defineProperty(this, "state", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.privateState);
+ }));
+
+ _defineProperty(this, "isLoading", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.isLoading;
+ }));
+
+ _defineProperty(this, "isUpdating", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.isUpdating;
+ }));
+
+ _defineProperty(this, "extractionDimensions", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.extractionDimensions;
+ }));
+
+ _defineProperty(this, "extractionDimensionsOptions", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.extractionDimensions.value.map(function (e) {
+ return {
+ key: e.value,
+ value: e.name
+ };
+ });
+ }));
+
+ _defineProperty(this, "availableScopes", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.availableScopes;
+ }));
+
+ _defineProperty(this, "customDimensions", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.customDimensions;
+ }));
+
+ _defineProperty(this, "customDimensionsById", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var dimensionsById = {};
+
+ _this.customDimensions.value.forEach(function (c) {
+ dimensionsById["".concat(c.idcustomdimension)] = c;
+ });
+
+ return dimensionsById;
+ }));
+
+ _defineProperty(this, "reloadPromise", null);
+ }
+
+ _createClass(CustomDimensionsStore, [{
+ key: "reload",
+ value: function reload() {
+ this.privateState.customDimensions = [];
+ this.privateState.availableScopes = [];
+ this.privateState.extractionDimensions = [];
+ this.reloadPromise = null;
+ return this.fetch();
+ }
+ }, {
+ key: "fetch",
+ value: function fetch() {
+ var _this2 = this;
+
+ if (this.reloadPromise) {
+ return this.reloadPromise;
+ }
+
+ this.privateState.isLoading = true;
+ this.reloadPromise = Promise.all([this.fetchConfiguredCustomDimensions(), this.fetchAvailableExtractionDimensions(), this.fetchAvailableScopes()]).finally(function () {
+ _this2.privateState.isLoading = false;
+ });
+ return this.reloadPromise;
+ }
+ }, {
+ key: "fetchConfiguredCustomDimensions",
+ value: function fetchConfiguredCustomDimensions() {
+ var _this3 = this;
+
+ return external_CoreHome_["AjaxHelper"].fetch({
+ method: 'CustomDimensions.getConfiguredCustomDimensions',
+ filter_limit: '-1'
+ }).then(function (r) {
+ _this3.privateState.customDimensions = r;
+ });
+ }
+ }, {
+ key: "fetchAvailableExtractionDimensions",
+ value: function fetchAvailableExtractionDimensions() {
+ var _this4 = this;
+
+ return external_CoreHome_["AjaxHelper"].fetch({
+ method: 'CustomDimensions.getAvailableExtractionDimensions',
+ filter_limit: '-1'
+ }).then(function (r) {
+ _this4.privateState.extractionDimensions = r;
+ });
+ }
+ }, {
+ key: "fetchAvailableScopes",
+ value: function fetchAvailableScopes() {
+ var _this5 = this;
+
+ return external_CoreHome_["AjaxHelper"].fetch({
+ method: 'CustomDimensions.getAvailableScopes',
+ filter_limit: '-1'
+ }).then(function (r) {
+ _this5.privateState.availableScopes = r;
+ });
+ }
+ }, {
+ key: "createOrUpdateDimension",
+ value: function createOrUpdateDimension(dimension, method) {
+ var _this6 = this;
+
+ this.privateState.isUpdating = true;
+ return external_CoreHome_["AjaxHelper"].post({
+ method: method,
+ scope: dimension.scope,
+ idDimension: dimension.idcustomdimension,
+ idSite: dimension.idsite,
+ name: dimension.name,
+ active: dimension.active ? '1' : '0',
+ caseSensitive: dimension.case_sensitive ? '1' : '0'
+ }, {
+ extractions: dimension.extractions
+ }).finally(function () {
+ _this6.privateState.isUpdating = false;
+ });
+ }
+ }]);
+
+ return CustomDimensionsStore;
+}();
+
+/* harmony default export */ var CustomDimensions_store = (new CustomDimensions_store_CustomDimensionsStore());
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/utilities.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function utilities_ucfirst(s) {
+ return "".concat(s[0].toUpperCase()).concat(s.substr(1));
+}
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=script&lang=ts
+
+
+
+
+
+var notificationId = 'customdimensions';
+/* harmony default export */ var Editvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ dimensionId: Number,
+ dimensionScope: {
+ type: String,
+ required: true
+ }
+ },
+ components: {
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ directives: {
+ SelectOnFocus: external_CoreHome_["SelectOnFocus"]
+ },
+ data: function data() {
+ return {
+ dimension: {
+ extractions: []
+ },
+ isUpdatingDim: false
+ };
+ },
+ created: function created() {
+ this.init();
+ },
+ watch: {
+ dimensionId: function dimensionId() {
+ this.init();
+ }
+ },
+ methods: {
+ removeAnyCustomDimensionNotification: function removeAnyCustomDimensionNotification() {
+ external_CoreHome_["NotificationsStore"].remove(notificationId);
+ },
+ showNotification: function showNotification(message, context) {
+ external_CoreHome_["NotificationsStore"].show({
+ message: message,
+ context: context,
+ id: notificationId,
+ type: 'transient'
+ });
+ },
+ init: function init() {
+ var _this = this;
+
+ if (this.dimensionId !== null) {
+ this.removeAnyCustomDimensionNotification();
+ }
+
+ CustomDimensions_store.fetch().then(function () {
+ if (_this.edit && _this.dimensionId) {
+ _this.dimension = Object(external_CoreHome_["clone"])(CustomDimensions_store.customDimensionsById.value[_this.dimensionId]);
+
+ if (_this.dimension && !_this.dimension.extractions.length) {
+ _this.addExtraction();
+ }
+ } else if (_this.create) {
+ _this.dimension = {
+ idsite: external_CoreHome_["Matomo"].idSite,
+ name: '',
+ active: false,
+ extractions: [],
+ scope: _this.dimensionScope,
+ case_sensitive: true
+ };
+
+ _this.addExtraction();
+ }
+ });
+ },
+ removeExtraction: function removeExtraction(index) {
+ if (index > -1) {
+ this.dimension.extractions.splice(index, 1);
+ }
+ },
+ addExtraction: function addExtraction() {
+ if (this.doesScopeSupportExtraction) {
+ this.dimension.extractions.push({
+ dimension: 'url',
+ pattern: ''
+ });
+ }
+ },
+ createCustomDimension: function createCustomDimension() {
+ var _this2 = this;
+
+ this.isUpdatingDim = true;
+ CustomDimensions_store.createOrUpdateDimension(this.dimension, 'CustomDimensions.configureNewCustomDimension').then(function () {
+ _this2.showNotification(Object(external_CoreHome_["translate"])('CustomDimensions_DimensionCreated'), 'success');
+
+ console.log('before reload');
+ CustomDimensions_store.reload();
+ external_CoreHome_["MatomoUrl"].updateHashToUrl('/list');
+ }).finally(function () {
+ _this2.isUpdatingDim = false;
+ });
+ },
+ updateCustomDimension: function updateCustomDimension() {
+ var _this3 = this;
+
+ this.isUpdatingDim = true;
+ CustomDimensions_store.createOrUpdateDimension(this.dimension, 'CustomDimensions.configureExistingCustomDimension').then(function () {
+ _this3.showNotification(Object(external_CoreHome_["translate"])('CustomDimensions_DimensionUpdated'), 'success');
+
+ CustomDimensions_store.reload();
+ external_CoreHome_["MatomoUrl"].updateHashToUrl('/list');
+ }).finally(function () {
+ _this3.isUpdatingDim = false;
+ });
+ },
+ manuallyTrackCodeViaJs: function manuallyTrackCodeViaJs(dimension) {
+ return "_paq.push(['setCustomDimension', ".concat(dimension.idcustomdimension, ", ") + "'".concat(Object(external_CoreHome_["translate"])('CustomDimensions_ExampleValue'), "']);");
+ },
+ manuallyTrackCodeViaPhp: function manuallyTrackCodeViaPhp(dimension) {
+ return "$tracker->setCustomDimension('".concat(dimension.idcustomdimension, "', ") + "'".concat(Object(external_CoreHome_["translate"])('CustomDimensions_ExampleValue'), "');");
+ }
+ },
+ computed: {
+ isLoading: function isLoading() {
+ return CustomDimensions_store.isLoading.value;
+ },
+ isUpdating: function isUpdating() {
+ return CustomDimensions_store.isUpdating.value || this.isUpdatingDim;
+ },
+ create: function create() {
+ return this.dimensionId === 0;
+ },
+ edit: function edit() {
+ return !this.create;
+ },
+ extractionDimensionsOptions: function extractionDimensionsOptions() {
+ return CustomDimensions_store.extractionDimensionsOptions.value;
+ },
+ availableScopes: function availableScopes() {
+ return CustomDimensions_store.availableScopes.value;
+ },
+ doesScopeSupportExtraction: function doesScopeSupportExtraction() {
+ var _this$dimension,
+ _this4 = this;
+
+ if (!((_this$dimension = this.dimension) !== null && _this$dimension !== void 0 && _this$dimension.scope) || !this.availableScopes) {
+ return false;
+ }
+
+ var dimensionScope = this.availableScopes.find(function (scope) {
+ return scope.value === _this4.dimension.scope;
+ });
+ return dimensionScope === null || dimensionScope === void 0 ? void 0 : dimensionScope.supportsExtractions;
+ },
+ contentTitleText: function contentTitleText() {
+ var _this$dimension2;
+
+ return Object(external_CoreHome_["translate"])('CustomDimensions_ConfigureDimension', utilities_ucfirst(this.dimensionScope), "".concat(((_this$dimension2 = this.dimension) === null || _this$dimension2 === void 0 ? void 0 : _this$dimension2.index) || ''));
+ },
+ howToTrackManuallyText: function howToTrackManuallyText() {
+ var link = 'https://developer.piwik.org/guides/tracking-javascript-guide#custom-dimensions';
+ return Object(external_CoreHome_["translate"])('CustomDimensions_HowToTrackManuallyViaJsDetails', "<a target=_blank href=\"".concat(link, "\" rel=\"noreferrer noopener\">"), '</a>');
+ },
+ manuallyTrackCode: function manuallyTrackCode() {
+ var exampleValue = Object(external_CoreHome_["translate"])('CustomDimensions_ExampleValue');
+ return "&dimension".concat(this.dimension.idcustomdimension, "=").concat(exampleValue);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Edit/Edit.vue
+
+
+
+Editvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var Edit = (Editvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Edit/Edit.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var Edit_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: Edit,
+ scope: {
+ dimensionId: {
+ angularJsBind: '=',
+ transform: external_CoreHome_["transformAngularJsIntAttr"]
+ },
+ dimensionScope: {
+ angularJsBind: '='
+ }
+ },
+ directiveName: 'piwikCustomDimensionsEdit'
+}));
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/List/List.vue?vue&type=template&id=0432737c
+
+var Listvue_type_template_id_0432737c_hoisted_1 = ["innerHTML"];
+var Listvue_type_template_id_0432737c_hoisted_2 = {
+ class: "loadingPiwik"
+};
+
+var Listvue_type_template_id_0432737c_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ src: "plugins/Morpheus/images/loading-blue.gif"
+}, null, -1);
+
+var Listvue_type_template_id_0432737c_hoisted_4 = {
+ class: "index"
+};
+var Listvue_type_template_id_0432737c_hoisted_5 = {
+ class: "name"
+};
+var Listvue_type_template_id_0432737c_hoisted_6 = {
+ class: "active"
+};
+var Listvue_type_template_id_0432737c_hoisted_7 = {
+ class: "action"
+};
+var Listvue_type_template_id_0432737c_hoisted_8 = {
+ colspan: "5"
+};
+var Listvue_type_template_id_0432737c_hoisted_9 = {
+ class: "index"
+};
+var Listvue_type_template_id_0432737c_hoisted_10 = {
+ class: "name"
+};
+var Listvue_type_template_id_0432737c_hoisted_11 = {
+ class: "extractions"
+};
+var Listvue_type_template_id_0432737c_hoisted_12 = {
+ class: "active"
+};
+var Listvue_type_template_id_0432737c_hoisted_13 = {
+ class: "action"
+};
+var Listvue_type_template_id_0432737c_hoisted_14 = ["href"];
+var Listvue_type_template_id_0432737c_hoisted_15 = {
+ class: "tableActionBar"
+};
+var Listvue_type_template_id_0432737c_hoisted_16 = ["disabled", "onClick"];
+
+var Listvue_type_template_id_0432737c_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-add"
+}, null, -1);
+
+var Listvue_type_template_id_0432737c_hoisted_18 = {
+ class: "info"
+};
+function Listvue_type_template_id_0432737c_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_EnrichedHeadline = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("EnrichedHeadline");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ var _directive_content_intro = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-intro");
+
+ var _directive_content_table = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-table");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_EnrichedHeadline, null, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_CustomDimensions')), 1)];
+ }),
+ _: 1
+ })]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.contentIntroText)
+ }, null, 8, Listvue_type_template_id_0432737c_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", Listvue_type_template_id_0432737c_hoisted_2, [Listvue_type_template_id_0432737c_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_LoadingData')), 1)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isLoading]])], 512), [[_directive_content_intro]]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.availableScopes, function (scope) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ key: scope.value
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": "".concat(scope.name, " Dimensions")
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("CustomDimensions_ScopeDescription".concat(_ctx.ucfirst(scope.value)))) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("CustomDimensions_ScopeDescription".concat(_ctx.ucfirst(scope.value), "MoreInfo"))), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("table", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", Listvue_type_template_id_0432737c_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Id')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", Listvue_type_template_id_0432737c_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Name')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", {
+ class: "extractions"
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_Extractions')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], scope.supportsExtractions]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", Listvue_type_template_id_0432737c_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CorePluginsAdmin_Active')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", Listvue_type_template_id_0432737c_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Action')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Listvue_type_template_id_0432737c_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_NoCustomDimensionConfigured')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], scope.numSlotsUsed === 0 && !_ctx.isLoading]]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.sortedCustomDimensionsByScope[scope.value], function (customDimension) {
+ var _customDimension$extr;
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["customdimension", customDimension.idcustomdimension]),
+ key: customDimension.idcustomdimension
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Listvue_type_template_id_0432737c_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(customDimension.idcustomdimension), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Listvue_type_template_id_0432737c_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(customDimension.name), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Listvue_type_template_id_0432737c_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ 'icon-ok': (_customDimension$extr = customDimension.extractions[0]) === null || _customDimension$extr === void 0 ? void 0 : _customDimension$extr.pattern
+ })
+ }, null, 2)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], scope.supportsExtractions]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Listvue_type_template_id_0432737c_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ 'icon-ok': customDimension.active
+ })
+ }, null, 2)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Listvue_type_template_id_0432737c_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "table-action icon-edit",
+ href: "#?idDimension=".concat(customDimension.idcustomdimension, "&scope=").concat(scope.value)
+ }, null, 8, Listvue_type_template_id_0432737c_hoisted_14)])], 2);
+ }), 128))])], 512), [[_directive_content_table]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Listvue_type_template_id_0432737c_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ class: "btn",
+ disabled: !scope.numSlotsLeft,
+ onClick: function onClick($event) {
+ return _ctx.addDimension(scope.value);
+ }
+ }, [Listvue_type_template_id_0432737c_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_ConfigureNewDimension')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", Listvue_type_template_id_0432737c_hoisted_18, "(" + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_XofYLeft', scope.numSlotsLeft, scope.numSlotsAvailable)) + ")", 1)], 8, Listvue_type_template_id_0432737c_hoisted_16), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isLoading]])])];
+ }),
+ _: 2
+ }, 1032, ["content-title"])], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isLoading]]);
+ }), 128))]);
+}
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/List/List.vue?vue&type=template&id=0432737c
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/List/List.vue?vue&type=script&lang=ts
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+
+
+
+
+/* harmony default export */ var Listvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ name: 'listcustomdimensions',
+ components: {
+ EnrichedHeadline: external_CoreHome_["EnrichedHeadline"],
+ ContentBlock: external_CoreHome_["ContentBlock"]
+ },
+ directives: {
+ ContentIntro: external_CoreHome_["ContentIntro"],
+ ContentTable: external_CoreHome_["ContentTable"]
+ },
+ created: function created() {
+ CustomDimensions_store.fetch();
+ },
+ methods: {
+ ucfirst: function ucfirst(s) {
+ return utilities_ucfirst(s);
+ },
+ addDimension: function addDimension(scope) {
+ external_CoreHome_["MatomoUrl"].updateHashToUrl("/?idDimension=0&scope=".concat(scope));
+ }
+ },
+ computed: {
+ isLoading: function isLoading() {
+ return CustomDimensions_store.isLoading.value;
+ },
+ availableScopes: function availableScopes() {
+ return CustomDimensions_store.availableScopes.value;
+ },
+ contentIntroText: function contentIntroText() {
+ var firstPart = Object(external_CoreHome_["translate"])('CustomDimensions_CustomDimensionsIntroNext', '<a target=_blank href="https://piwik.org/docs/custom-variables">', '</a>', '<a target=_blank href="https://piwik.org/faq/general/faq_21117">', '</a>');
+ var secondPart = Object(external_CoreHome_["translate"])('CustomDimensions_CustomDimensionsIntro', '<a target=_blank href="https://piwik.org/docs/custom-dimensions">', '</a>', this.siteName);
+ return "".concat(firstPart).concat(secondPart);
+ },
+ customDimensions: function customDimensions() {
+ return CustomDimensions_store.customDimensions.value;
+ },
+ sortedCustomDimensions: function sortedCustomDimensions() {
+ var result = _toConsumableArray(this.customDimensions);
+
+ result.sort(function (lhs, rhs) {
+ var lhsId = parseInt("".concat(lhs.idcustomdimension), 10);
+ var rhsId = parseInt("".concat(rhs.idcustomdimension), 10);
+ return lhsId - rhsId;
+ });
+ return result;
+ },
+ sortedCustomDimensionsByScope: function sortedCustomDimensionsByScope() {
+ var result = {};
+ this.sortedCustomDimensions.reduce(function (acc, dim) {
+ acc[dim.scope] = acc[dim.scope] || [];
+ acc[dim.scope].push(dim);
+ return acc;
+ }, result);
+ return result;
+ },
+ siteName: function siteName() {
+ return external_CoreHome_["Matomo"].helper.htmlDecode(external_CoreHome_["Matomo"].siteName);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/List/List.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/List/List.vue
+
+
+
+Listvue_type_script_lang_ts.render = Listvue_type_template_id_0432737c_render
+
+/* harmony default export */ var List = (Listvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/List/List.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var List_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: List,
+ directiveName: 'piwikCustomDimensionsList'
+}));
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/Manage/Manage.vue?vue&type=template&id=7763a178
+
+var Managevue_type_template_id_7763a178_hoisted_1 = {
+ class: "manageCustomDimensions"
+};
+var Managevue_type_template_id_7763a178_hoisted_2 = {
+ key: 0
+};
+
+var Managevue_type_template_id_7763a178_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var Managevue_type_template_id_7763a178_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var Managevue_type_template_id_7763a178_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var Managevue_type_template_id_7763a178_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var Managevue_type_template_id_7763a178_hoisted_7 = ["textContent"];
+var Managevue_type_template_id_7763a178_hoisted_8 = ["textContent"];
+var Managevue_type_template_id_7763a178_hoisted_9 = {
+ key: 1
+};
+function Managevue_type_template_id_7763a178_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_CustomDimensionsList = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("CustomDimensionsList");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ var _component_CustomDimensionsEdit = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("CustomDimensionsEdit");
+
+ var _directive_select_on_focus = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("select-on-focus");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Managevue_type_template_id_7763a178_hoisted_1, [!_ctx.editMode ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Managevue_type_template_id_7763a178_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_CustomDimensionsList)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ id: "customDimensionsCreateMoreDimensions",
+ "content-title": _ctx.translate('CustomDimensions_IncreaseAvailableCustomDimensionsTitle')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_IncreaseAvailableCustomDimensionsTakesLong')) + " ", 1), Managevue_type_template_id_7763a178_hoisted_3, Managevue_type_template_id_7763a178_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToCreateCustomDimension')) + " ", 1), Managevue_type_template_id_7763a178_hoisted_5, Managevue_type_template_id_7763a178_hoisted_6]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
+ textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.addCustomDimCode)
+ }, null, 8, Managevue_type_template_id_7763a178_hoisted_7)], 512), [[_directive_select_on_focus, {}]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToManyCreateCustomDimensions')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_ExampleCreateCustomDimensions', 5)), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
+ textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.addMultipleCustomDimCode)
+ }, null, 8, Managevue_type_template_id_7763a178_hoisted_8)], 512), [[_directive_select_on_focus, {}]])];
+ }),
+ _: 1
+ }, 8, ["content-title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.editMode ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Managevue_type_template_id_7763a178_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_CustomDimensionsEdit, {
+ "dimension-id": _ctx.dimensionId,
+ "dimension-scope": _ctx.dimensionScope
+ }, null, 8, ["dimension-id", "dimension-scope"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]);
+}
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Manage/Manage.vue?vue&type=template&id=7763a178
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/Manage/Manage.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var Managevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ components: {
+ CustomDimensionsList: List,
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ CustomDimensionsEdit: Edit
+ },
+ directives: {
+ SelectOnFocus: external_CoreHome_["SelectOnFocus"]
+ },
+ data: function data() {
+ return {
+ editMode: false,
+ dimensionId: null,
+ dimensionScope: ''
+ };
+ },
+ created: function created() {
+ var _this = this;
+
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
+ return external_CoreHome_["MatomoUrl"].hashParsed.value;
+ }, function () {
+ _this.initState();
+ });
+ this.initState();
+ },
+ methods: {
+ getValidDimensionScope: function getValidDimensionScope(scope) {
+ if (['action', 'visit'].indexOf(scope) !== -1) {
+ return scope;
+ }
+
+ return '';
+ },
+ initState: function initState() {
+ // as we're not using angular router we have to handle it manually here
+ var idDimension = external_CoreHome_["MatomoUrl"].hashParsed.value.idDimension;
+
+ if (idDimension) {
+ var scope = this.getValidDimensionScope(external_CoreHome_["MatomoUrl"].hashParsed.value.scope);
+
+ if (idDimension === '0') {
+ var parameters = {
+ isAllowed: true,
+ scope: scope
+ };
+ external_CoreHome_["Matomo"].postEvent('CustomDimensions.initAddDimension', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ this.editMode = false;
+ this.dimensionId = null;
+ this.dimensionScope = '';
+ return;
+ }
+ }
+
+ this.editMode = true;
+ this.dimensionId = parseInt(idDimension, 10);
+ this.dimensionScope = scope;
+ } else {
+ this.editMode = false;
+ this.dimensionId = null;
+ this.dimensionScope = '';
+ }
+
+ external_CoreHome_["Matomo"].helper.lazyScrollToContent();
+ }
+ },
+ computed: {
+ addCustomDimCode: function addCustomDimCode() {
+ return './console customdimensions:add-custom-dimension --scope=action\n' + './console customdimensions:add-custom-dimension --scope=visit';
+ },
+ addMultipleCustomDimCode: function addMultipleCustomDimCode() {
+ return './console customdimensions:add-custom-dimension --scope=action --count=5';
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Manage/Manage.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Manage/Manage.vue
+
+
+
+Managevue_type_script_lang_ts.render = Managevue_type_template_id_7763a178_render
+
+/* harmony default export */ var Manage = (Managevue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Manage/Manage.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var Manage_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: Manage,
+ directiveName: 'piwikCustomDimensionsManage'
+}));
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+
+
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=CustomDimensions.umd.js.map \ No newline at end of file
diff --git a/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js
new file mode 100644
index 0000000000..3bbd93394c
--- /dev/null
+++ b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js
@@ -0,0 +1,33 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CustomDimensions"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CustomDimensions"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CustomDimensions/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CustomDimensionsStore",(function(){return B})),n.d(t,"Edit",(function(){return P})),n.d(t,"List",(function(){return pe})),n.d(t,"Manage",(function(){return Se})),"undefined"!==typeof window){var i=window.document.currentScript,o=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var s=n("19dc"),a=n("8bbf"),c={class:"editCustomDimension"},r={class:"loadingPiwik"},l=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),u={class:"row form-group"},m={class:"col s12"},d={class:"col s12 m6"},p={class:"row"},b={class:"col s12 m6"},f={class:"col s12 m6"},v={class:"col s12"},O=["onClick"],j={class:"row"},h={class:"col s12"},D={class:"col s12 m6 form-help"},C=["value","disabled"],g=["value","disabled"],V={class:"btn cancel",type:"button",href:"#list"},E={class:"alert alert-info howToTrackInfo"},S=["innerHTML"],N=["innerHTML"],y=["innerHTML"],x=["innerHTML"];function w(e,t,n,i,o,s){var w=Object(a["resolveComponent"])("Field"),k=Object(a["resolveComponent"])("ContentBlock"),_=Object(a["resolveDirective"])("select-on-focus");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(k,{"content-title":e.contentTitleText},{default:Object(a["withCtx"])((function(){var n;return[Object(a["withDirectives"])(Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("span",r,[l,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512),[[a["vShow"],e.isLoading||e.isUpdating]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("form",{onSubmit:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.edit?e.updateCustomDimension():e.createCustomDimension()}),["prevent"]))},[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"text",name:"name",modelValue:e.dimension.name,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.dimension.name=t}),maxlength:255,required:!0,title:e.translate("General_Name"),"inline-help":e.translate("CustomDimensions_NameAllowedCharacters")},null,8,["modelValue","title","inline-help"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"checkbox",name:"active",modelValue:e.dimension.active,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.dimension.active=t}),title:e.translate("CorePluginsAdmin_Active"),"inline-help":e.translate("CustomDimensions_CannotBeDeleted")},null,8,["modelValue","title","inline-help"])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",u,[Object(a["createElementVNode"])("h3",m,Object(a["toDisplayString"])(e.translate("CustomDimensions_ExtractValue")),1),Object(a["createElementVNode"])("div",d,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.dimension.extractions,(function(n,i){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])("".concat(i,"extraction ")),key:i},[Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("div",b,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"select",name:"".concat(i,"dimension"),modelValue:n.dimension,"onUpdate:modelValue":function(e){return n.dimension=e},"full-width":!0,options:e.extractionDimensionsOptions},null,8,["name","modelValue","onUpdate:modelValue","options"])])]),Object(a["createElementVNode"])("div",f,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"text",name:"".concat(i,"pattern"),modelValue:n.pattern,"onUpdate:modelValue":function(e){return n.pattern=e},"full-width":!0,title:"urlparam"===n.dimension?e.translate("CustomDimensions_UrlQueryStringParameter"):"eg. /blog/(.*)/"},null,8,["name","modelValue","onUpdate:modelValue","title"])])]),Object(a["createElementVNode"])("div",v,[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-plus",onClick:t[2]||(t[2]=function(t){return e.addExtraction()})},null,512),[[a["vShow"],n.pattern]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-minus",onClick:function(t){return e.removeExtraction(i)}},null,8,O),[[a["vShow"],e.dimension.extractions.length>1]])])])],2)})),128)),Object(a["createElementVNode"])("div",j,[Object(a["createElementVNode"])("div",h,[Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createVNode"])(w,{uicontrol:"checkbox",name:"casesensitive",modelValue:e.dimension.case_sensitive,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.dimension.case_sensitive=t}),title:e.translate("Goals_CaseSensitive")},null,8,["modelValue","title"]),[[a["vShow"],null===(n=e.dimension.extractions[0])||void 0===n?void 0:n.pattern]])])])])]),Object(a["createElementVNode"])("div",D,Object(a["toDisplayString"])(e.translate("CustomDimensions_ExtractionsHelp")),1)],512),[[a["vShow"],e.doesScopeSupportExtraction]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"btn update",type:"submit",value:e.translate("General_Update"),disabled:e.isUpdating,style:{"margin-right":"3.5px"}},null,8,C),[[a["vShow"],e.edit]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"btn create",type:"submit",value:e.translate("General_Create"),disabled:e.isUpdating,style:{"margin-right":"3.5px"}},null,8,g),[[a["vShow"],e.create]]),Object(a["createElementVNode"])("a",V,Object(a["toDisplayString"])(e.translate("General_Cancel")),1)],32),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",E,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyTitle")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaJs")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.manuallyTrackCodeViaJs(e.dimension)},null,8,S)],512),[[_,{}]]),Object(a["createElementVNode"])("p",{innerHTML:e.$sanitize(e.howToTrackManuallyText)},null,8,N),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaPhp")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.manuallyTrackCodeViaPhp(e.dimension)},null,8,y)],512),[[_,{}]]),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaHttp")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.manuallyTrackCode},null,8,x)],512),[[_,{}]])],512),[[a["vShow"],e.edit]])],512),[[a["vShow"],!e.isLoading]])]})),_:1},8,["content-title"])])}var k=n("a5a2");function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function T(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function M(e,t,n){return t&&T(e.prototype,t),n&&T(e,n),e}function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var U=function(){function e(){var t=this;_(this,e),A(this,"privateState",Object(a["reactive"])({customDimensions:[],availableScopes:[],extractionDimensions:[],isLoading:!1,isUpdating:!1})),A(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),A(this,"isLoading",Object(a["computed"])((function(){return t.state.value.isLoading}))),A(this,"isUpdating",Object(a["computed"])((function(){return t.state.value.isUpdating}))),A(this,"extractionDimensions",Object(a["computed"])((function(){return t.state.value.extractionDimensions}))),A(this,"extractionDimensionsOptions",Object(a["computed"])((function(){return t.extractionDimensions.value.map((function(e){return{key:e.value,value:e.name}}))}))),A(this,"availableScopes",Object(a["computed"])((function(){return t.state.value.availableScopes}))),A(this,"customDimensions",Object(a["computed"])((function(){return t.state.value.customDimensions}))),A(this,"customDimensionsById",Object(a["computed"])((function(){var e={};return t.customDimensions.value.forEach((function(t){e["".concat(t.idcustomdimension)]=t})),e}))),A(this,"reloadPromise",null)}return M(e,[{key:"reload",value:function(){return this.privateState.customDimensions=[],this.privateState.availableScopes=[],this.privateState.extractionDimensions=[],this.reloadPromise=null,this.fetch()}},{key:"fetch",value:function(){var e=this;return this.reloadPromise||(this.privateState.isLoading=!0,this.reloadPromise=Promise.all([this.fetchConfiguredCustomDimensions(),this.fetchAvailableExtractionDimensions(),this.fetchAvailableScopes()]).finally((function(){e.privateState.isLoading=!1}))),this.reloadPromise}},{key:"fetchConfiguredCustomDimensions",value:function(){var e=this;return s["AjaxHelper"].fetch({method:"CustomDimensions.getConfiguredCustomDimensions",filter_limit:"-1"}).then((function(t){e.privateState.customDimensions=t}))}},{key:"fetchAvailableExtractionDimensions",value:function(){var e=this;return s["AjaxHelper"].fetch({method:"CustomDimensions.getAvailableExtractionDimensions",filter_limit:"-1"}).then((function(t){e.privateState.extractionDimensions=t}))}},{key:"fetchAvailableScopes",value:function(){var e=this;return s["AjaxHelper"].fetch({method:"CustomDimensions.getAvailableScopes",filter_limit:"-1"}).then((function(t){e.privateState.availableScopes=t}))}},{key:"createOrUpdateDimension",value:function(e,t){var n=this;return this.privateState.isUpdating=!0,s["AjaxHelper"].post({method:t,scope:e.scope,idDimension:e.idcustomdimension,idSite:e.idsite,name:e.name,active:e.active?"1":"0",caseSensitive:e.case_sensitive?"1":"0"},{extractions:e.extractions}).finally((function(){n.privateState.isUpdating=!1}))}}]),e}(),B=new U;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function L(e){return"".concat(e[0].toUpperCase()).concat(e.substr(1))}var H="customdimensions",I=Object(a["defineComponent"])({props:{dimensionId:Number,dimensionScope:{type:String,required:!0}},components:{ContentBlock:s["ContentBlock"],Field:k["Field"]},directives:{SelectOnFocus:s["SelectOnFocus"]},data:function(){return{dimension:{extractions:[]},isUpdatingDim:!1}},created:function(){this.init()},watch:{dimensionId:function(){this.init()}},methods:{removeAnyCustomDimensionNotification:function(){s["NotificationsStore"].remove(H)},showNotification:function(e,t){s["NotificationsStore"].show({message:e,context:t,id:H,type:"transient"})},init:function(){var e=this;null!==this.dimensionId&&this.removeAnyCustomDimensionNotification(),B.fetch().then((function(){e.edit&&e.dimensionId?(e.dimension=Object(s["clone"])(B.customDimensionsById.value[e.dimensionId]),e.dimension&&!e.dimension.extractions.length&&e.addExtraction()):e.create&&(e.dimension={idsite:s["Matomo"].idSite,name:"",active:!1,extractions:[],scope:e.dimensionScope,case_sensitive:!0},e.addExtraction())}))},removeExtraction:function(e){e>-1&&this.dimension.extractions.splice(e,1)},addExtraction:function(){this.doesScopeSupportExtraction&&this.dimension.extractions.push({dimension:"url",pattern:""})},createCustomDimension:function(){var e=this;this.isUpdatingDim=!0,B.createOrUpdateDimension(this.dimension,"CustomDimensions.configureNewCustomDimension").then((function(){e.showNotification(Object(s["translate"])("CustomDimensions_DimensionCreated"),"success"),console.log("before reload"),B.reload(),s["MatomoUrl"].updateHashToUrl("/list")})).finally((function(){e.isUpdatingDim=!1}))},updateCustomDimension:function(){var e=this;this.isUpdatingDim=!0,B.createOrUpdateDimension(this.dimension,"CustomDimensions.configureExistingCustomDimension").then((function(){e.showNotification(Object(s["translate"])("CustomDimensions_DimensionUpdated"),"success"),B.reload(),s["MatomoUrl"].updateHashToUrl("/list")})).finally((function(){e.isUpdatingDim=!1}))},manuallyTrackCodeViaJs:function(e){return"_paq.push(['setCustomDimension', ".concat(e.idcustomdimension,", ")+"'".concat(Object(s["translate"])("CustomDimensions_ExampleValue"),"']);")},manuallyTrackCodeViaPhp:function(e){return"$tracker->setCustomDimension('".concat(e.idcustomdimension,"', ")+"'".concat(Object(s["translate"])("CustomDimensions_ExampleValue"),"');")}},computed:{isLoading:function(){return B.isLoading.value},isUpdating:function(){return B.isUpdating.value||this.isUpdatingDim},create:function(){return 0===this.dimensionId},edit:function(){return!this.create},extractionDimensionsOptions:function(){return B.extractionDimensionsOptions.value},availableScopes:function(){return B.availableScopes.value},doesScopeSupportExtraction:function(){var e,t=this;if(null===(e=this.dimension)||void 0===e||!e.scope||!this.availableScopes)return!1;var n=this.availableScopes.find((function(e){return e.value===t.dimension.scope}));return null===n||void 0===n?void 0:n.supportsExtractions},contentTitleText:function(){var e;return Object(s["translate"])("CustomDimensions_ConfigureDimension",L(this.dimensionScope),"".concat((null===(e=this.dimension)||void 0===e?void 0:e.index)||""))},howToTrackManuallyText:function(){var e="https://developer.piwik.org/guides/tracking-javascript-guide#custom-dimensions";return Object(s["translate"])("CustomDimensions_HowToTrackManuallyViaJsDetails",'<a target=_blank href="'.concat(e,'" rel="noreferrer noopener">'),"</a>")},manuallyTrackCode:function(){var e=Object(s["translate"])("CustomDimensions_ExampleValue");return"&dimension".concat(this.dimension.idcustomdimension,"=").concat(e)}}});I.render=w;var P=I,q=(Object(s["createAngularJsAdapter"])({component:P,scope:{dimensionId:{angularJsBind:"=",transform:s["transformAngularJsIntAttr"]},dimensionScope:{angularJsBind:"="}},directiveName:"piwikCustomDimensionsEdit"}),["innerHTML"]),F={class:"loadingPiwik"},G=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),J={class:"index"},z={class:"name"},$={class:"active"},Q={class:"action"},X={colspan:"5"},Y={class:"index"},K={class:"name"},R={class:"extractions"},W={class:"active"},Z={class:"action"},ee=["href"],te={class:"tableActionBar"},ne=["disabled","onClick"],ie=Object(a["createElementVNode"])("span",{class:"icon-add"},null,-1),oe={class:"info"};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function se(e,t,n,i,o,s){var c=Object(a["resolveComponent"])("EnrichedHeadline"),r=Object(a["resolveComponent"])("ContentBlock"),l=Object(a["resolveDirective"])("content-intro"),u=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("h2",null,[Object(a["createVNode"])(c,null,{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomDimensions_CustomDimensions")),1)]})),_:1})]),Object(a["createElementVNode"])("p",{innerHTML:e.$sanitize(e.contentIntroText)},null,8,q),Object(a["withDirectives"])(Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("span",F,[G,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512),[[a["vShow"],e.isLoading]])],512),[[l]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.availableScopes,(function(t){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t.value},[Object(a["createVNode"])(r,{"content-title":"".concat(t.name," Dimensions")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_ScopeDescription".concat(e.ucfirst(t.value))))+" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ScopeDescription".concat(e.ucfirst(t.value),"MoreInfo"))),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",null,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",J,Object(a["toDisplayString"])(e.translate("General_Id")),1),Object(a["createElementVNode"])("th",z,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("th",{class:"extractions"},Object(a["toDisplayString"])(e.translate("CustomDimensions_Extractions")),513),[[a["vShow"],t.supportsExtractions]]),Object(a["createElementVNode"])("th",$,Object(a["toDisplayString"])(e.translate("CorePluginsAdmin_Active")),1),Object(a["createElementVNode"])("th",Q,Object(a["toDisplayString"])(e.translate("General_Action")),1)])]),Object(a["createElementVNode"])("tbody",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("td",X,Object(a["toDisplayString"])(e.translate("CustomDimensions_NoCustomDimensionConfigured")),1)],512),[[a["vShow"],0===t.numSlotsUsed&&!e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sortedCustomDimensionsByScope[t.value],(function(e){var n;return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:Object(a["normalizeClass"])(["customdimension",e.idcustomdimension]),key:e.idcustomdimension},[Object(a["createElementVNode"])("td",Y,Object(a["toDisplayString"])(e.idcustomdimension),1),Object(a["createElementVNode"])("td",K,Object(a["toDisplayString"])(e.name),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("td",R,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"icon-ok":null===(n=e.extractions[0])||void 0===n?void 0:n.pattern})},null,2)],512),[[a["vShow"],t.supportsExtractions]]),Object(a["createElementVNode"])("td",W,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"icon-ok":e.active})},null,2)]),Object(a["createElementVNode"])("td",Z,[Object(a["createElementVNode"])("a",{class:"table-action icon-edit",href:"#?idDimension=".concat(e.idcustomdimension,"&scope=").concat(t.value)},null,8,ee)])],2)})),128))])],512),[[u]]),Object(a["createElementVNode"])("div",te,[Object(a["withDirectives"])(Object(a["createElementVNode"])("button",{class:"btn",disabled:!t.numSlotsLeft,onClick:function(n){return e.addDimension(t.value)}},[ie,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ConfigureNewDimension"))+" ",1),Object(a["createElementVNode"])("span",oe,"("+Object(a["toDisplayString"])(e.translate("CustomDimensions_XofYLeft",t.numSlotsLeft,t.numSlotsAvailable))+")",1)],8,ne),[[a["vShow"],!e.isLoading]])])]})),_:2},1032,["content-title"])],512)),[[a["vShow"],!e.isLoading]])})),128))])}function ae(e){return ue(e)||le(e)||re(e)||ce()}function ce(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function re(e,t){if(e){if("string"===typeof e)return me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?me(e,t):void 0}}function le(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function ue(e){if(Array.isArray(e))return me(e)}function me(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}var de=Object(a["defineComponent"])({name:"listcustomdimensions",components:{EnrichedHeadline:s["EnrichedHeadline"],ContentBlock:s["ContentBlock"]},directives:{ContentIntro:s["ContentIntro"],ContentTable:s["ContentTable"]},created:function(){B.fetch()},methods:{ucfirst:function(e){return L(e)},addDimension:function(e){s["MatomoUrl"].updateHashToUrl("/?idDimension=0&scope=".concat(e))}},computed:{isLoading:function(){return B.isLoading.value},availableScopes:function(){return B.availableScopes.value},contentIntroText:function(){var e=Object(s["translate"])("CustomDimensions_CustomDimensionsIntroNext",'<a target=_blank href="https://piwik.org/docs/custom-variables">',"</a>",'<a target=_blank href="https://piwik.org/faq/general/faq_21117">',"</a>"),t=Object(s["translate"])("CustomDimensions_CustomDimensionsIntro",'<a target=_blank href="https://piwik.org/docs/custom-dimensions">',"</a>",this.siteName);return"".concat(e).concat(t)},customDimensions:function(){return B.customDimensions.value},sortedCustomDimensions:function(){var e=ae(this.customDimensions);return e.sort((function(e,t){var n=parseInt("".concat(e.idcustomdimension),10),i=parseInt("".concat(t.idcustomdimension),10);return n-i})),e},sortedCustomDimensionsByScope:function(){var e={};return this.sortedCustomDimensions.reduce((function(e,t){return e[t.scope]=e[t.scope]||[],e[t.scope].push(t),e}),e),e},siteName:function(){return s["Matomo"].helper.htmlDecode(s["Matomo"].siteName)}}});de.render=se;var pe=de,be=(Object(s["createAngularJsAdapter"])({component:pe,directiveName:"piwikCustomDimensionsList"}),{class:"manageCustomDimensions"}),fe={key:0},ve=Object(a["createElementVNode"])("br",null,null,-1),Oe=Object(a["createElementVNode"])("br",null,null,-1),je=Object(a["createElementVNode"])("br",null,null,-1),he=Object(a["createElementVNode"])("br",null,null,-1),De=["textContent"],Ce=["textContent"],ge={key:1};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function Ve(e,t,n,i,o,s){var c=Object(a["resolveComponent"])("CustomDimensionsList"),r=Object(a["resolveComponent"])("ContentBlock"),l=Object(a["resolveComponent"])("CustomDimensionsEdit"),u=Object(a["resolveDirective"])("select-on-focus");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",be,[e.editMode?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fe,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(c)]),Object(a["createVNode"])(r,{id:"customDimensionsCreateMoreDimensions","content-title":e.translate("CustomDimensions_IncreaseAvailableCustomDimensionsTitle")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("p",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomDimensions_IncreaseAvailableCustomDimensionsTakesLong"))+" ",1),ve,Oe,Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToCreateCustomDimension"))+" ",1),je,he]),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{textContent:Object(a["toDisplayString"])(e.addCustomDimCode)},null,8,De)],512),[[u,{}]]),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToManyCreateCustomDimensions"))+" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ExampleCreateCustomDimensions",5)),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{textContent:Object(a["toDisplayString"])(e.addMultipleCustomDimCode)},null,8,Ce)],512),[[u,{}]])]})),_:1},8,["content-title"])])),e.editMode?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ge,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(l,{"dimension-id":e.dimensionId,"dimension-scope":e.dimensionScope},null,8,["dimension-id","dimension-scope"])])])):Object(a["createCommentVNode"])("",!0)])}var Ee=Object(a["defineComponent"])({components:{CustomDimensionsList:pe,ContentBlock:s["ContentBlock"],CustomDimensionsEdit:P},directives:{SelectOnFocus:s["SelectOnFocus"]},data:function(){return{editMode:!1,dimensionId:null,dimensionScope:""}},created:function(){var e=this;Object(a["watch"])((function(){return s["MatomoUrl"].hashParsed.value}),(function(){e.initState()})),this.initState()},methods:{getValidDimensionScope:function(e){return-1!==["action","visit"].indexOf(e)?e:""},initState:function(){var e=s["MatomoUrl"].hashParsed.value.idDimension;if(e){var t=this.getValidDimensionScope(s["MatomoUrl"].hashParsed.value.scope);if("0"===e){var n={isAllowed:!0,scope:t};if(s["Matomo"].postEvent("CustomDimensions.initAddDimension",n),n&&!n.isAllowed)return this.editMode=!1,this.dimensionId=null,void(this.dimensionScope="")}this.editMode=!0,this.dimensionId=parseInt(e,10),this.dimensionScope=t}else this.editMode=!1,this.dimensionId=null,this.dimensionScope="";s["Matomo"].helper.lazyScrollToContent()}},computed:{addCustomDimCode:function(){return"./console customdimensions:add-custom-dimension --scope=action\n./console customdimensions:add-custom-dimension --scope=visit"},addMultipleCustomDimCode:function(){return"./console customdimensions:add-custom-dimension --scope=action --count=5"}}});Ee.render=Ve;var Se=Ee;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(s["createAngularJsAdapter"])({component:Se,directiveName:"piwikCustomDimensionsManage"})}})}));
+//# sourceMappingURL=CustomDimensions.umd.min.js.map \ No newline at end of file
diff --git a/plugins/CustomDimensions/vue/dist/umd.metadata.json b/plugins/CustomDimensions/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/CustomDimensions/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/CustomDimensions/vue/src/CustomDimensions.store.ts b/plugins/CustomDimensions/vue/src/CustomDimensions.store.ts
new file mode 100644
index 0000000000..7f8d582395
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/CustomDimensions.store.ts
@@ -0,0 +1,133 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import {
+ reactive,
+ computed,
+ readonly,
+ DeepReadonly,
+} from 'vue';
+import { AjaxHelper } from 'CoreHome';
+import { CustomDimension, AvailableScope, ExtractionDimension } from './types';
+
+interface CustomDimensionsStoreState {
+ isLoading: boolean;
+ isUpdating: boolean;
+ customDimensions: CustomDimension[];
+ availableScopes: AvailableScope[];
+ extractionDimensions: ExtractionDimension[];
+}
+
+class CustomDimensionsStore {
+ private privateState = reactive<CustomDimensionsStoreState>({
+ customDimensions: [],
+ availableScopes: [],
+ extractionDimensions: [],
+ isLoading: false,
+ isUpdating: false,
+ });
+
+ private state = computed(() => readonly(this.privateState));
+
+ readonly isLoading = computed(() => this.state.value.isLoading);
+
+ readonly isUpdating = computed(() => this.state.value.isUpdating);
+
+ readonly extractionDimensions = computed(() => this.state.value.extractionDimensions);
+
+ readonly extractionDimensionsOptions = computed(
+ () => this.extractionDimensions.value.map((e) => ({ key: e.value, value: e.name })),
+ );
+
+ readonly availableScopes = computed(() => this.state.value.availableScopes);
+
+ readonly customDimensions = computed(() => this.state.value.customDimensions);
+
+ readonly customDimensionsById = computed(() => {
+ const dimensionsById: Record<string, DeepReadonly<CustomDimension>> = {};
+ this.customDimensions.value.forEach((c) => {
+ dimensionsById[`${c.idcustomdimension}`] = c;
+ });
+ return dimensionsById;
+ });
+
+ private reloadPromise: Promise<void>|null = null;
+
+ reload() {
+ this.privateState.customDimensions = [];
+ this.privateState.availableScopes = [];
+ this.privateState.extractionDimensions = [];
+ this.reloadPromise = null;
+ return this.fetch();
+ }
+
+ fetch() {
+ if (this.reloadPromise) {
+ return this.reloadPromise;
+ }
+
+ this.privateState.isLoading = true;
+ this.reloadPromise = Promise.all([
+ this.fetchConfiguredCustomDimensions(),
+ this.fetchAvailableExtractionDimensions(),
+ this.fetchAvailableScopes(),
+ ]).finally(() => {
+ this.privateState.isLoading = false;
+ }) as unknown as Promise<void>;
+
+ return this.reloadPromise!;
+ }
+
+ fetchConfiguredCustomDimensions() {
+ return AjaxHelper.fetch<CustomDimension[]>({
+ method: 'CustomDimensions.getConfiguredCustomDimensions',
+ filter_limit: '-1',
+ }).then((r) => {
+ this.privateState.customDimensions = r;
+ });
+ }
+
+ fetchAvailableExtractionDimensions() {
+ return AjaxHelper.fetch<ExtractionDimension[]>({
+ method: 'CustomDimensions.getAvailableExtractionDimensions',
+ filter_limit: '-1',
+ }).then((r) => {
+ this.privateState.extractionDimensions = r;
+ });
+ }
+
+ fetchAvailableScopes() {
+ return AjaxHelper.fetch<AvailableScope[]>({
+ method: 'CustomDimensions.getAvailableScopes',
+ filter_limit: '-1',
+ }).then((r) => {
+ this.privateState.availableScopes = r;
+ });
+ }
+
+ createOrUpdateDimension(dimension: CustomDimension, method: string): Promise<void> {
+ this.privateState.isUpdating = true;
+ return AjaxHelper.post(
+ {
+ method,
+ scope: dimension.scope,
+ idDimension: dimension.idcustomdimension,
+ idSite: dimension.idsite,
+ name: dimension.name,
+ active: dimension.active ? '1' : '0',
+ caseSensitive: dimension.case_sensitive ? '1' : '0',
+ },
+ {
+ extractions: dimension.extractions,
+ },
+ ).finally(() => {
+ this.privateState.isUpdating = false;
+ });
+ }
+}
+
+export default new CustomDimensionsStore();
diff --git a/plugins/CustomDimensions/vue/src/Edit/Edit.adapter.ts b/plugins/CustomDimensions/vue/src/Edit/Edit.adapter.ts
new file mode 100644
index 0000000000..66d04d276f
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/Edit/Edit.adapter.ts
@@ -0,0 +1,23 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter, transformAngularJsIntAttr } from 'CoreHome';
+import Edit from './Edit.vue';
+
+export default createAngularJsAdapter({
+ component: Edit,
+ scope: {
+ dimensionId: {
+ angularJsBind: '=',
+ transform: transformAngularJsIntAttr,
+ },
+ dimensionScope: {
+ angularJsBind: '=',
+ },
+ },
+ directiveName: 'piwikCustomDimensionsEdit',
+});
diff --git a/plugins/CustomDimensions/vue/src/Edit/Edit.less b/plugins/CustomDimensions/vue/src/Edit/Edit.less
new file mode 100644
index 0000000000..d62a3d92e7
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/Edit/Edit.less
@@ -0,0 +1,25 @@
+.editCustomDimension {
+ .icon-plus, .icon-minus {
+ cursor: pointer;
+ font-size: 16px;
+ padding-left: 10px;
+ }
+
+ .extraction {
+ .form-group {
+ margin-top: 8px;
+ margin-bottom: 8px;
+ }
+ }
+
+ .howToTrackInfo {
+ margin-top: 32px;
+ strong {
+ margin-bottom: 16px;
+ display: inline-block;
+ }
+ pre {
+ margin-top: 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/CustomDimensions/vue/src/Edit/Edit.vue b/plugins/CustomDimensions/vue/src/Edit/Edit.vue
new file mode 100644
index 0000000000..f7d15101c2
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/Edit/Edit.vue
@@ -0,0 +1,352 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="editCustomDimension">
+ <ContentBlock
+ :content-title="contentTitleText"
+ >
+ <p v-show="isLoading || isUpdating">
+ <span class="loadingPiwik">
+ <img src="plugins/Morpheus/images/loading-blue.gif" />
+ {{ translate('General_LoadingData') }}
+ </span>
+ </p>
+ <div v-show="!isLoading">
+ <form @submit.prevent="edit ? updateCustomDimension() : createCustomDimension()">
+ <div>
+ <Field
+ uicontrol="text"
+ name="name"
+ v-model="dimension.name"
+ :maxlength="255"
+ :required="true"
+ :title="translate('General_Name')"
+ :inline-help="translate('CustomDimensions_NameAllowedCharacters')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="active"
+ v-model="dimension.active"
+ :title="translate('CorePluginsAdmin_Active')"
+ :inline-help="translate('CustomDimensions_CannotBeDeleted')"
+ >
+ </Field>
+ </div>
+ <div
+ class="row form-group"
+ v-show="doesScopeSupportExtraction"
+ >
+ <h3 class="col s12">{{ translate('CustomDimensions_ExtractValue') }}</h3>
+ <div class="col s12 m6">
+ <div
+ v-for="(extraction, index) in dimension.extractions"
+ :class="`${index}extraction `"
+ :key="index"
+ >
+ <div class="row">
+ <div class="col s12 m6">
+ <div>
+ <Field
+ uicontrol="select"
+ :name="`${index}dimension`"
+ v-model="extraction.dimension"
+ :full-width="true"
+ :options="extractionDimensionsOptions"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="col s12 m6">
+ <div>
+ <Field
+ uicontrol="text"
+ :name="`${index}pattern`"
+ v-model="extraction.pattern"
+ :full-width="true"
+ :title="extraction.dimension === 'urlparam'
+ ? translate('CustomDimensions_UrlQueryStringParameter')
+ : 'eg. /blog/(.*)/'"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="col s12">
+ <span
+ class="icon-plus"
+ v-show="extraction.pattern"
+ @click="addExtraction()"
+ />
+ <span
+ class="icon-minus"
+ v-show="dimension.extractions.length > 1"
+ @click="removeExtraction(index)"
+ />
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col s12">
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="casesensitive"
+ v-show="dimension.extractions[0]?.pattern"
+ v-model="dimension.case_sensitive"
+ :title="translate('Goals_CaseSensitive')"
+ >
+ </Field>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col s12 m6 form-help">
+ {{ translate('CustomDimensions_ExtractionsHelp') }}
+ </div>
+ </div>
+ <input
+ class="btn update"
+ type="submit"
+ :value="translate('General_Update')"
+ v-show="edit"
+ :disabled="isUpdating"
+ style="margin-right:3.5px;"
+ />
+ <input
+ class="btn create"
+ type="submit"
+ :value="translate('General_Create')"
+ v-show="create"
+ :disabled="isUpdating"
+ style="margin-right:3.5px;"
+ />
+ <a
+ class="btn cancel"
+ type="button"
+ href="#list"
+ >{{ translate('General_Cancel') }}</a>
+ </form>
+ <div
+ class="alert alert-info howToTrackInfo"
+ v-show="edit"
+ >
+ <strong>{{ translate('CustomDimensions_HowToTrackManuallyTitle') }}</strong>
+ <p>
+ {{ translate('CustomDimensions_HowToTrackManuallyViaJs') }}
+ </p>
+ <pre v-select-on-focus="{}"><code v-html="manuallyTrackCodeViaJs(dimension)"></code></pre>
+ <p v-html="$sanitize(howToTrackManuallyText)"/>
+ <p>
+ {{ translate('CustomDimensions_HowToTrackManuallyViaPhp') }}
+ </p>
+ <pre
+ v-select-on-focus="{}"
+ ><code v-html="manuallyTrackCodeViaPhp(dimension)"></code></pre>
+ <p>
+ {{ translate('CustomDimensions_HowToTrackManuallyViaHttp') }}
+ </p>
+ <pre v-select-on-focus="{}"><code v-html="manuallyTrackCode"></code></pre>
+ </div>
+ </div>
+ </ContentBlock>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ clone,
+ translate,
+ Matomo,
+ ContentBlock,
+ SelectOnFocus,
+ NotificationsStore,
+ NotificationType,
+ MatomoUrl,
+} from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+import CustomDimensionsStore from '../CustomDimensions.store';
+import { CustomDimension } from '../types';
+import { ucfirst } from '../utilities';
+
+interface EditState {
+ dimension: CustomDimension;
+ isUpdatingDim: boolean;
+}
+
+const notificationId = 'customdimensions';
+
+export default defineComponent({
+ props: {
+ dimensionId: Number,
+ dimensionScope: {
+ type: String,
+ required: true,
+ },
+ },
+ components: {
+ ContentBlock,
+ Field,
+ },
+ directives: {
+ SelectOnFocus,
+ },
+ data(): EditState {
+ return {
+ dimension: { extractions: [] } as unknown as CustomDimension,
+ isUpdatingDim: false,
+ };
+ },
+ created() {
+ this.init();
+ },
+ watch: {
+ dimensionId() {
+ this.init();
+ },
+ },
+ methods: {
+ removeAnyCustomDimensionNotification() {
+ NotificationsStore.remove(notificationId);
+ },
+ showNotification(message: string, context: NotificationType['context']) {
+ NotificationsStore.show({
+ message,
+ context,
+ id: notificationId,
+ type: 'transient',
+ });
+ },
+ init() {
+ if (this.dimensionId !== null) {
+ this.removeAnyCustomDimensionNotification();
+ }
+
+ CustomDimensionsStore.fetch().then(() => {
+ if (this.edit && this.dimensionId) {
+ this.dimension = clone(
+ CustomDimensionsStore.customDimensionsById.value[this.dimensionId],
+ ) as unknown as CustomDimension;
+
+ if (this.dimension && !this.dimension.extractions.length) {
+ this.addExtraction();
+ }
+ } else if (this.create) {
+ this.dimension = {
+ idsite: Matomo.idSite,
+ name: '',
+ active: false,
+ extractions: [],
+ scope: this.dimensionScope,
+ case_sensitive: true,
+ } as unknown as CustomDimension;
+ this.addExtraction();
+ }
+ });
+ },
+ removeExtraction(index: number) {
+ if (index > -1) {
+ this.dimension.extractions.splice(index, 1);
+ }
+ },
+ addExtraction() {
+ if (this.doesScopeSupportExtraction) {
+ this.dimension.extractions.push({
+ dimension: 'url',
+ pattern: '',
+ });
+ }
+ },
+ createCustomDimension() {
+ this.isUpdatingDim = true;
+ CustomDimensionsStore.createOrUpdateDimension(
+ this.dimension,
+ 'CustomDimensions.configureNewCustomDimension',
+ ).then(() => {
+ this.showNotification(translate('CustomDimensions_DimensionCreated'), 'success');
+ console.log('before reload');
+ CustomDimensionsStore.reload();
+ MatomoUrl.updateHashToUrl('/list');
+ }).finally(() => {
+ this.isUpdatingDim = false;
+ });
+ },
+ updateCustomDimension() {
+ this.isUpdatingDim = true;
+ CustomDimensionsStore.createOrUpdateDimension(
+ this.dimension,
+ 'CustomDimensions.configureExistingCustomDimension',
+ ).then(() => {
+ this.showNotification(translate('CustomDimensions_DimensionUpdated'), 'success');
+ CustomDimensionsStore.reload();
+ MatomoUrl.updateHashToUrl('/list');
+ }).finally(() => {
+ this.isUpdatingDim = false;
+ });
+ },
+ manuallyTrackCodeViaJs(dimension: CustomDimension) {
+ return `_paq.push(['setCustomDimension', ${dimension.idcustomdimension}, `
+ + `'${translate('CustomDimensions_ExampleValue')}']);`;
+ },
+ manuallyTrackCodeViaPhp(dimension: CustomDimension) {
+ return `$tracker->setCustomDimension('${dimension.idcustomdimension}', `
+ + `'${translate('CustomDimensions_ExampleValue')}');`;
+ },
+ },
+ computed: {
+ isLoading() {
+ return CustomDimensionsStore.isLoading.value;
+ },
+ isUpdating() {
+ return CustomDimensionsStore.isUpdating.value || this.isUpdatingDim;
+ },
+ create() {
+ return this.dimensionId === 0;
+ },
+ edit() {
+ return !this.create;
+ },
+ extractionDimensionsOptions() {
+ return CustomDimensionsStore.extractionDimensionsOptions.value;
+ },
+ availableScopes() {
+ return CustomDimensionsStore.availableScopes.value;
+ },
+ doesScopeSupportExtraction() {
+ if (!this.dimension?.scope || !this.availableScopes) {
+ return false;
+ }
+
+ const dimensionScope = this.availableScopes.find(
+ (scope) => scope.value === this.dimension.scope,
+ );
+ return dimensionScope?.supportsExtractions;
+ },
+ contentTitleText() {
+ return translate(
+ 'CustomDimensions_ConfigureDimension',
+ ucfirst(this.dimensionScope),
+ `${this.dimension?.index || ''}`,
+ );
+ },
+ howToTrackManuallyText() {
+ const link = 'https://developer.piwik.org/guides/tracking-javascript-guide#custom-dimensions';
+ return translate(
+ 'CustomDimensions_HowToTrackManuallyViaJsDetails',
+ `<a target=_blank href="${link}" rel="noreferrer noopener">`,
+ '</a>',
+ );
+ },
+ manuallyTrackCode() {
+ const exampleValue = translate('CustomDimensions_ExampleValue');
+ return `&dimension${this.dimension.idcustomdimension}=${exampleValue}`;
+ },
+ },
+});
+</script>
diff --git a/plugins/CustomDimensions/vue/src/List/List.adapter.ts b/plugins/CustomDimensions/vue/src/List/List.adapter.ts
new file mode 100644
index 0000000000..95acb844af
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/List/List.adapter.ts
@@ -0,0 +1,14 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import List from './List.vue';
+
+export default createAngularJsAdapter({
+ component: List,
+ directiveName: 'piwikCustomDimensionsList',
+});
diff --git a/plugins/CustomDimensions/angularjs/manage/list.directive.less b/plugins/CustomDimensions/vue/src/List/List.less
index 3dddd502a8..3dddd502a8 100644
--- a/plugins/CustomDimensions/angularjs/manage/list.directive.less
+++ b/plugins/CustomDimensions/vue/src/List/List.less
diff --git a/plugins/CustomDimensions/vue/src/List/List.vue b/plugins/CustomDimensions/vue/src/List/List.vue
new file mode 100644
index 0000000000..b41aed48e2
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/List/List.vue
@@ -0,0 +1,180 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div>
+ <div v-content-intro>
+ <h2>
+ <EnrichedHeadline>{{ translate('CustomDimensions_CustomDimensions') }}</EnrichedHeadline>
+ </h2>
+ <p v-html="$sanitize(contentIntroText)"></p>
+ <p v-show="isLoading">
+ <span class="loadingPiwik">
+ <img src="plugins/Morpheus/images/loading-blue.gif" />
+ {{ translate('General_LoadingData') }}
+ </span>
+ </p>
+ </div>
+ <div
+ v-show="!isLoading"
+ v-for="scope in availableScopes"
+ :key="scope.value"
+ >
+ <ContentBlock :content-title="`${scope.name} Dimensions`">
+ <p>
+ {{ translate(`CustomDimensions_ScopeDescription${ucfirst(scope.value)}`) }}
+ {{ translate(`CustomDimensions_ScopeDescription${ucfirst(scope.value)}MoreInfo`) }}
+ </p>
+ <table v-content-table>
+ <thead>
+ <tr>
+ <th class="index">{{ translate('General_Id') }}</th>
+ <th class="name">{{ translate('General_Name') }}</th>
+ <th
+ class="extractions"
+ v-show="scope.supportsExtractions"
+ >{{ translate('CustomDimensions_Extractions') }}</th>
+ <th class="active">{{ translate('CorePluginsAdmin_Active') }}</th>
+ <th class="action">{{ translate('General_Action') }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr v-show="scope.numSlotsUsed === 0 && !isLoading">
+ <td colspan="5">{{ translate('CustomDimensions_NoCustomDimensionConfigured') }}</td>
+ </tr>
+ <tr
+ class="customdimension"
+ v-for="customDimension in sortedCustomDimensionsByScope[scope.value]"
+ :class="customDimension.idcustomdimension"
+ :key="customDimension.idcustomdimension"
+ >
+ <td class="index">{{ customDimension.idcustomdimension }}</td>
+ <td class="name">{{ customDimension.name }}</td>
+ <td
+ class="extractions"
+ v-show="scope.supportsExtractions"
+ >
+ <span :class="{'icon-ok': customDimension.extractions[0]?.pattern}" />
+ </td>
+ <td class="active"><span :class="{'icon-ok': customDimension.active}" /></td>
+ <td class="action">
+ <a
+ class="table-action icon-edit"
+ :href="`#?idDimension=${customDimension.idcustomdimension}&scope=${scope.value}`"
+ />
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="tableActionBar">
+ <button
+ class="btn"
+ :disabled="!scope.numSlotsLeft"
+ v-show="!isLoading"
+ v-on:click="addDimension(scope.value)"
+ >
+ <span class="icon-add" /> {{ translate('CustomDimensions_ConfigureNewDimension') }}
+ <span class="info">({{ translate(
+ 'CustomDimensions_XofYLeft',
+ scope.numSlotsLeft,
+ scope.numSlotsAvailable,
+ ) }})</span>
+ </button>
+ </div>
+ </ContentBlock>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { DeepReadonly, defineComponent } from 'vue';
+import {
+ translate,
+ Matomo,
+ MatomoUrl,
+ ContentIntro,
+ EnrichedHeadline,
+ ContentBlock,
+ ContentTable,
+} from 'CoreHome';
+import { ucfirst } from '../utilities';
+import CustomDimensionsStore from '../CustomDimensions.store';
+import { CustomDimension } from '../types';
+
+export default defineComponent({
+ name: 'listcustomdimensions',
+ components: {
+ EnrichedHeadline,
+ ContentBlock,
+ },
+ directives: {
+ ContentIntro,
+ ContentTable,
+ },
+ created() {
+ CustomDimensionsStore.fetch();
+ },
+ methods: {
+ ucfirst(s: string) {
+ return ucfirst(s);
+ },
+ addDimension(scope: string) {
+ MatomoUrl.updateHashToUrl(`/?idDimension=0&scope=${scope}`);
+ },
+ },
+ computed: {
+ isLoading(): boolean {
+ return CustomDimensionsStore.isLoading.value;
+ },
+ availableScopes(): (typeof CustomDimensionsStore)['availableScopes']['value'] {
+ return CustomDimensionsStore.availableScopes.value;
+ },
+ contentIntroText(): string {
+ const firstPart = translate(
+ 'CustomDimensions_CustomDimensionsIntroNext',
+ '<a target=_blank href="https://piwik.org/docs/custom-variables">',
+ '</a>',
+ '<a target=_blank href="https://piwik.org/faq/general/faq_21117">',
+ '</a>',
+ );
+ const secondPart = translate(
+ 'CustomDimensions_CustomDimensionsIntro',
+ '<a target=_blank href="https://piwik.org/docs/custom-dimensions">',
+ '</a>',
+ this.siteName,
+ );
+ return `${firstPart}${secondPart}`;
+ },
+ customDimensions(): DeepReadonly<CustomDimension[]> {
+ return CustomDimensionsStore.customDimensions.value;
+ },
+ sortedCustomDimensions(): DeepReadonly<CustomDimension>[] {
+ const result = [...this.customDimensions];
+ result.sort((lhs, rhs) => {
+ const lhsId = parseInt(`${lhs.idcustomdimension}`, 10);
+ const rhsId = parseInt(`${rhs.idcustomdimension}`, 10);
+ return lhsId - rhsId;
+ });
+ return result;
+ },
+ sortedCustomDimensionsByScope(): Record<string, DeepReadonly<CustomDimension>[]> {
+ const result: Record<string, DeepReadonly<CustomDimension>[]> = {};
+ this.sortedCustomDimensions.reduce(
+ (acc: typeof result, dim: DeepReadonly<CustomDimension>) => {
+ acc[dim.scope] = acc[dim.scope] || [];
+ acc[dim.scope].push(dim);
+ return acc;
+ },
+ result,
+ );
+ return result;
+ },
+ siteName(): string {
+ return Matomo.helper.htmlDecode(Matomo.siteName);
+ },
+ },
+});
+</script>
diff --git a/plugins/CustomDimensions/vue/src/Manage/Manage.adapter.ts b/plugins/CustomDimensions/vue/src/Manage/Manage.adapter.ts
new file mode 100644
index 0000000000..a2c2e6d27f
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/Manage/Manage.adapter.ts
@@ -0,0 +1,14 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import Manage from './Manage.vue';
+
+export default createAngularJsAdapter({
+ component: Manage,
+ directiveName: 'piwikCustomDimensionsManage',
+});
diff --git a/plugins/CustomDimensions/vue/src/Manage/Manage.vue b/plugins/CustomDimensions/vue/src/Manage/Manage.vue
new file mode 100644
index 0000000000..c153c2985b
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/Manage/Manage.vue
@@ -0,0 +1,134 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="manageCustomDimensions">
+ <div v-if="!editMode">
+ <div>
+ <CustomDimensionsList />
+ </div>
+ <ContentBlock
+ id="customDimensionsCreateMoreDimensions"
+ :content-title="translate('CustomDimensions_IncreaseAvailableCustomDimensionsTitle')"
+ >
+ <p>
+ {{ translate('CustomDimensions_IncreaseAvailableCustomDimensionsTakesLong') }}
+ <br/><br/>{{ translate('CustomDimensions_HowToCreateCustomDimension') }}
+ <br/><br/>
+ </p>
+ <pre v-select-on-focus="{}"><code v-text="addCustomDimCode"></code></pre>
+ <p>
+ {{ translate('CustomDimensions_HowToManyCreateCustomDimensions') }}
+ {{ translate('CustomDimensions_ExampleCreateCustomDimensions', 5) }}
+ </p>
+ <pre v-select-on-focus="{}"><code v-text="addMultipleCustomDimCode"></code></pre>
+ </ContentBlock>
+ </div>
+ <div v-if="editMode">
+ <div>
+ <CustomDimensionsEdit
+ :dimension-id="dimensionId"
+ :dimension-scope="dimensionScope"
+ />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { watch, defineComponent } from 'vue';
+import {
+ Matomo,
+ ContentBlock,
+ SelectOnFocus,
+ MatomoUrl,
+} from 'CoreHome';
+import CustomDimensionsList from '../List/List';
+import CustomDimensionsEdit from '../Edit/Edit';
+
+interface ManageState {
+ editMode: boolean;
+ dimensionId: number|null;
+ dimensionScope: string;
+}
+
+export default defineComponent({
+ components: {
+ CustomDimensionsList,
+ ContentBlock,
+ CustomDimensionsEdit,
+ },
+ directives: {
+ SelectOnFocus,
+ },
+ data(): ManageState {
+ return {
+ editMode: false,
+ dimensionId: null,
+ dimensionScope: '',
+ };
+ },
+ created() {
+ watch(() => MatomoUrl.hashParsed.value, () => {
+ this.initState();
+ });
+
+ this.initState();
+ },
+ methods: {
+ getValidDimensionScope(scope: string) {
+ if (['action', 'visit'].indexOf(scope) !== -1) {
+ return scope!;
+ }
+
+ return '';
+ },
+ initState() {
+ // as we're not using angular router we have to handle it manually here
+ const idDimension = MatomoUrl.hashParsed.value.idDimension as string;
+
+ if (idDimension) {
+ const scope = this.getValidDimensionScope(MatomoUrl.hashParsed.value.scope as string);
+
+ if (idDimension === '0') {
+ const parameters = {
+ isAllowed: true,
+ scope,
+ };
+
+ Matomo.postEvent('CustomDimensions.initAddDimension', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ this.editMode = false;
+ this.dimensionId = null;
+ this.dimensionScope = '';
+ return;
+ }
+ }
+
+ this.editMode = true;
+ this.dimensionId = parseInt(idDimension, 10);
+ this.dimensionScope = scope;
+ } else {
+ this.editMode = false;
+ this.dimensionId = null;
+ this.dimensionScope = '';
+ }
+
+ Matomo.helper.lazyScrollToContent();
+ },
+ },
+ computed: {
+ addCustomDimCode() {
+ return './console customdimensions:add-custom-dimension --scope=action\n'
+ + './console customdimensions:add-custom-dimension --scope=visit';
+ },
+ addMultipleCustomDimCode() {
+ return './console customdimensions:add-custom-dimension --scope=action --count=5';
+ },
+ },
+});
+</script>
diff --git a/plugins/CustomDimensions/vue/src/index.ts b/plugins/CustomDimensions/vue/src/index.ts
new file mode 100644
index 0000000000..5cf60100f7
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/index.ts
@@ -0,0 +1,15 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './Edit/Edit.adapter';
+import './List/List.adapter';
+import './Manage/Manage.adapter';
+
+export { default as CustomDimensionsStore } from './CustomDimensions.store';
+export { default as Edit } from './Edit/Edit.vue';
+export { default as List } from './List/List.vue';
+export { default as Manage } from './Manage/Manage.vue';
diff --git a/plugins/CustomDimensions/vue/src/types.ts b/plugins/CustomDimensions/vue/src/types.ts
new file mode 100644
index 0000000000..32b6f0872a
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/types.ts
@@ -0,0 +1,36 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+export interface Extraction {
+ dimension: string;
+ pattern: string;
+}
+
+export interface CustomDimension {
+ active: boolean;
+ case_sensitive: boolean;
+ extractions: Extraction[];
+ idcustomdimension: string|number;
+ idsite: string|number;
+ index: string|number;
+ name: string;
+ scope: string;
+}
+
+export interface AvailableScope {
+ name: string;
+ numSlotsAvailable: number;
+ numSlotsLeft: number;
+ numSlotsUsed: number;
+ supportsExtractions: boolean;
+ value: string;
+}
+
+export interface ExtractionDimension {
+ name: string;
+ value: string;
+}
diff --git a/plugins/CustomDimensions/vue/src/utilities.ts b/plugins/CustomDimensions/vue/src/utilities.ts
new file mode 100644
index 0000000000..b1101df38c
--- /dev/null
+++ b/plugins/CustomDimensions/vue/src/utilities.ts
@@ -0,0 +1,10 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+export function ucfirst(s: string): string {
+ return `${s[0].toUpperCase()}${s.substr(1)}`;
+}
diff --git a/plugins/CustomJsTracker/Commands/UpdateTracker.php b/plugins/CustomJsTracker/Commands/UpdateTracker.php
index 0d8005ec76..a5763ee5f9 100644
--- a/plugins/CustomJsTracker/Commands/UpdateTracker.php
+++ b/plugins/CustomJsTracker/Commands/UpdateTracker.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CustomJsTracker\Commands;
use Piwik\Container\StaticContainer;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CustomJsTracker\TrackerUpdater;
-use Piwik\Plugins\CustomJsTracker\TrackingCode\PluginTrackerFiles;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CustomVariables b/plugins/CustomVariables
-Subproject 7b03c4858ece751927b1f9fa97e8b190c5e2de3
+Subproject 349cc96b68f657b8f4201676cf0749deeee0e2f
diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php
index 63ec603bf6..5bfc97114a 100644
--- a/plugins/DBStats/DBStats.php
+++ b/plugins/DBStats/DBStats.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\DBStats;
use Piwik\Piwik;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
-use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\DBStats\tests\Mocks\MockDataAccess;
class DBStats extends \Piwik\Plugin
diff --git a/plugins/DBStats/MySQLMetadataProvider.php b/plugins/DBStats/MySQLMetadataProvider.php
index 90dc50b61b..5ba5b12574 100644
--- a/plugins/DBStats/MySQLMetadataProvider.php
+++ b/plugins/DBStats/MySQLMetadataProvider.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\DBStats;
use Exception;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Option;
diff --git a/plugins/DBStats/Reports/GetAdminDataSummary.php b/plugins/DBStats/Reports/GetAdminDataSummary.php
index c3c498e9e1..4edb271b66 100644
--- a/plugins/DBStats/Reports/GetAdminDataSummary.php
+++ b/plugins/DBStats/Reports/GetAdminDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
/**
* Shows a datatable that displays the amount of space each 'admin' table takes
diff --git a/plugins/DBStats/Reports/GetIndividualMetricsSummary.php b/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
index eb1b4896dd..fa34a5f870 100644
--- a/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
+++ b/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
-use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
* Shows a datatable that displays how many occurrences there are of each individual
diff --git a/plugins/DBStats/Reports/GetIndividualReportsSummary.php b/plugins/DBStats/Reports/GetIndividualReportsSummary.php
index 492eeb1071..c0a703f9a1 100644
--- a/plugins/DBStats/Reports/GetIndividualReportsSummary.php
+++ b/plugins/DBStats/Reports/GetIndividualReportsSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
diff --git a/plugins/DBStats/Reports/GetMetricDataSummary.php b/plugins/DBStats/Reports/GetMetricDataSummary.php
index bbbd4efc62..b51e13e07c 100644
--- a/plugins/DBStats/Reports/GetMetricDataSummary.php
+++ b/plugins/DBStats/Reports/GetMetricDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php b/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php
index eb2131a76b..a5aa728de9 100644
--- a/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php
+++ b/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetReportDataSummary.php b/plugins/DBStats/Reports/GetReportDataSummary.php
index 6779fc1d9b..00bb93ab58 100644
--- a/plugins/DBStats/Reports/GetReportDataSummary.php
+++ b/plugins/DBStats/Reports/GetReportDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetReportDataSummaryByYear.php b/plugins/DBStats/Reports/GetReportDataSummaryByYear.php
index 4a59f65d59..6f294272ff 100644
--- a/plugins/DBStats/Reports/GetReportDataSummaryByYear.php
+++ b/plugins/DBStats/Reports/GetReportDataSummaryByYear.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetTrackerDataSummary.php b/plugins/DBStats/Reports/GetTrackerDataSummary.php
index c135e438c8..c1b69a1289 100644
--- a/plugins/DBStats/Reports/GetTrackerDataSummary.php
+++ b/plugins/DBStats/Reports/GetTrackerDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
/**
* Shows a datatable that displays the amount of space each individual log table
diff --git a/plugins/Dashboard/API.php b/plugins/Dashboard/API.php
index 82f9b15337..83df0c6559 100644
--- a/plugins/Dashboard/API.php
+++ b/plugins/Dashboard/API.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\Dashboard;
use Piwik\API\Request;
-use Piwik\NoAccessException;
use Piwik\Piwik;
/**
diff --git a/plugins/Dashboard/Controller.php b/plugins/Dashboard/Controller.php
index 36ffe9446b..68202f3e00 100644
--- a/plugins/Dashboard/Controller.php
+++ b/plugins/Dashboard/Controller.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Dashboard;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable\Renderer\Json;
-use Piwik\Db;
use Piwik\Piwik;
use Piwik\Session\SessionNamespace;
use Piwik\View;
diff --git a/plugins/Dashboard/Menu.php b/plugins/Dashboard/Menu.php
index 1158fc8f71..ac3551ac73 100644
--- a/plugins/Dashboard/Menu.php
+++ b/plugins/Dashboard/Menu.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Dashboard;
-use Piwik\Db;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\UserPreferences;
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
index d3c1ace2df..35682a3dfd 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ff45a4a5ba70614cd4d0b91e513b406bcbb21c1b9899126fed0f2cef9b82d1d0
-size 293645
+oid sha256:242055db2ab7e0167bd14ca5be237efc0b515e1ac674a2abbe6149593b4c2a86
+size 294558
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png
index b8f46b1bf3..5afa897615 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:51828d341919bed0dab33c8d430d822e0bfdb28140aa19bd36aa05db0348bde5
-size 481845
+oid sha256:1f3112624624a967f2063897bb19c2f4f8f87966b2f53f52efb80152ae780cb5
+size 482716
diff --git a/plugins/DeviceDetectorCache b/plugins/DeviceDetectorCache
-Subproject 9b87c82f2a26a20195381a95caae4d978b20784
+Subproject e783fec72841f6a1ab562a07e7724a42cb4eaa1
diff --git a/plugins/DevicePlugins/Columns/Plugin.php b/plugins/DevicePlugins/Columns/Plugin.php
index 08e748c928..f3e7bf6c0b 100644
--- a/plugins/DevicePlugins/Columns/Plugin.php
+++ b/plugins/DevicePlugins/Columns/Plugin.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Plugin extends Dimension
{
diff --git a/plugins/DevicesDetection/Columns/BrowserName.php b/plugins/DevicesDetection/Columns/BrowserName.php
index 6e2f2ae49b..69ff56a235 100644
--- a/plugins/DevicesDetection/Columns/BrowserName.php
+++ b/plugins/DevicesDetection/Columns/BrowserName.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DevicesDetection\Columns;
use DeviceDetector\Parser\Client\Browser;
use Piwik\Columns\DimensionSegmentFactory;
-use Piwik\Common;
use Piwik\Metrics\Formatter;
use Piwik\Plugin\Segment;
use Piwik\Segment\SegmentsList;
diff --git a/plugins/DevicesDetection/Columns/DeviceModel.php b/plugins/DevicesDetection/Columns/DeviceModel.php
index 54b3ab52f3..98f2c9fb18 100644
--- a/plugins/DevicesDetection/Columns/DeviceModel.php
+++ b/plugins/DevicesDetection/Columns/DeviceModel.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\DevicesDetection\Columns;
-use Piwik\Piwik;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/DevicesDetection/Columns/DeviceType.php b/plugins/DevicesDetection/Columns/DeviceType.php
index 30cdb476ba..a59974368d 100644
--- a/plugins/DevicesDetection/Columns/DeviceType.php
+++ b/plugins/DevicesDetection/Columns/DeviceType.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DevicesDetection\Columns;
use Piwik\Metrics\Formatter;
use Piwik\Tracker\Request;
-use Exception;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
use DeviceDetector\Parser\Device\AbstractDeviceParser as DeviceParser;
diff --git a/plugins/DevicesDetection/Columns/Os.php b/plugins/DevicesDetection/Columns/Os.php
index 4e5bf84418..63ed9c342e 100644
--- a/plugins/DevicesDetection/Columns/Os.php
+++ b/plugins/DevicesDetection/Columns/Os.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DevicesDetection\Columns;
use DeviceDetector\Parser\OperatingSystem;
use Piwik\Columns\DimensionSegmentFactory;
-use Piwik\Common;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\Segment;
diff --git a/plugins/DevicesDetection/Controller.php b/plugins/DevicesDetection/Controller.php
index de5424908e..d74ba9d527 100644
--- a/plugins/DevicesDetection/Controller.php
+++ b/plugins/DevicesDetection/Controller.php
@@ -10,10 +10,8 @@ namespace Piwik\Plugins\DevicesDetection;
use DeviceDetector\DeviceDetector;
use Piwik\Common;
-use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugin\ControllerAdmin;
-use Piwik\Plugin\Report;
use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
diff --git a/plugins/DevicesDetection/Reports/Base.php b/plugins/DevicesDetection/Reports/Base.php
index 482d6ba3ed..3f773c6a9d 100644
--- a/plugins/DevicesDetection/Reports/Base.php
+++ b/plugins/DevicesDetection/Reports/Base.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\DevicesDetection\Reports;
-use Piwik\Metrics;
abstract class Base extends \Piwik\Plugin\Report
{
diff --git a/plugins/DevicesDetection/Reports/GetType.php b/plugins/DevicesDetection/Reports/GetType.php
index 6ebb6b4b11..ad0dbac319 100644
--- a/plugins/DevicesDetection/Reports/GetType.php
+++ b/plugins/DevicesDetection/Reports/GetType.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\DevicesDetection\Reports;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\DevicesDetection\Columns\DeviceType;
diff --git a/plugins/DevicesDetection/Updates/1.14.php b/plugins/DevicesDetection/Updates/1.14.php
index 092f7166f9..d1bf31dcec 100644
--- a/plugins/DevicesDetection/Updates/1.14.php
+++ b/plugins/DevicesDetection/Updates/1.14.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\DevicesDetection;
-use Piwik\Common;
use Piwik\Updater;
use Piwik\Updates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/plugins/DevicesDetection/lang/nb.json b/plugins/DevicesDetection/lang/nb.json
index 1f7fbeeb06..7a48785595 100644
--- a/plugins/DevicesDetection/lang/nb.json
+++ b/plugins/DevicesDetection/lang/nb.json
@@ -19,11 +19,14 @@
"Console": "Konsoll",
"Device": "Enhet",
"DeviceBrand": "Enhetsmerke",
+ "DeviceBrandReportDocumentation": "Denne rapportene viser merkene/produsentene av enhetene dine besøkende bruker. I de fleste fall er denne infoen kun tilgjengelig for enheter som ikke er skrivebordsmaskiner.",
"DeviceBrands": "Enhetsmerker",
"DeviceDetection": "Enhetsdeteksjon",
"DeviceModel": "Enhetsmodell",
+ "DeviceModelReportDocumentation": "Denne rapporten viser enhetene dine besøkende bruker. Hver modell vises kombinert med enhetsmerket, siden noen modellnavn brukes av flere merker.",
"DeviceModels": "Enhetsmodeller",
"DeviceType": "Enhetstype",
+ "DeviceTypeReportDocumentation": "Denne rapporten viser hvilke typer enheter dine besøkende bruker. Denne rapporten vil alltid vise enhetstypene Matomo kan oppdage, selv om det ikke er noen besøk av angitt type.",
"DeviceTypes": "Enhetstyper",
"Devices": "Enheter",
"DevicesDetection": "Besøkendes enheter",
@@ -31,13 +34,17 @@
"FeedReader": "Informasjonskanalleser",
"GenericDevice": "Generisk %s",
"Library": "Bibliotek",
+ "MediaPlayer": "Mediaspiller",
"MobileApp": "Mobil-app",
"MobileDevice": "Mobilenhet",
"OperatingSystemCode": "Operativsystemskode",
"OperatingSystemFamilies": "Operativsystem-familier",
+ "OperatingSystemFamiliesReportDocumentation": "Denne rapporten viser operativsystemene dine besøkende bruker, gruppert etter operativsystemsfamilie. En operativsystemsfamilie består av forskjellige versjoner eller distribusjoner.",
"OperatingSystemFamily": "Operativsystemfamilie",
"OperatingSystemVersions": "Operativsystem-versjoner",
+ "OperatingSystemVersionsReportDocumentation": "Denne rapporten viser deg operativsystemene dine besøkere bruker. Hver versjon og distribusjon vises for seg.",
"OperatingSystems": "Operativsystem",
+ "Peripheral": "Tilleggsutstyr",
"Phablet": "Phablet",
"Pim": "Mediaspiller",
"PluginDescription": "Gir utvidet informasjon om brukers enheter, som merke (produsent), modell (enhetsversjon), enhetstype (TV, konsoll, smarttelefon, osv) og mer.",
@@ -52,6 +59,7 @@
"Wearable": "Ikledbar",
"WidgetBrowserVersionsDocumentation": "Denne rapporten inneholder informasjon om hva slags nettleser som dine besøkere bruker. Alle nettleserversjoner er opplistet separat.",
"WidgetBrowsers": "Besøkendes nettlesere",
+ "WidgetBrowsersDocumentation": "Denne rapporten inneholder info om hva slags nettleser dine besøkende brukte.",
"XVisitsFromDevices": "%1$s besøk fra %2$s enheter",
"dataTableLabelBrands": "Merke",
"dataTableLabelModels": "Modell",
diff --git a/plugins/Diagnostics/ConfigReader.php b/plugins/Diagnostics/ConfigReader.php
index db2b715278..a4383efc47 100644
--- a/plugins/Diagnostics/ConfigReader.php
+++ b/plugins/Diagnostics/ConfigReader.php
@@ -11,7 +11,6 @@ use Piwik\Development;
use Matomo\Ini\IniReader;
use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Settings as PiwikSettings;
-use Piwik\Plugin\Settings as PluginSettings;
/**
* A diagnostic report contains all the results of all the diagnostics.
diff --git a/plugins/Diagnostics/Controller.php b/plugins/Diagnostics/Controller.php
index 72b20ca39d..3cf9c6fe73 100644
--- a/plugins/Diagnostics/Controller.php
+++ b/plugins/Diagnostics/Controller.php
@@ -8,11 +8,8 @@
namespace Piwik\Plugins\Diagnostics;
-use Piwik\Config;
use Piwik\Piwik;
use Piwik\Plugin\SettingsProvider;
-use Piwik\View;
-use Piwik\Settings;
class Controller extends \Piwik\Plugin\ControllerAdmin
{
diff --git a/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php b/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php
index 19f76d093d..869fed4ccb 100644
--- a/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php
+++ b/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Diagnostics\Diagnostic;
use Piwik\Common;
use Piwik\Config;
-use Piwik\Filesystem;
use Piwik\Http;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php b/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php
index ad2520377c..6fd98d89b9 100644
--- a/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php
+++ b/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php
@@ -10,15 +10,11 @@ namespace Piwik\Plugins\Diagnostics\Diagnostic;
use Piwik\ArchiveProcessor\Rules;
use Piwik\CliMulti;
-use Piwik\Config;
use Piwik\CronArchive;
-use Piwik\Date;
-use Piwik\Http;
use Piwik\Metrics\Formatter;
use Piwik\Option;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
-use Piwik\Url;
/**
* Check if cron archiving can run through CLI.
diff --git a/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php b/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php
index 2a63437d76..98576e6810 100644
--- a/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php
+++ b/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php
@@ -2,7 +2,6 @@
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Db;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/DbReaderCheck.php b/plugins/Diagnostics/Diagnostic/DbReaderCheck.php
index faffb662ba..bd08ba3f2f 100644
--- a/plugins/Diagnostics/Diagnostic/DbReaderCheck.php
+++ b/plugins/Diagnostics/Diagnostic/DbReaderCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Db;
use Piwik\Piwik;
diff --git a/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php b/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php
index eb0bd50c92..564af1fd03 100644
--- a/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php
+++ b/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/HttpClientCheck.php b/plugins/Diagnostics/Diagnostic/HttpClientCheck.php
index 2c662b8e1b..1809712a88 100644
--- a/plugins/Diagnostics/Diagnostic/HttpClientCheck.php
+++ b/plugins/Diagnostics/Diagnostic/HttpClientCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\Filechecks;
use Piwik\Http;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php b/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php
index a77d34a4e2..00c7fad618 100644
--- a/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php
+++ b/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php b/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php
index a10541c723..1c84a9c7f4 100644
--- a/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php
+++ b/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\Http;
use Piwik\Translation\Translator;
use Piwik\Url;
diff --git a/plugins/Diagnostics/Diagnostic/ReportInformational.php b/plugins/Diagnostics/Diagnostic/ReportInformational.php
index e49d51c4aa..d9623f5f14 100644
--- a/plugins/Diagnostics/Diagnostic/ReportInformational.php
+++ b/plugins/Diagnostics/Diagnostic/ReportInformational.php
@@ -8,15 +8,11 @@
namespace Piwik\Plugins\Diagnostics\Diagnostic;
use Piwik\Access;
-use Piwik\Archive\ArchiveInvalidator;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\CronArchive;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Development;
use Piwik\Option;
-use Piwik\Plugin\Manager;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/TimezoneCheck.php b/plugins/Diagnostics/Diagnostic/TimezoneCheck.php
index f82cc28559..82fe656a20 100644
--- a/plugins/Diagnostics/Diagnostic/TimezoneCheck.php
+++ b/plugins/Diagnostics/Diagnostic/TimezoneCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php b/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php
index f6c29930ab..d0703dd079 100644
--- a/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php
+++ b/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php
@@ -13,7 +13,6 @@ use Matomo\Ini\IniReader;
use Piwik\Plugins\Diagnostics\ConfigReader;
use Piwik\Plugins\ExampleSettingsPlugin\SystemSettings;
use Piwik\Settings\FieldConfig;
-use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/Ecommerce/Categories/EcommerceOverviewSubcategory.php b/plugins/Ecommerce/Categories/EcommerceOverviewSubcategory.php
index 42806a01b1..e9fc394f54 100644
--- a/plugins/Ecommerce/Categories/EcommerceOverviewSubcategory.php
+++ b/plugins/Ecommerce/Categories/EcommerceOverviewSubcategory.php
@@ -20,6 +20,7 @@ class EcommerceOverviewSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Ecommerce_EcommerceOverviewSubcategoryHelp1') . '</p>'
- . '<p>' . Piwik::translate('Ecommerce_EcommerceOverviewSubcategoryHelp2') . '</p>';
+ . '<p>' . Piwik::translate('Ecommerce_EcommerceOverviewSubcategoryHelp2') . '</p>'
+ . '<p><a href="https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Ecommerce_EcommerceOverviewSubcategoryHelp3') . '</a></p>';;
}
}
diff --git a/plugins/Ecommerce/Columns/ProductCategory.php b/plugins/Ecommerce/Columns/ProductCategory.php
index 847993e5f5..7657690551 100644
--- a/plugins/Ecommerce/Columns/ProductCategory.php
+++ b/plugins/Ecommerce/Columns/ProductCategory.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Ecommerce\Columns;
use Piwik\Columns\Dimension;
use Piwik\Columns\DimensionSegmentFactory;
-use Piwik\Piwik;
use Piwik\Plugin\Segment;
use Piwik\Segment\SegmentsList;
diff --git a/plugins/Ecommerce/Columns/ProductViewCategory.php b/plugins/Ecommerce/Columns/ProductViewCategory.php
index e7b773e828..52459dfd05 100644
--- a/plugins/Ecommerce/Columns/ProductViewCategory.php
+++ b/plugins/Ecommerce/Columns/ProductViewCategory.php
@@ -12,8 +12,6 @@ use Piwik\Columns\DimensionSegmentFactory;
use Piwik\Columns\Discriminator;
use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Common;
-use Piwik\Db;
-use Piwik\Log;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Plugin\Manager;
@@ -22,7 +20,6 @@ use Piwik\Plugins\CustomVariables\Tracker\CustomVariablesRequestProcessor;
use Piwik\Segment\SegmentsList;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
-use Piwik\Tracker\Visitor;
class ProductViewCategory extends ActionDimension
{
diff --git a/plugins/Ecommerce/Controller.php b/plugins/Ecommerce/Controller.php
index 4f63309e79..739e051f70 100644
--- a/plugins/Ecommerce/Controller.php
+++ b/plugins/Ecommerce/Controller.php
@@ -14,7 +14,6 @@ use Piwik\FrontController;
use Piwik\Http;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugins\Goals\API as GoalsApi;
use Piwik\Plugins\Live\Live;
use Piwik\Translation\Translator;
use Piwik\View;
diff --git a/plugins/Ecommerce/Reports/BaseItem.php b/plugins/Ecommerce/Reports/BaseItem.php
index f4d4d37057..407ac4e1a1 100644
--- a/plugins/Ecommerce/Reports/BaseItem.php
+++ b/plugins/Ecommerce/Reports/BaseItem.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Ecommerce\Reports;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
@@ -18,7 +17,6 @@ use Piwik\Plugins\Goals\Columns\Metrics\AveragePrice;
use Piwik\Plugins\Goals\Columns\Metrics\AverageQuantity;
use Piwik\Plugins\Goals\Columns\Metrics\ProductConversionRate;
use Piwik\Plugins\Goals\Conversions;
-use Piwik\Plugins\Goals\Model;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
diff --git a/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php b/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php
index 19c9b79395..5b5466f422 100644
--- a/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php
+++ b/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\DaysToConversion;
diff --git a/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php b/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php
index c3bbedce43..f37a49f0ca 100644
--- a/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php
+++ b/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\DaysToConversion;
diff --git a/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php b/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php
index 19598de421..cc5cdb7be8 100644
--- a/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php
+++ b/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\VisitsUntilConversion;
diff --git a/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php b/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php
index d838f2ea0d..8ee7f42e55 100644
--- a/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php
+++ b/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\VisitsUntilConversion;
diff --git a/plugins/Ecommerce/VisitorDetails.php b/plugins/Ecommerce/VisitorDetails.php
index a5f98c9ced..b9ba8369f0 100644
--- a/plugins/Ecommerce/VisitorDetails.php
+++ b/plugins/Ecommerce/VisitorDetails.php
@@ -9,18 +9,12 @@
namespace Piwik\Plugins\Ecommerce;
use Piwik\Common;
-use Piwik\Config;
use Piwik\DataAccess\LogAggregator;
-use Piwik\Date;
-use Piwik\Db;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugins\Ecommerce\Columns\ProductCategory;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
use Piwik\Site;
-use Piwik\Tracker\Action;
use Piwik\Tracker\GoalManager;
-use Piwik\Tracker\PageUrl;
use Piwik\View;
class VisitorDetails extends VisitorDetailsAbstract
diff --git a/plugins/Ecommerce/Widgets/GetEcommerceLog.php b/plugins/Ecommerce/Widgets/GetEcommerceLog.php
index a480e7aa14..16a4d20357 100644
--- a/plugins/Ecommerce/Widgets/GetEcommerceLog.php
+++ b/plugins/Ecommerce/Widgets/GetEcommerceLog.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Ecommerce\Widgets;
use Piwik\Common;
use Piwik\Plugin\Manager;
use Piwik\Plugins\Live\Live;
-use Piwik\Plugins\Live\MeasurableSettings;
use Piwik\Widget\WidgetConfig;
use Piwik\Site;
diff --git a/plugins/Ecommerce/lang/en.json b/plugins/Ecommerce/lang/en.json
index 0dbc527612..586b514c0f 100644
--- a/plugins/Ecommerce/lang/en.json
+++ b/plugins/Ecommerce/lang/en.json
@@ -20,6 +20,7 @@
"VisitorProfileAbandonedCartSummary": "Abandoned %1$s carts including %2$s items worth a total of %3$s.",
"EcommerceOverviewSubcategoryHelp1": "The Ecommerce Overview section is the best place to get a high-level view of your online store’s performance. At a glance, you can see how many sales you’re making, how much revenue you are generating, and your website’s conversion rate.",
"EcommerceOverviewSubcategoryHelp2": "Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.",
+ "EcommerceOverviewSubcategoryHelp3": "Learn more in our Ecommerce guide here.",
"SalesSubcategoryHelp1": "This section contains an extensive collection of reports to help you analyse the different conditions that most commonly lead to sales, such as the traffic and campaign sources, user time and location and devices used to access them.",
"SalesSubcategoryHelp2": "You can also learn exactly how revenue is associated with each dimension, such as specific traffic types or tracked campaigns.",
"EcommerceLogSubcategoryHelp1": "The Ecommerce log provides granular session-level data so you can look at the full session for each user that either made a purchase or abandoned their cart. This can help you understand what users do before and after purchasing to reveal optimisation opportunities.",
diff --git a/plugins/Ecommerce/lang/nb.json b/plugins/Ecommerce/lang/nb.json
index 6ec0db0c77..d54bafb03a 100644
--- a/plugins/Ecommerce/lang/nb.json
+++ b/plugins/Ecommerce/lang/nb.json
@@ -1,7 +1,10 @@
{
"Ecommerce": {
+ "EcommerceLogSubcategoryHelp1": "E-handelsloggen gir finmasket øktnivådata, slik at du kan sjekke hele økten for hver bruker som enten kjøpte noe eller forlot handlekurven sin. Dette kan hjelpe deg å forstå hva brukere gjorde før og etter kjøp for å finne optimaliseringsmuligheter.",
+ "EcommerceLogSubcategoryHelp2": "Data på denne siden oppdateres i sanntid.",
"EcommerceOverviewSubcategoryHelp1": "Netthandelsoversiktensdelen er den beste plassen å få et overblikk over ytelsen til nettbutikken din. Du kan se hvor mange salg du har, hvor mye omsetning du generer, og konverteringsraten for nettsiden din.",
"EcommerceOverviewSubcategoryHelp2": "Klikk på en individuell måling i sparkline-diagrammet for å fokusere på den i det fulle utviklingsdiagrammet.",
+ "LifeTimeValue": "Livstidsverdi for e-handel",
"LifeTimeValueDescription": "Total netthandelsomsetning tilknyttet denne kunden for alle besøk: Summen av omsetning for alle netthandelsbestillinger for besøks-ID %s.",
"NumberOfItems": "Antall artikler i handlekurv",
"Order": "Bestilling",
@@ -13,6 +16,7 @@
"Sales": "Salg",
"SalesAdjective": "Salg %s",
"SalesBy": "Salg etter %s",
+ "SalesSubcategoryHelp1": "Denne delen inneholder en omfattende samling av rapporter som hjelper deg å analysere forskjellige betingelser som oftest leder til salg, som f.eks. trafikk og kampanjekilder, brukertid og posisjon, samt enheten brukt til å finne dem.",
"SalesSubcategoryHelp2": "Du kan også lære akkurat hvordan omsetning er tilknyttet alle dimensjoner, som spesifikke trafikktyper eller sporede kampanjer.",
"ViewedProductCategory": "Vist produktkategori",
"ViewedProductName": "Besøkt produktnavn",
diff --git a/plugins/Events/API.php b/plugins/Events/API.php
index 6f48418f44..74519953a3 100644
--- a/plugins/Events/API.php
+++ b/plugins/Events/API.php
@@ -9,9 +9,6 @@
namespace Piwik\Plugins\Events;
use Piwik\Archive;
-use Piwik\DataTable\Row;
-use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Piwik;
/**
diff --git a/plugins/Events/Archiver.php b/plugins/Events/Archiver.php
index b42762c6eb..31d6cd9146 100644
--- a/plugins/Events/Archiver.php
+++ b/plugins/Events/Archiver.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Events;
use Piwik\Config;
use Piwik\DataArray;
-use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\RankingQuery;
diff --git a/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php b/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php
index 687e830e03..d242959e88 100644
--- a/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php
+++ b/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Events\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Piwik;
use Piwik\Plugins\Events\Archiver;
diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php
index ce36844e85..c500367996 100644
--- a/plugins/Events/Events.php
+++ b/plugins/Events/Events.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Events;
use Piwik\Common;
use Piwik\DataTable;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugin\ReportsProvider;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable\AllColumns;
diff --git a/plugins/Events/Widgets/EventsByDimension.php b/plugins/Events/Widgets/EventsByDimension.php
index 17658da539..c99cfb318d 100644
--- a/plugins/Events/Widgets/EventsByDimension.php
+++ b/plugins/Events/Widgets/EventsByDimension.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Events\Widgets;
use Piwik\Plugins\CoreHome\CoreHome;
-use Piwik\Translation\Translator;
use Piwik\Widget\WidgetContainerConfig;
class EventsByDimension extends WidgetContainerConfig
diff --git a/plugins/ExampleLogTables/ExampleLogTables.php b/plugins/ExampleLogTables/ExampleLogTables.php
index ed7ada493f..2990c06ad1 100644
--- a/plugins/ExampleLogTables/ExampleLogTables.php
+++ b/plugins/ExampleLogTables/ExampleLogTables.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\ExampleLogTables;
use Piwik\Common;
-use Piwik\Plugins\ExampleLogTables\Dao\CustomUserLog;
-use Piwik\Plugins\ExampleLogTables\Dao\CustomGroupLog;
class ExampleLogTables extends \Piwik\Plugin
{
diff --git a/plugins/ExamplePlugin/API.php b/plugins/ExamplePlugin/API.php
index a99c45788e..6115273033 100644
--- a/plugins/ExamplePlugin/API.php
+++ b/plugins/ExamplePlugin/API.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\ExamplePlugin;
use Piwik\Archive;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\Piwik;
use Piwik\Segment;
diff --git a/plugins/ExamplePlugin/Archiver.php b/plugins/ExamplePlugin/Archiver.php
index b9b9bc4ab1..8f3f453f99 100644
--- a/plugins/ExamplePlugin/Archiver.php
+++ b/plugins/ExamplePlugin/Archiver.php
@@ -9,11 +9,9 @@
namespace Piwik\Plugins\ExamplePlugin;
use Piwik\ArchiveProcessor;
-use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Option;
use Piwik\Sequence;
-use Psr\Log\LoggerInterface;
/**
* Class Archiver
diff --git a/plugins/ExamplePlugin/Controller.php b/plugins/ExamplePlugin/Controller.php
index 4b8dac40e6..34a80861d4 100644
--- a/plugins/ExamplePlugin/Controller.php
+++ b/plugins/ExamplePlugin/Controller.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\ExamplePlugin;
-use Piwik\View;
/**
* A controller lets you for example create a page that can be added to a menu. For more information read our guide
diff --git a/plugins/ExamplePlugin/Widgets/MyExampleWidget.php b/plugins/ExamplePlugin/Widgets/MyExampleWidget.php
index c9b70b8187..47593df280 100644
--- a/plugins/ExamplePlugin/Widgets/MyExampleWidget.php
+++ b/plugins/ExamplePlugin/Widgets/MyExampleWidget.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\ExamplePlugin\Widgets;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
/**
* This class allows you to add your own widget to the Piwik platform. In case you want to remove widgets from another
diff --git a/plugins/ExampleReport/Reports/GetExampleReport.php b/plugins/ExampleReport/Reports/GetExampleReport.php
index bbf77e0cb3..04895b21d6 100644
--- a/plugins/ExampleReport/Reports/GetExampleReport.php
+++ b/plugins/ExampleReport/Reports/GetExampleReport.php
@@ -9,10 +9,8 @@
namespace Piwik\Plugins\ExampleReport\Reports;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\ExitPageUrl;
-use Piwik\View;
/**
* This class defines a new report.
diff --git a/plugins/ExampleTracker/Columns/ExampleActionDimension.php b/plugins/ExampleTracker/Columns/ExampleActionDimension.php
index 42884dc62d..a4b5a1132f 100644
--- a/plugins/ExampleTracker/Columns/ExampleActionDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleActionDimension.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\ActionPageview;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/ExampleTracker/Columns/ExampleConversionDimension.php b/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
index e4587db420..091893a426 100644
--- a/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ConversionDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/ExampleTracker/Columns/ExampleDimension.php b/plugins/ExampleTracker/Columns/ExampleDimension.php
index cb0838874b..80304f8e0d 100644
--- a/plugins/ExampleTracker/Columns/ExampleDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleDimension.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
/**
* This example dimension only defines a name and does not track any data. It's supposed to be only used in reports.
diff --git a/plugins/ExampleTracker/Columns/ExampleVisitDimension.php b/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
index f05e9084b1..ede1d65ee5 100644
--- a/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/ExampleUI/Controller.php b/plugins/ExampleUI/Controller.php
index 3761812f05..017ed01769 100644
--- a/plugins/ExampleUI/Controller.php
+++ b/plugins/ExampleUI/Controller.php
@@ -8,11 +8,8 @@
*/
namespace Piwik\Plugins\ExampleUI;
-use Piwik\Common;
use Piwik\Notification;
-use Piwik\Piwik;
use Piwik\View;
-use Piwik\ViewDataTable\Factory as ViewDataTableFactory;
/**
*/
diff --git a/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php b/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php
index fbee4427cb..9218791f03 100644
--- a/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php
+++ b/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ExampleUI\Reports;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Cloud;
diff --git a/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php b/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php
index a2b9aeb3ee..899b59a717 100644
--- a/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php
+++ b/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php
@@ -10,15 +10,11 @@ namespace Piwik\Plugins\ExampleUI\Reports;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Bar;
use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Pie;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\Report\ReportWidgetFactory;
-use Piwik\View;
use Piwik\Widget\WidgetsList;
/**
diff --git a/plugins/ExampleVisualization/Visualizations/SimpleTable.php b/plugins/ExampleVisualization/Visualizations/SimpleTable.php
index d71b46ece4..26f6625812 100644
--- a/plugins/ExampleVisualization/Visualizations/SimpleTable.php
+++ b/plugins/ExampleVisualization/Visualizations/SimpleTable.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ExampleVisualization\Visualizations;
-use Piwik\DataTable;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugin\Visualization;
diff --git a/plugins/ExampleVue/Widgets/GetExampleVue.php b/plugins/ExampleVue/Widgets/GetExampleVue.php
index ef3ecfed8f..bb112eaed4 100644
--- a/plugins/ExampleVue/Widgets/GetExampleVue.php
+++ b/plugins/ExampleVue/Widgets/GetExampleVue.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\ExampleVue\Widgets;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
class GetExampleVue extends Widget
{
diff --git a/plugins/Feedback/API.php b/plugins/Feedback/API.php
index 26dde1ce19..8eefb69958 100644
--- a/plugins/Feedback/API.php
+++ b/plugins/Feedback/API.php
@@ -12,7 +12,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\DataTable\Renderer\Json;
use Piwik\Date;
-use Piwik\IP;
use Piwik\Mail;
use Piwik\Piwik;
use Piwik\SettingsServer;
diff --git a/plugins/Feedback/Controller.php b/plugins/Feedback/Controller.php
index 9464f855f1..f98504d302 100644
--- a/plugins/Feedback/Controller.php
+++ b/plugins/Feedback/Controller.php
@@ -8,13 +8,9 @@
*/
namespace Piwik\Plugins\Feedback;
-use Piwik\Date;
use Piwik\View;
-use Piwik\Piwik;
-use Piwik\Common;
use Piwik\Version;
use Piwik\Container\StaticContainer;
-use Piwik\DataTable\Renderer\Json;
class Controller extends \Piwik\Plugin\Controller
{
diff --git a/plugins/Feedback/Feedback.php b/plugins/Feedback/Feedback.php
index 9a75c51c92..6764c29f42 100644
--- a/plugins/Feedback/Feedback.php
+++ b/plugins/Feedback/Feedback.php
@@ -9,13 +9,9 @@
namespace Piwik\Plugins\Feedback;
use Piwik\Date;
-use Piwik\Plugins\UsersManager\API as APIUsersManager;
-use Piwik\Plugins\UsersManager\UsersManager;
-use Piwik\Site;
use Piwik\View;
use Piwik\Piwik;
use Piwik\Common;
-use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugins\Feedback\FeedbackReminder;
/**
diff --git a/plugins/Feedback/lang/nb.json b/plugins/Feedback/lang/nb.json
index 10ea86263f..380cc2461b 100644
--- a/plugins/Feedback/lang/nb.json
+++ b/plugins/Feedback/lang/nb.json
@@ -1,23 +1,33 @@
{
"Feedback": {
+ "AppreciateFeedback": "Din tilbakemelding verdsettes",
"CommunityHelp": "Hjelp fra Matomo-samfunnet",
"ContactUs": "Kontakt oss",
"DoYouHaveBugReportOrFeatureRequest": "Har du en feil å rapportere eller ny funksjonalitet du ønsker deg?",
"FAQs": "O-S-S",
"FeedbackTitle": "Hjelp oss å forbedre Matomo",
+ "FormNotEnoughFeedbackText": "Ikke glem å dele av deg din tilbakemelding nedenfor.",
"Forums": "Forum",
"HowCanWeHelp": "Hvordan kan vi hjelpe deg?",
"HowToCreateTicket": "Vennligst les anbefalingene for å skrive gode %1$sbug-rapporter%2$s eller %3$sfunksjonalitetsønsker%4$s. Så registrerer du deg eller logger inn i %5$svår issue tracker%6$s og klikker på %7$snew issue%8$s.",
"IWantTo": "Jeg vil:",
"LearnWaysToParticipate": "Lær om alle måtene du kan %1$s bidra%2$s",
"ManuallySendEmailTo": "Send meldingen manuelt til",
+ "MessageBodyValidationError": "Brødteksten er for kort (minimum 10 tegn).",
"NeverAskMeAgain": "Aldri spør meg igjen",
+ "NotTrackingVisits": "Matomo sporerer ingen av besøkene",
"PluginDescription": "Send din tilbakemelding til Matomo-laget. Del dine idéer og forslag til Matomo for å gjøre det til den beste analyseplattformen i verden.",
"PopularHelpTopics": "Populære hjelpeemner",
"PrivacyClaim": "Matomo respekterer ditt %1$spersonvern%2$s og gir deg full datakontroll.",
"ProfessionalHelp": "Profesjonell hjelp",
+ "ProfessionalServicesEmailAlerts": "E-postvarsling om sikkerhetsutgaver av Matomo",
"ProfessionalServicesOfferIntro": "Hvilke tjenester kan du gjøre bruk av?",
"ProfessionalServicesTraining": "Eksklusiv tilgang til Matomo-treningsvideoer",
+ "PurgeOldData": "Jeg vil fjerne noe gammel data",
+ "Question0": "Hva er dine største problemer med Matomo, og hvorfor?",
+ "Question1": "Hva er den tingen du ville forbedret i Matomo, og hvorfor?",
+ "Question2": "Hva er den funksjonen du savner mest i Matomo, og hvorfor?",
+ "Question3": "Hva er hovedmålet ditt i å bruke Matomo?",
"RateFeatureConfigurable": "Konfigurerbar",
"RateFeatureDislikeAddMissingFeatures": "Legg til manglende funksjoner?",
"RateFeatureDislikeFixBugs": "Fiksing av feil",
@@ -46,13 +56,19 @@
"ReferBannerTitle": "Har du tro på Matomo?",
"ReferMatomo": "Henvis Matomo",
"RemindMeLater": "Minn meg på dette senere",
+ "RemoveOtherLabel": "Jeg vil se mine «Andre» data",
+ "ReviewMatomoTitle": "Liker du Matomo?",
"SearchHelpResources": "Søk i matomo.org-hjelperessurser",
"SendFeedback": "Send tilbakemelding",
"ThankYou": "Takk for at du hjelper oss å lage Matomo bedre!",
"ThankYouForSpreading": "Takk for at du bruker jungeltelegrafen og gjør nettet tryggere",
"ThankYouHeart": "Takk for at du hjelper til å gjøre Matomo bedre. %1$s",
"TopLinkTooltip": "Fortell oss hva du synes eller be om profesjonell støtte.",
+ "TrackMultipleSites": "Jeg vil spore flere sider eller underdomener",
"UserGuides": "Brukerveiledninger",
+ "ViewAnswersToFAQ": "Vis svar på %1$softe stilte spørsmål%2$s",
+ "ViewUserGuides": "Lær mer om hvordan du setter opp Matomo og hvordan du effektivt analyserer din data med %1$sbrukerveiledningen%2$s",
+ "VisitTheForums": "Besøk %1$s forumet%2$s og få hjelp fra gemenskapen av Matomo-brukere",
"WontShowAgain": "Denne meldingen vil ikke bli vist igjen."
}
}
diff --git a/plugins/Feedback/stylesheets/feedback.less b/plugins/Feedback/stylesheets/feedback.less
index 5f89291d03..2a80d4b71d 100644
--- a/plugins/Feedback/stylesheets/feedback.less
+++ b/plugins/Feedback/stylesheets/feedback.less
@@ -9,7 +9,7 @@
line-height: 18px;
}
- p, h4 {
+ p {
font-size: 13px;
padding-bottom: 4px;
}
@@ -20,6 +20,8 @@
h4 {
font-weight: bold;
+ font-size: 18px;
+ padding-bottom: 4px;
}
.piwik-donate-call {
diff --git a/plugins/Feedback/tests/Integration/FeedbackTest.php b/plugins/Feedback/tests/Integration/FeedbackTest.php
index 4f8fffba20..f86ea35098 100644
--- a/plugins/Feedback/tests/Integration/FeedbackTest.php
+++ b/plugins/Feedback/tests/Integration/FeedbackTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Feedback\tests\Unit;
-use CpChart\Chart\Data;
use Piwik\Date;
use Piwik\Option;
use Piwik\Piwik;
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png b/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png
index 3d8216ef4f..55572d1eea 100644
--- a/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png
+++ b/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c8bc489466627e78d4bcd1de11524f306528edac2f5d1035ddf98b50628f3249
-size 243794
+oid sha256:c51266f75a0cc4ca62762f63b71587a2c2d949c1ad0aa88347b95459103786b5
+size 245813
diff --git a/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php b/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
index 238782a0f0..39ba487065 100644
--- a/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
+++ b/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
@@ -12,13 +12,11 @@ use GeoIp2\Database\Reader;
use GeoIp2\Exception\AddressNotFoundException;
use MaxMind\Db\Reader\InvalidDatabaseException;
use Piwik\Date;
-use Piwik\Common;
use Piwik\Log;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\GeoIp2\GeoIP2AutoUpdater;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
-use Piwik\Plugins\Marketplace\Api\Exception;
use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\SettingsPiwik;
use Piwik\View;
diff --git a/plugins/Goals/Categories/GoalsOverviewSubcategory.php b/plugins/Goals/Categories/GoalsOverviewSubcategory.php
index e36954f6a3..0fb670ed38 100644
--- a/plugins/Goals/Categories/GoalsOverviewSubcategory.php
+++ b/plugins/Goals/Categories/GoalsOverviewSubcategory.php
@@ -20,6 +20,7 @@ class GoalsOverviewSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Goals_GoalsOverviewSubcategoryHelp1') . '</p>'
- . '<p>' . Piwik::translate('Goals_GoalsOverviewSubcategoryHelp2') . '</p>';
+ . '<p>' . Piwik::translate('Goals_GoalsOverviewSubcategoryHelp2') . '</p>'
+ . '<p><a href="https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Goals_ManageGoalsSubcategoryHelp2') . '</a></p>';
}
}
diff --git a/plugins/Goals/Columns/DaysToConversion.php b/plugins/Goals/Columns/DaysToConversion.php
index 9be44fcd11..64f2228aac 100644
--- a/plugins/Goals/Columns/DaysToConversion.php
+++ b/plugins/Goals/Columns/DaysToConversion.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Goals\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class DaysToConversion extends Dimension
{
diff --git a/plugins/Goals/Columns/VisitsUntilConversion.php b/plugins/Goals/Columns/VisitsUntilConversion.php
index e1c883c305..2fbdbd911c 100644
--- a/plugins/Goals/Columns/VisitsUntilConversion.php
+++ b/plugins/Goals/Columns/VisitsUntilConversion.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Goals\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class VisitsUntilConversion extends Dimension
{
diff --git a/plugins/Goals/Controller.php b/plugins/Goals/Controller.php
index 64bd8ea626..96443ea348 100644
--- a/plugins/Goals/Controller.php
+++ b/plugins/Goals/Controller.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Goals;
-use Piwik\API\Proxy;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
@@ -17,7 +16,6 @@ use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\FrontController;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\Plugins\Live\Live;
use Piwik\Plugins\Referrers\API as APIReferrers;
@@ -80,6 +78,7 @@ class Controller extends \Piwik\Plugin\Controller
$this->setGeneralVariablesView($view);
$this->setEditGoalsViewVariables($view);
$this->setGoalOptions($view);
+ $this->execAndSetResultsForTwigEvents($view);
return $view->render();
}
@@ -125,6 +124,7 @@ class Controller extends \Piwik\Plugin\Controller
$this->setGeneralVariablesView($view);
$this->setGoalOptions($view);
$view->onlyShowAddNewGoal = true;
+ $this->execAndSetResultsForTwigEvents($view);
return $view->render();
}
@@ -134,9 +134,35 @@ class Controller extends \Piwik\Plugin\Controller
$this->setGeneralVariablesView($view);
$this->setEditGoalsViewVariables($view);
$this->setGoalOptions($view);
+ $this->execAndSetResultsForTwigEvents($view);
return $view->render();
}
+ private function execAndSetResultsForTwigEvents(View $view)
+ {
+ if (empty($view->onlyShowAddGoal)) {
+ $beforeGoalListActionsBody = [];
+ foreach ($view->goals as $goal) {
+ $str = '';
+ Piwik::postEvent('Template.beforeGoalListActionsBody', [&$str, $goal]);
+
+ $beforeGoalListActionsBody[$goal['idgoal']] = $str;
+ }
+ $view->beforeGoalListActionsBodyEventResult = $beforeGoalListActionsBody;
+
+ $str = '';
+ Piwik::postEvent('Template.beforeGoalListActionsHead', [&$str]);
+ $view->beforeGoalListActionsHead = $str;
+ }
+
+ if (!empty($view->userCanEditGoals)) {
+ $str = '';
+ Piwik::postEvent('Template.endGoalEditTable', [&$str]);
+
+ $view->endEditTable = $str;
+ }
+ }
+
public function hasConversions()
{
$this->checkSitePermission();
@@ -388,6 +414,7 @@ class Controller extends \Piwik\Plugin\Controller
if (isset($goal['pattern'])) {
$goal['pattern'] = Common::unsanitizeInputValue($goal['pattern']);
}
+ $goal['revenue_pretty'] = \Piwik\piwik_format_money($goal['revenue'], $this->idSite);
}
$view->goals = $goals;
diff --git a/plugins/Goals/Conversions.php b/plugins/Goals/Conversions.php
index 27c8352b11..a954174863 100644
--- a/plugins/Goals/Conversions.php
+++ b/plugins/Goals/Conversions.php
@@ -9,9 +9,6 @@
namespace Piwik\Plugins\Goals;
use Piwik\API\Request;
-use Piwik\Cache;
-use Piwik\Common;
-use Piwik\Db;
class Conversions
{
diff --git a/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php b/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php
index ae2c1669c7..83b9317429 100644
--- a/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php
+++ b/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Goals\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
use Piwik\DataTable;
-use Piwik\Metrics;
/**
* Appends a string to each column name in each row of a table. Please note this filter even appends the name to a
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index 18d8056dac..8703e6c260 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -18,7 +18,6 @@ use Piwik\Plugin\ArchivedMetric;
use Piwik\Plugin\ComputedMetric;
use Piwik\Plugin\ReportsProvider;
use Piwik\Plugins\CoreHome\SystemSummary;
-use Piwik\Plugins\Goals\Reports\BasePages;
use Piwik\Tracker\GoalManager;
use Piwik\Category\Subcategory;
@@ -95,7 +94,6 @@ class Goals extends \Piwik\Plugin
public function registerEvents()
{
$hooks = array(
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'Tracker.Cache.getSiteAttributes' => 'fetchGoalsFromDb',
'API.getReportMetadata.end' => 'getReportMetadataEnd',
@@ -365,12 +363,6 @@ class Goals extends \Piwik\Plugin
return $reportsWithGoals;
}
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/Goals/angularjs/manage-goals/manage-goals.controller.js";
- $jsFiles[] = "plugins/Goals/angularjs/manage-goals/manage-goals.directive.js";
- }
-
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/Goals/stylesheets/goals.css";
@@ -388,13 +380,52 @@ class Goals extends \Piwik\Plugin
$translationKeys[] = 'Goals_AddNewGoal';
$translationKeys[] = 'Goals_UpdateGoal';
$translationKeys[] = 'Goals_DeleteGoalConfirm';
- $translationKeys[] = 'Goals_UpdateGoal';
- $translationKeys[] = 'Goals_DeleteGoalConfirm';
$translationKeys[] = 'Goals_Ecommerce';
$translationKeys[] = 'Goals_Optional';
$translationKeys[] = 'Goals_TimeInMinutes';
$translationKeys[] = 'Goals_Pattern';
$translationKeys[] = 'Goals_ClickToViewThisGoal';
+ $translationKeys[] = 'Goals_ManageGoals';
+ $translationKeys[] = 'Goals_GoalName';
+ $translationKeys[] = 'Goals_GoalIsTriggeredWhen';
+ $translationKeys[] = 'Goals_ThereIsNoGoalToManage';
+ $translationKeys[] = 'Goals_ManuallyTriggeredUsingJavascriptFunction';
+ $translationKeys[] = 'Goals_VisitUrl';
+ $translationKeys[] = 'Goals_ClickOutlink';
+ $translationKeys[] = 'Goals_SendEvent';
+ $translationKeys[] = 'Goals_GoalIsTriggered';
+ $translationKeys[] = 'Goals_WhereThe';
+ $translationKeys[] = 'Goals_URL';
+ $translationKeys[] = 'General_ForExampleShort';
+ $translationKeys[] = 'Goals_Contains';
+ $translationKeys[] = 'Goals_IsExactly';
+ $translationKeys[] = 'Goals_MatchesExpression';
+ $translationKeys[] = 'Goals_AllowMultipleConversionsPerVisit';
+ $translationKeys[] = 'Goals_HelpOneConversionPerVisit';
+ $translationKeys[] = 'Goals_DefaultRevenueHelp';
+ $translationKeys[] = 'Goals_DefaultRevenueLabel';
+ $translationKeys[] = 'Goals_GoalRevenue';
+ $translationKeys[] = 'Goals_Filename';
+ $translationKeys[] = 'Goals_ExternalWebsiteUrl';
+ $translationKeys[] = 'Goals_VisitDuration';
+ $translationKeys[] = 'Goals_AtLeastMinutes';
+ $translationKeys[] = 'Goals_VisitPageTitle';
+ $translationKeys[] = 'Intl_NMinutes';
+ $translationKeys[] = 'Goals_PageTitle';
+ $translationKeys[] = 'Goals_UseEventValueAsRevenue';
+ $translationKeys[] = 'Goals_EventValueAsRevenueHelp';
+ $translationKeys[] = 'Goals_EventValueAsRevenueHelp2';
+ $translationKeys[] = 'Events_EventCategory';
+ $translationKeys[] = 'Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore';
+ $translationKeys[] = 'Goals_LearnMoreAboutGoalTrackingDocumentation';
+ $translationKeys[] = 'Goals_EcommerceReports';
+ $translationKeys[] = 'SitesManager_WebsitesManagement';
+ $translationKeys[] = 'Goals_CaseSensitive';
+ $translationKeys[] = 'Goals_Download';
+ $translationKeys[] = 'Events_EventAction';
+ $translationKeys[] = 'Events_EventCategory';
+ $translationKeys[] = 'Events_EventName';
+ $translationKeys[] = 'Goals_YouCanEnableEcommerceReports';
$translationKeys[] = 'Goals_CategoryTextGeneral_Actions';
}
}
diff --git a/plugins/Goals/Reports/Base.php b/plugins/Goals/Reports/Base.php
index 969b4f64c4..24e6ecc725 100644
--- a/plugins/Goals/Reports/Base.php
+++ b/plugins/Goals/Reports/Base.php
@@ -11,8 +11,6 @@ namespace Piwik\Plugins\Goals\Reports;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Goals\API;
-use Piwik\Plugins\Goals\Goals;
abstract class Base extends \Piwik\Plugin\Report
{
diff --git a/plugins/Goals/Reports/Get.php b/plugins/Goals/Reports/Get.php
index 201eeae186..5d0f3b1411 100644
--- a/plugins/Goals/Reports/Get.php
+++ b/plugins/Goals/Reports/Get.php
@@ -11,14 +11,12 @@ namespace Piwik\Plugins\Goals\Reports;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\Metrics\Formatter;
use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
-use Piwik\Plugins\Goals\API;
use Piwik\Plugins\Goals\Goals;
use Piwik\Plugins\Goals\Pages;
use Piwik\Report\ReportWidgetFactory;
diff --git a/plugins/Goals/Updates/3.0.0-b1.php b/plugins/Goals/Updates/3.0.0-b1.php
index 42c7d32ad9..55d2fbb626 100644
--- a/plugins/Goals/Updates/3.0.0-b1.php
+++ b/plugins/Goals/Updates/3.0.0-b1.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Goals;
-use Piwik\Common;
use Piwik\Updater;
use Piwik\Updates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/plugins/Goals/Visualizations/Goals.php b/plugins/Goals/Visualizations/Goals.php
index da35a0b553..364dace4c0 100644
--- a/plugins/Goals/Visualizations/Goals.php
+++ b/plugins/Goals/Visualizations/Goals.php
@@ -8,16 +8,12 @@
namespace Piwik\Plugins\Goals\Visualizations;
-use Piwik\API\DataTablePostProcessor;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Site;
-use Piwik\View;
require_once PIWIK_INCLUDE_PATH . '/core/Twig.php';
diff --git a/plugins/Goals/Widgets/AddNewGoal.php b/plugins/Goals/Widgets/AddNewGoal.php
index 65245b63d4..d84cce1240 100644
--- a/plugins/Goals/Widgets/AddNewGoal.php
+++ b/plugins/Goals/Widgets/AddNewGoal.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\Goals\Widgets;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Piwik;
-use Piwik\Plugins\Goals\API;
use Piwik\Widget\WidgetConfig;
class AddNewGoal extends \Piwik\Widget\Widget
diff --git a/plugins/Goals/Widgets/EditGoals.php b/plugins/Goals/Widgets/EditGoals.php
index a3f892cd1e..10fcc5dbdb 100644
--- a/plugins/Goals/Widgets/EditGoals.php
+++ b/plugins/Goals/Widgets/EditGoals.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\Goals\Widgets;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Piwik;
-use Piwik\Plugins\Goals\API;
use Piwik\Widget\WidgetConfig;
class EditGoals extends \Piwik\Widget\Widget
diff --git a/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js b/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
deleted file mode 100644
index 1b8ecff484..0000000000
--- a/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
+++ /dev/null
@@ -1,215 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('ManageGoalsController', ManageGoalsController);
-
- ManageGoalsController.$inject = ['piwik', 'piwikApi', '$timeout', '$location', 'reportingMenuModel', '$rootScope'];
-
- function ManageGoalsController(piwik, piwikApi, $timeout, $location, reportingMenuModel, $rootScope) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
-
- if (!this.goal) {
- this.goal = {};
- }
- this.showEditGoal = false;
- this.showGoalList = true;
-
- function scrollToTop()
- {
- $timeout(function () {
- piwik.helper.lazyScrollTo(".pageWrap", 200);
- });
- }
-
- function initGoalForm(goalMethodAPI, submitText, goalName, description, matchAttribute, pattern, patternType, caseSensitive, revenue, allowMultiple, useEventValueAsRevenue, goalId) {
-
- $rootScope.$emit('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
-
- self.goal = {};
- self.goal.name = goalName;
- self.goal.description = description;
-
- if (matchAttribute == 'manually') {
- self.goal.triggerType = 'manually';
- matchAttribute = 'url';
- } else {
- self.goal.triggerType = 'visitors';
- }
-
- if (0 === matchAttribute.indexOf('event')) {
- self.goal.eventType = matchAttribute;
- matchAttribute = 'event';
- } else {
- self.goal.eventType = 'event_category';
- }
-
- self.goal.matchAttribute = matchAttribute;
- self.goal.allowMultiple = allowMultiple == true ? "1" : "0";
- self.goal.patternType = patternType;
- self.goal.pattern = pattern;
- self.goal.caseSensitive = caseSensitive;
- self.goal.revenue = revenue;
- self.goal.apiMethod = goalMethodAPI;
- self.goal.useEventValueAsRevenue = useEventValueAsRevenue;
-
- self.goal.submitText = submitText;
- self.goal.goalId = goalId;
-
- $timeout(function () {
- var text = _pk_translate('Goals_AddNewGoal');
- if (goalId) {
- text = _pk_translate('Goals_UpdateGoal')
- }
-
- $('.addEditGoal .card-title').text(text);
- });
- }
-
- this.isManuallyTriggered = function () {
- return this.goal.triggerType == 'manually';
- }
-
- this.save = function () {
-
- var parameters = {};
- parameters.name = encodeURIComponent(this.goal.name);
- parameters.description = encodeURIComponent(this.goal.description);
-
- if (this.isManuallyTriggered()) {
- parameters.matchAttribute = 'manually';
- parameters.patternType = 'regex';
- parameters.pattern = '.*';
- parameters.caseSensitive = 0;
- } else {
- parameters.matchAttribute = this.goal.matchAttribute;
-
- if (parameters.matchAttribute === 'event') {
- parameters.matchAttribute = this.goal.eventType;
- }
-
- parameters.patternType = this.goal.patternType;
- parameters.pattern = encodeURIComponent(this.goal.pattern);
- parameters.caseSensitive = this.goal.caseSensitive == true ? 1 : 0;
- }
- parameters.revenue = this.goal.revenue || 0;
- parameters.allowMultipleConversionsPerVisit = this.goal.allowMultiple == true ? 1 : 0;
- parameters.useEventValueAsRevenue = this.goal.useEventValueAsRevenue == true ? 1 : 0;
-
- parameters.idGoal = this.goal.goalId;
- parameters.method = this.goal.apiMethod;
-
- var isCreate = parameters.method === 'Goals.addGoal';
- var isUpdate = parameters.method === 'Goals.updateGoal';
-
- if (isUpdate) {
- $rootScope.$emit('Goals.beforeUpdateGoal', parameters, piwikApi);
- } else if (isCreate) {
- $rootScope.$emit('Goals.beforeAddGoal', parameters, piwikApi);
- }
-
- if (parameters && 'undefined' !== typeof parameters.cancelRequest && parameters.cancelRequest) {
- return;
- }
-
- this.isLoading = true;
-
- piwikApi.fetch(parameters).then(function () {
- var search = $location.search();
- if (search
- && search.subcategory
- && search.subcategory == 'Goals_AddNewGoal'
- && piwik.helper.isAngularRenderingThePage()) {
- // when adding a goal for the first time we need to load manage goals page afterwards
- reportingMenuModel.reloadMenuItems().then(function () {
- $location.search('subcategory', 'Goals_ManageGoals');
- self.isLoading = false;
- });
- } else {
- location.reload();
- }
- }, function () {
- scrollToTop();
- self.isLoading = false;
- });
- };
-
- this.changedTriggerType = function () {
- if (!this.isManuallyTriggered() && !this.goal.patternType) {
- this.goal.patternType = 'contains';
- }
- }
-
- this.showListOfReports = function (shouldScrollToTop) {
- $rootScope.$emit('Goals.cancelForm');
-
- this.showGoalList = true;
- this.showEditGoal = false;
- scrollToTop();
- };
-
- this.showAddEditForm = function () {
- this.showGoalList = false;
- this.showEditGoal = true;
- };
-
- this.createGoal = function () {
-
- var parameters = {isAllowed: true};
- $rootScope.$emit('Goals.initAddGoal', parameters);
- if (parameters && !parameters.isAllowed) {
- return;
- }
-
- this.showAddEditForm();
- initGoalForm('Goals.addGoal', _pk_translate('Goals_AddGoal'), '', '', 'url', '', 'contains', /*caseSensitive = */false, '', /*allowMultiple = */ false, /*useEventValueAsRevenue = */ false, 0);
- scrollToTop();
- };
-
- this.editGoal = function (goalId) {
- this.showAddEditForm();
- var goal = piwik.goals[goalId];
- initGoalForm("Goals.updateGoal", _pk_translate('Goals_UpdateGoal'), goal.name, goal.description, goal.match_attribute, goal.pattern, goal.pattern_type, (goal.case_sensitive != '0'), goal.revenue, goal.allow_multiple, (goal.event_value_as_revenue != '0'), goalId);
- scrollToTop();
- };
-
- this.deleteGoal = function (goalId) {
- var goal = piwik.goals[goalId];
-
- $('#confirm').find('h2').text(sprintf(_pk_translate('Goals_DeleteGoalConfirm'), '"' + goal.name + '"'));
- piwikHelper.modalConfirm('#confirm', {yes: function () {
- self.isLoading = true;
-
- piwikApi.fetch({idGoal: goalId, method: 'Goals.deleteGoal'}).then(function () {
- location.reload();
- }, function () {
- self.isLoading = false;
- });
-
- }});
- };
-
- this.isMatchAttributeNumeric = function () {
- return ['visit_duration'].indexOf(this.goal.matchAttribute) > -1;
- };
-
- this.initPatternType = function () {
- if (this.isMatchAttributeNumeric()) {
- this.goal.patternType = 'greater_than';
- } else {
- this.goal.patternType = 'contains';
- }
- };
-
- this.getPatternFieldLabel = function () {
- return this.goal.matchAttribute === 'visit_duration' ? _pk_translate('Goals_TimeInMinutes') : _pk_translate('Goals_Pattern');
- };
-
- this.showListOfReports(false);
- }
-})();
diff --git a/plugins/Goals/angularjs/manage-goals/manage-goals.directive.js b/plugins/Goals/angularjs/manage-goals/manage-goals.directive.js
deleted file mode 100644
index 91b5e6b4b6..0000000000
--- a/plugins/Goals/angularjs/manage-goals/manage-goals.directive.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-
-/**
- * Usage:
- * <div piwik-manage-goals>
- */
-(function () {
- angular.module('piwikApp').directive('piwikManageGoals', piwikManageGoals);
-
- piwikManageGoals.$inject = ['piwik'];
-
- function piwikManageGoals(piwik){
-
- return {
- restrict: 'A',
- priority: 10,
- controller: 'ManageGoalsController',
- controllerAs: 'manageGoals',
- compile: function (element, attrs) {
-
- return function (scope, element, attrs, controller) {
- if (attrs.showAddGoal) {
- controller.createGoal();
- } else if (attrs.showGoal) {
- controller.editGoal(attrs.showGoal);
- }
-
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/Goals/templates/_addEditGoal.twig b/plugins/Goals/templates/_addEditGoal.twig
index 16be9c2424..ab1a57acf6 100644
--- a/plugins/Goals/templates/_addEditGoal.twig
+++ b/plugins/Goals/templates/_addEditGoal.twig
@@ -13,22 +13,32 @@
</script>
-<div piwik-manage-goals
- {% if userCanEditGoals %}
- {% if onlyShowAddNewGoal is not defined %}
- {% if idGoal %}
- show-goal="{{ idGoal|e('js') }}"
- {% endif %}
- {% else %}
- show-add-goal="true"
- {% endif %}
- {% endif %}>
-
- {% if onlyShowAddNewGoal is not defined %}
- {% include "@Goals/_listGoalEdit.twig" %}
- {% endif %}
+<div
+ piwik-manage-goals
+ user-can-edit-goals="{{ userCanEditGoals|json_encode|e('html_attr') }}"
+ only-show-add-new-goal="{{ onlyShowAddNewGoal|default(false)|json_encode|e('html_attr') }}"
+ ecommerce-enabled="{{ ecommerceEnabled|json_encode|e('html_attr') }}"
{% if userCanEditGoals %}
- {% include "@Goals/_formAddGoal.twig" %}
+ {% if onlyShowAddNewGoal is not defined or not onlyShowAddNewGoal %}
+ goals="{{ goals|json_encode|e('html_attr') }}"
+ {% if idGoal %}
+ show-goal="{{ idGoal|e('js') }}"
+ {% endif %}
+ {% else %}
+ show-add-goal="true"
+ {% endif %}
+ {% else %}
+ goals="{{ goals|json_encode|e('html_attr') }}"
{% endif %}
- <a id='bottom'></a>
+ {% if addNewGoalIntro is defined %}add-new-goal-intro="{{ addNewGoalIntro|json_encode|e('html_attr') }}"{% endif %}
+ goal-trigger-type-options="{{ goalTriggerTypeOptions|json_encode|e('html_attr') }}"
+ goal-match-attribute-options="{{ goalMatchAttributeOptions|json_encode|e('html_attr') }}"
+ event-type-options="{{ eventTypeOptions|json_encode|e('html_attr') }}"
+ pattern-type-options="{{ patternTypeOptions|json_encode|e('html_attr') }}"
+ numeric-comparison-type-options="{{ numericComparisonTypeOptions|json_encode|e('html_attr') }}"
+ allow-multiple-options="{{ allowMultipleOptions|json_encode|e('html_attr') }}"
+ before-goal-list-actions-body="{{ beforeGoalListActionsBodyEventResult|default(null)|json_encode|e('html_attr') }}"
+ end-edit-table="{{ endEditTable|default(null)|json_encode|e('html_attr') }}"
+ before-goal-list-actions-head="{{ beforeGoalListActionsHead|default(null)|json_encode|e('html_attr') }}"
+>
</div>
diff --git a/plugins/Goals/templates/_formAddGoal.twig b/plugins/Goals/templates/_formAddGoal.twig
deleted file mode 100644
index 174a98ce1e..0000000000
--- a/plugins/Goals/templates/_formAddGoal.twig
+++ /dev/null
@@ -1,183 +0,0 @@
-<div piwik-content-block
- content-title="{{ 'Goals_AddNewGoal'|translate|e('html_attr') }}"
- class="addEditGoal"
- ng-show="manageGoals.showEditGoal">
-
- {% if addNewGoalIntro is defined and addNewGoalIntro %}
- {{ addNewGoalIntro|raw }}
- {% endif %}
-
- <div piwik-form>
- <div piwik-field uicontrol="text" name="goal_name"
- ng-model="manageGoals.goal.name"
- maxlength="50"
- data-title="{{ 'Goals_GoalName'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="text" name="goal_description"
- ng-model="manageGoals.goal.description"
- maxlength="255"
- data-title="{{ 'General_Description'|translate|e('html_attr') }}">
- </div>
-
- <div class="row goalIsTriggeredWhen">
- <div class="col s12">
- <h3>{{ 'Goals_GoalIsTriggered'|translate|e('html_attr') }}</h3>
- </div>
- </div>
-
- <div class="row">
- <div class="col s12 m6 goalTriggerType">
- <div piwik-field uicontrol="select" name="trigger_type"
- ng-model="manageGoals.goal.triggerType"
- ng-change="manageGoals.changedTriggerType()"
- full-width="true"
- options="{{ goalTriggerTypeOptions|json_encode }}">
- </div>
- </div>
- <div class="col s12 m6">
- <div piwik-alert="info" ng-show="manageGoals.goal.triggerType == 'manually'">
- {{ 'Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore'|translate("<a target='_blank' rel='noreferrer noopener' href='https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions'>","</a>")|raw }}
- </div>
-
- <div piwik-field uicontrol="radio" name="match_attribute"
- ng-show="manageGoals.goal.triggerType != 'manually'"
- full-width="true"
- ng-model="manageGoals.goal.matchAttribute"
- ng-change="manageGoals.initPatternType()"
- options="{{ goalMatchAttributeOptions|json_encode }}">
- </div>
- </div>
- </div>
-
- <div class="row whereTheMatchAttrbiute" ng-show="manageGoals.goal.triggerType != 'manually'">
- <h3 class="col s12">{{ 'Goals_WhereThe'|translate|e('html_attr') }}
- <span ng-show="manageGoals.goal.matchAttribute == 'url'">
- {{ 'Goals_URL'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'title'">
- {{ 'Goals_PageTitle'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'file'">
- {{ 'Goals_Filename'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'external_website'">
- {{ 'Goals_ExternalWebsiteUrl'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'visit_duration'">
- {{ 'Goals_VisitDuration'|translate }}
- </span>
- </h3>
- </div>
-
- <div class="row" ng-show="manageGoals.goal.triggerType != 'manually'">
- <div class="col s12 m6 l4"
- ng-show="manageGoals.goal.matchAttribute == 'event'">
- <div piwik-field uicontrol="select" name="event_type"
- ng-model="manageGoals.goal.eventType"
- full-width="true"
- options="{{ eventTypeOptions|json_encode }}">
- </div>
- </div>
-
- <div class="col s12 m6 l4" ng-if="!manageGoals.isMatchAttributeNumeric()">
- <div piwik-field uicontrol="select" name="pattern_type"
- ng-model="manageGoals.goal.patternType"
- full-width="true"
- options="{{ patternTypeOptions|json_encode }}">
- </div>
- </div>
-
- <div class="col s12 m6 l4" ng-if="manageGoals.isMatchAttributeNumeric()">
- <div piwik-field uicontrol="select" name="pattern_type"
- ng-model="manageGoals.goal.patternType"
- full-width="true"
- options="{{ numericComparisonTypeOptions|json_encode }}">
- </div>
- </div>
-
- <div class="col s12 m6 l4">
- <div piwik-field uicontrol="text" name="pattern"
- ng-model="manageGoals.goal.pattern"
- maxlength="255"
- data-title="{{ "{{ manageGoals.getPatternFieldLabel() }}"|raw }}"
- full-width="true">
- </div>
- </div>
-
- <div id="examples_pattern" class="col s12" piwik-alert="info">
- <span ng-show="manageGoals.goal.matchAttribute == 'url'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'checkout/confirmation'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'http://example.com/thank-you.html'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'(.*)\\\/demo\\\/(.*)'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'title'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'Order confirmation'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'file'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'files/brochure.pdf'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'http://example.com/files/brochure.pdf'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'(.*)\\\.zip'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'external_website'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'amazon.com'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'http://mypartner.com/landing.html'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'http://www.amazon.com\\\/(.*)\\\/yourAffiliateId'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'event'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'video'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'click'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'(.*)_banner'") }}"
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'visit_duration'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_AtLeastMinutes'|translate('5', '0.5') }}
- </span>
- </div>
- </div>
-
- <div piwik-field uicontrol="checkbox" name="case_sensitive"
- ng-model="manageGoals.goal.caseSensitive"
- ng-show="manageGoals.goal.triggerType != 'manually' && !manageGoals.isMatchAttributeNumeric()"
- data-title="{{ 'Goals_CaseSensitive'|translate|e('html_attr') }} {{ 'Goals_Optional'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="radio" name="allow_multiple"
- ng-model="manageGoals.goal.allowMultiple"
- ng-if="manageGoals.goal.matchAttribute !== 'visit_duration'"
- options="{{ allowMultipleOptions|json_encode }}"
- introduction="{{ 'Goals_AllowMultipleConversionsPerVisit'|translate|e('html_attr') }}"
- inline-help="{{ 'Goals_HelpOneConversionPerVisit'|translate|e('html_attr') }}">
- </div>
-
- <h3>{{ 'Goals_GoalRevenue'|translate }} {{ 'Goals_Optional'|translate }}</h3>
-
- <div piwik-field uicontrol="number" name="revenue"
- ng-model="manageGoals.goal.revenue"
- placeholder="{{ 'Goals_DefaultRevenueLabel'|translate }}"
- inline-help="{{ 'Goals_DefaultRevenueHelp'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="use_event_value"
- ng-model="manageGoals.goal.useEventValueAsRevenue"
- data-title="{{ 'Goals_UseEventValueAsRevenue'|translate|e('html_attr') }}"
- ng-show="manageGoals.goal.matchAttribute == 'event'"
- inline-help="{{ 'Goals_EventValueAsRevenueHelp'|translate|e('html_attr') }} &lt;br/&gt;&lt;br/&gt; {{ 'Goals_EventValueAsRevenueHelp2'|translate|e('html_attr') }}"
- >
- </div>
-
- {{ postEvent("Template.endGoalEditTable") }}
-
- <input type="hidden" name="goalIdUpdate" value=""/>
- <div piwik-save-button
- saving="manageGoals.isLoading"
- onconfirm="manageGoals.save()"
- ng-value="manageGoals.goal.submitText"></div>
-
- {% if onlyShowAddNewGoal is not defined %}
- <div class='entityCancel' ng-show="manageGoals.showEditGoal" ng-click="manageGoals.showListOfReports()">
- {{ 'General_OrCancel'|translate("<a class='entityCancelLink'>","</a>")|raw }}
- </div>
- {% endif %}
- </div>
-
-</div>
diff --git a/plugins/Goals/templates/_listGoalEdit.twig b/plugins/Goals/templates/_listGoalEdit.twig
deleted file mode 100644
index 1a30547343..0000000000
--- a/plugins/Goals/templates/_listGoalEdit.twig
+++ /dev/null
@@ -1,122 +0,0 @@
-<div id='entityEditContainer' feature="true"
- ng-show="manageGoals.showGoalList"
- piwik-content-block content-title="{{ 'Goals_ManageGoals'|translate|e('html_attr') }}"
- class="managegoals">
-
- <div piwik-activity-indicator loading="manageGoals.isLoading"></div>
-
- <div class="contentHelp">
- {{ 'Goals_LearnMoreAboutGoalTrackingDocumentation'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/docs/tracking-goals-web-analytics/'>","</a>")|raw }}
-
- {% if not ecommerceEnabled %}
- <br /><br/>
- {% set websiteManageText %}
- <a href='{{ linkTo({'module':'SitesManager','action':'index' }) }}'>{{ 'SitesManager_WebsitesManagement'|translate }}</a>
- {% endset %}
- {% set ecommerceReportText %}
- <a href="https://matomo.org/docs/ecommerce-analytics/" rel="noreferrer noopener" target="_blank">{{ 'Goals_EcommerceReports'|translate }}</a>
- {% endset %}
- {{ 'Goals_Optional'|translate }} {{ 'Goals_Ecommerce'|translate }}: {{ 'Goals_YouCanEnableEcommerceReports'|translate(ecommerceReportText,websiteManageText)|raw }}
- {% endif %}
- </div>
-
- <table piwik-content-table>
- <thead>
- <tr>
- <th class="first">Id</th>
- <th>{{ 'Goals_GoalName'|translate }}</th>
- <th>{{ 'General_Description'|translate }}</th>
- <th>{{ 'Goals_GoalIsTriggeredWhen'|translate }}</th>
- <th>{{ 'General_ColumnRevenue'|translate }}</th>
- {{ postEvent("Template.beforeGoalListActionsHead") }}
- {% if userCanEditGoals %}
- <th>{{ 'General_Edit'|translate }}</th>
- <th>{{ 'General_Delete'|translate }}</th>
- {% endif %}
- </tr>
- </thead>
- {% if goals is empty %}
- <tr>
- <td colspan='8'>
- <br/>
- {{ 'Goals_ThereIsNoGoalToManage'|translate(siteName)|rawSafeDecoded }}.
- <br/><br/>
- </td>
- </tr>
- {% else %}
- {% for goal in goals %}
- <tr id="{{ goal.idgoal }}">
- <td class="first">{{ goal.idgoal }}</td>
- <td>{{ goal.name }}</td>
- <td>{{ goal.description }}</td>
- <td>
- <span class='matchAttribute'>{{ goal.match_attribute }}</span>
- {% if goal.match_attribute == 'visit_duration' %}
- {{ 'General_OperationGreaterThan'|translate|lcfirst }} {{ 'Intl_NMinutes'|translate(goal.pattern) }}
- {% else %}
- {% if goal.pattern_type is defined %}
- <br/>
- {{ 'Goals_Pattern'|translate }} {{ goal.pattern_type }}: {{ goal.pattern }}
- {% endif %}
- {% endif %}
- </td>
- <td class="center">
- {% if goal.revenue==0 %}-{% else %}{{ goal.revenue|money(idSite)|raw }}{% endif %}
- </td>
- {{ postEvent("Template.beforeGoalListActionsBody", goal) }}
- {% if userCanEditGoals %}
- <td style="padding-top:2px">
- <button ng-click="manageGoals.editGoal({{ goal.idgoal }})" class="table-action" title="{{ 'General_Edit'|translate }}">
- <span class="icon-edit"></span>
- </button>
- </td>
- <td style="padding-top:2px">
- <button ng-click="manageGoals.deleteGoal({{ goal.idgoal }})" class="table-action" title="{{ 'General_Delete'|translate }}">
- <span class="icon-delete"></span>
- </button>
- </td>
- {% endif %}
- </tr>
- {% endfor %}
- {% endif %}
- </table>
-
- {% if userCanEditGoals and onlyShowAddNewGoal is not defined %}
- <div class="tableActionBar">
- <button id="add-goal" ng-click="manageGoals.createGoal()">
- <span class="icon-add"></span>
- {{ 'Goals_AddNewGoal'|translate }}
- </button>
- </div>
- {% endif %}
-
-</div>
-
-<div class="ui-confirm" id="confirm">
- <h2></h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
-</div>
-
-<script type="text/javascript">
- var goalTypeToTranslation = {
- "manually": "{{ 'Goals_ManuallyTriggeredUsingJavascriptFunction'|translate }}",
- "file": "{{ 'Goals_Download'|translate }}",
- "url": "{{ 'Goals_VisitUrl'|translate }}",
- "title": "{{ 'Goals_VisitPageTitle'|translate }}",
- "external_website": "{{ 'Goals_ClickOutlink'|translate }}",
- "event_action": "{{ 'Goals_SendEvent'|translate }} ({{ 'Events_EventAction'|translate }})",
- "event_category": "{{ 'Goals_SendEvent'|translate }} ({{ 'Events_EventCategory'|translate }})",
- "event_name": "{{ 'Goals_SendEvent'|translate }} ({{ 'Events_EventName'|translate }})",
- "visit_duration": "{{ 'Goals_VisitDuration'|translate|ucfirst }}"
- };
-
- $(document).ready(function () {
- // translation of the goal "match attribute" to human readable description
- $('.matchAttribute').each(function () {
- var matchAttribute = $(this).text();
- var translation = goalTypeToTranslation[matchAttribute];
- $(this).text(translation);
- });
- });
-</script>
diff --git a/plugins/Goals/tests/Integration/APITest.php b/plugins/Goals/tests/Integration/APITest.php
index 478dadaad6..0f6ea4a94f 100644
--- a/plugins/Goals/tests/Integration/APITest.php
+++ b/plugins/Goals/tests/Integration/APITest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\Goals\tests\Integration;
-use Piwik\Piwik;
use Piwik\Plugins\Goals\API;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
diff --git a/plugins/Goals/vue/dist/Goals.umd.js b/plugins/Goals/vue/dist/Goals.umd.js
index b12794fad0..c87161e4da 100644
--- a/plugins/Goals/vue/dist/Goals.umd.js
+++ b/plugins/Goals/vue/dist/Goals.umd.js
@@ -1,13 +1,13 @@
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory(require("CoreHome"));
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
else if(typeof define === 'function' && define.amd)
- define(["CoreHome"], factory);
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
else if(typeof exports === 'object')
- exports["Goals"] = factory(require("CoreHome"));
+ exports["Goals"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
else
- root["Goals"] = factory(root["CoreHome"]);
-})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__) {
+ root["Goals"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
@@ -103,6 +103,20 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
/***/ }),
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
/***/ "fae3":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -112,6 +126,7 @@ __webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, "GoalPageLink", function() { return /* reexport */ GoalPageLink_GoalPageLink; });
+__webpack_require__.d(__webpack_exports__, "ManageGoals", function() { return /* reexport */ ManageGoals; });
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
@@ -141,7 +156,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
*/
var _window = window,
- $ = _window.$; // usage v-goal-page-link="{ idGoal: 5 }"
+ GoalPageLink_$ = _window.$; // usage v-goal-page-link="{ idGoal: 5 }"
var GoalPageLink = {
mounted: function mounted(el, binding) {
@@ -149,8 +164,8 @@ var GoalPageLink = {
return;
}
- var title = $(el).text();
- var link = $('<a></a>');
+ var title = GoalPageLink_$(el).text();
+ var link = GoalPageLink_$('<a></a>');
link.text(title);
link.attr('title', Object(external_CoreHome_["translate"])('Goals_ClickToViewThisGoal'));
link.click(function (e) {
@@ -160,7 +175,7 @@ var GoalPageLink = {
subcategory: binding.value.idGoal
}));
});
- $(el).html(link[0]);
+ GoalPageLink_$(el).html(link[0]);
}
};
/* harmony default export */ var GoalPageLink_GoalPageLink = (GoalPageLink); // manually handle occurrence of goal-page-link on datatable html attributes since dataTable.js is
@@ -169,11 +184,11 @@ var GoalPageLink = {
external_CoreHome_["Matomo"].on('Matomo.processDynamicHtml', function ($element) {
$element.find('[goal-page-link]').each(function (i, e) {
- if ($(e).attr('goal-page-link-handled')) {
+ if (GoalPageLink_$(e).attr('goal-page-link-handled')) {
return;
}
- var idGoal = $(e).attr('goal-page-link');
+ var idGoal = GoalPageLink_$(e).attr('goal-page-link');
if (idGoal) {
GoalPageLink.mounted(e, {
@@ -187,7 +202,7 @@ external_CoreHome_["Matomo"].on('Matomo.processDynamicHtml', function ($element)
});
}
- $(e).attr('goal-page-link-handled', '1');
+ GoalPageLink_$(e).attr('goal-page-link-handled', '1');
});
});
// CONCATENATED MODULE: ./plugins/Goals/vue/src/GoalPageLink/GoalPageLink.adapter.ts
@@ -216,7 +231,837 @@ function piwikGoalPageLink() {
};
}
window.angular.module('piwikApp').directive('piwikGoalPageLink', piwikGoalPageLink);
-// CONCATENATED MODULE: ./plugins/Goals/vue/src/index.ts
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=template&id=065a1b7c
+
+var _hoisted_1 = {
+ id: "entityEditContainer",
+ feature: "true",
+ class: "managegoals"
+};
+var _hoisted_2 = {
+ class: "contentHelp"
+};
+var _hoisted_3 = ["innerHTML"];
+var _hoisted_4 = {
+ key: 0
+};
+
+var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_7 = ["innerHTML"];
+var _hoisted_8 = {
+ class: "first"
+};
+var _hoisted_9 = {
+ key: 1
+};
+var _hoisted_10 = {
+ key: 2
+};
+var _hoisted_11 = {
+ key: 0
+};
+var _hoisted_12 = {
+ colspan: "8"
+};
+
+var _hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_16 = ["id"];
+var _hoisted_17 = {
+ class: "first"
+};
+var _hoisted_18 = {
+ class: "matchAttribute"
+};
+var _hoisted_19 = {
+ key: 0
+};
+var _hoisted_20 = {
+ key: 1
+};
+
+var _hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_22 = ["innerHTML"];
+var _hoisted_23 = {
+ key: 1,
+ style: {
+ "padding-top": "2px"
+ }
+};
+var _hoisted_24 = ["onClick", "title"];
+
+var _hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-edit"
+}, null, -1);
+
+var _hoisted_26 = [_hoisted_25];
+var _hoisted_27 = {
+ key: 2,
+ style: {
+ "padding-top": "2px"
+ }
+};
+var _hoisted_28 = ["onClick", "title"];
+
+var _hoisted_29 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-delete"
+}, null, -1);
+
+var _hoisted_30 = [_hoisted_29];
+var _hoisted_31 = {
+ key: 0,
+ class: "tableActionBar"
+};
+
+var _hoisted_32 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-add"
+}, null, -1);
+
+var _hoisted_33 = {
+ class: "ui-confirm",
+ ref: "confirm"
+};
+var _hoisted_34 = ["value"];
+var _hoisted_35 = ["value"];
+var _hoisted_36 = {
+ class: "addEditGoal"
+};
+var _hoisted_37 = ["innerHTML"];
+var _hoisted_38 = {
+ class: "row goalIsTriggeredWhen"
+};
+var _hoisted_39 = {
+ class: "col s12"
+};
+var _hoisted_40 = {
+ class: "row"
+};
+var _hoisted_41 = {
+ class: "col s12 m6 goalTriggerType"
+};
+var _hoisted_42 = {
+ class: "col s12 m6"
+};
+var _hoisted_43 = ["innerHTML"];
+var _hoisted_44 = {
+ class: "row whereTheMatchAttrbiute"
+};
+var _hoisted_45 = {
+ class: "col s12"
+};
+var _hoisted_46 = {
+ class: "row"
+};
+var _hoisted_47 = {
+ class: "col s12 m6 l4"
+};
+var _hoisted_48 = {
+ key: 0,
+ class: "col s12 m6 l4"
+};
+var _hoisted_49 = {
+ key: 1,
+ class: "col s12 m6 l4"
+};
+var _hoisted_50 = {
+ class: "col s12 m6 l4"
+};
+var _hoisted_51 = {
+ id: "examples_pattern",
+ class: "col s12"
+};
+
+var _hoisted_52 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_53 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_54 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_55 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_56 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_57 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_58 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_59 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_60 = {
+ ref: "endedittable"
+};
+
+var _hoisted_61 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "hidden",
+ name: "goalIdUpdate",
+ value: ""
+}, null, -1);
+
+var _hoisted_62 = {
+ key: 0
+};
+var _hoisted_63 = ["innerHTML"];
+
+var _hoisted_64 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ id: "bottom"
+}, null, -1);
+
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _ctx$goalToDelete;
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_Alert = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Alert");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_content_table = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-table");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.translate('Goals_ManageGoals')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isLoading
+ }, null, 8, ["loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.learnMoreAboutGoalTracking
+ }, null, 8, _hoisted_3), !_ctx.ecommerceEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_4, [_hoisted_5, _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Optional')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Ecommerce')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.youCanEnableEcommerceReports
+ }, null, 8, _hoisted_7)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("table", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", _hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Id')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalName')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Description')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalIsTriggeredWhen')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnRevenue')), 1), _ctx.beforeGoalListActionsHeadComponent ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.beforeGoalListActionsHeadComponent), {
+ key: 0
+ })) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", _hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Edit')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", _hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Delete')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [!Object.keys(_ctx.goals || {}).length ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_12, [_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_ThereIsNoGoalToManage', _ctx.siteName)) + " ", 1), _hoisted_14, _hoisted_15])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.goals || [], function (goal) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
+ id: goal.idgoal,
+ key: goal.idgoal
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.idgoal), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.name), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.description), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.goalMatchAttributeTranslations[goal.match_attribute] || goal.match_attribute), 1), goal.match_attribute === 'visit_duration' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.lcfirst(_ctx.translate('General_OperationGreaterThan'))) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Intl_NMinutes', goal.pattern)), 1)) : !!goal.pattern_type ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_20, [_hoisted_21, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Pattern')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.pattern_type) + ": " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.pattern), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", {
+ class: "center",
+ innerHTML: goal.revenue === 0 || goal.revenue === '0' ? '-' : _ctx.$sanitize(goal.revenue_pretty)
+ }, null, 8, _hoisted_22), _ctx.beforeGoalListActionsBodyComponent[goal.idgoal] ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.beforeGoalListActionsBodyComponent[goal.idgoal]), {
+ key: 0
+ })) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ onClick: function onClick($event) {
+ return _ctx.editGoal(goal.idgoal);
+ },
+ class: "table-action",
+ title: _ctx.translate('General_Edit')
+ }, _hoisted_26, 8, _hoisted_24)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ onClick: function onClick($event) {
+ return _ctx.deleteGoal(goal.idgoal);
+ },
+ class: "table-action",
+ title: _ctx.translate('General_Delete')
+ }, _hoisted_30, 8, _hoisted_28)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 8, _hoisted_16);
+ }), 128))])], 512), [[_directive_content_table]]), _ctx.userCanEditGoals && !_ctx.onlyShowAddNewGoal ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ id: "add-goal",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.createGoal();
+ })
+ }, [_hoisted_32, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_AddNewGoal')), 1)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)];
+ }),
+ _: 1
+ }, 8, ["content-title"])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showGoalList]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_DeleteGoalConfirm', "\"".concat((_ctx$goalToDelete = _ctx.goalToDelete) === null || _ctx$goalToDelete === void 0 ? void 0 : _ctx$goalToDelete.name, "\""))), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "yes",
+ type: "button",
+ value: _ctx.translate('General_Yes')
+ }, null, 8, _hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "no",
+ type: "button",
+ value: _ctx.translate('General_No')
+ }, null, 8, _hoisted_35)], 512)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.onlyShowAddNewGoal]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_36, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.goal.idgoal ? _ctx.translate('Goals_UpdateGoal') : _ctx.translate('Goals_AddNewGoal')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ innerHTML: _ctx.$sanitize(_ctx.addNewGoalIntro)
+ }, null, 8, _hoisted_37), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "goal_name",
+ modelValue: _ctx.goal.name,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.goal.name = $event;
+ }),
+ maxlength: 50,
+ title: _ctx.translate('Goals_GoalName')
+ }, null, 8, ["modelValue", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "goal_description",
+ modelValue: _ctx.goal.description,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.goal.description = $event;
+ }),
+ maxlength: 255,
+ title: _ctx.translate('General_Description')
+ }, null, 8, ["modelValue", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_38, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_39, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalIsTriggered')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_41, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "trigger_type",
+ "model-value": _ctx.triggerType,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ _ctx.triggerType = $event;
+
+ _ctx.changedTriggerType();
+ }),
+ "full-width": true,
+ options: _ctx.goalTriggerTypeOptions
+ }, null, 8, ["model-value", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_42, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
+ severity: "info"
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.whereVisitedPageManuallyCallsJsTrackerText
+ }, null, 8, _hoisted_43)];
+ }),
+ _: 1
+ }, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType === 'manually']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "match_attribute",
+ "full-width": true,
+ "model-value": _ctx.goal.match_attribute,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ _ctx.goal.match_attribute = $event;
+
+ _ctx.initPatternType();
+ }),
+ options: _ctx.goalMatchAttributeOptions
+ }, null, 8, ["model-value", "options"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually']])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_44, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", _hoisted_45, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_WhereThe')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_URL')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'url']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_PageTitle')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'title']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Filename')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'file']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_ExternalWebsiteUrl')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'external_website']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_VisitDuration')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'visit_duration']])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_46, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_47, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "event_type",
+ modelValue: _ctx.eventType,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.eventType = $event;
+ }),
+ "full-width": true,
+ options: _ctx.eventTypeOptions
+ }, null, 8, ["modelValue", "options"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'event']]), !_ctx.isMatchAttributeNumeric ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_48, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "pattern_type",
+ modelValue: _ctx.goal.pattern_type,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.goal.pattern_type = $event;
+ }),
+ "full-width": true,
+ options: _ctx.patternTypeOptions
+ }, null, 8, ["modelValue", "options"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.isMatchAttributeNumeric ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_49, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "pattern_type",
+ modelValue: _ctx.goal.pattern_type,
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.goal.pattern_type = $event;
+ }),
+ "full-width": true,
+ options: _ctx.numericComparisonTypeOptions
+ }, null, 8, ["modelValue", "options"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_50, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "pattern",
+ modelValue: _ctx.goal.pattern,
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.goal.pattern = $event;
+ }),
+ maxlength: 255,
+ title: _ctx.patternFieldLabel,
+ "full-width": true
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_51, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
+ severity: "info"
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'checkout/confirmation'")) + " ", 1), _hoisted_52, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'http://example.com/thank-you.html'")) + " ", 1), _hoisted_53, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_MatchesExpression', "'(.*)\\\/demo\\\/(.*)'")), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'url']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'Order confirmation'")), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'title']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'files/brochure.pdf'")) + " ", 1), _hoisted_54, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'http://example.com/files/brochure.pdf'")) + " ", 1), _hoisted_55, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_MatchesExpression', "'(.*)\\\.zip'")), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'file']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'amazon.com'")) + " ", 1), _hoisted_56, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'http://mypartner.com/landing.html'")) + " ", 1), _hoisted_57, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.matchesExpressionExternal), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'external_website']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'video'")) + " ", 1), _hoisted_58, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'click'")) + " ", 1), _hoisted_59, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_MatchesExpression', "'(.*)_banner'")) + "\" ", 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'event']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_AtLeastMinutes', '5', '0.5')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'visit_duration']])];
+ }),
+ _: 1
+ })])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "case_sensitive",
+ modelValue: _ctx.goal.case_sensitive,
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
+ return _ctx.goal.case_sensitive = $event;
+ }),
+ title: _ctx.caseSensitiveTitle
+ }, null, 8, ["modelValue", "title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually' && !_ctx.isMatchAttributeNumeric]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.goal.match_attribute !== 'visit_duration' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Field, {
+ key: 0,
+ uicontrol: "radio",
+ name: "allow_multiple",
+ "model-value": _ctx.goal.allow_multiple ? 1 : 0,
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = function ($event) {
+ return _ctx.goal.allow_multiple = $event;
+ }),
+ options: _ctx.allowMultipleOptions,
+ introduction: _ctx.translate('Goals_AllowMultipleConversionsPerVisit'),
+ "inline-help": _ctx.translate('Goals_HelpOneConversionPerVisit')
+ }, null, 8, ["model-value", "options", "introduction", "inline-help"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalRevenue')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Optional')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "number",
+ name: "revenue",
+ modelValue: _ctx.goal.revenue,
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = function ($event) {
+ return _ctx.goal.revenue = $event;
+ }),
+ placeholder: _ctx.translate('Goals_DefaultRevenueLabel'),
+ "inline-help": _ctx.translate('Goals_DefaultRevenueHelp')
+ }, null, 8, ["modelValue", "placeholder", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "use_event_value",
+ modelValue: _ctx.goal.event_value_as_revenue,
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = function ($event) {
+ return _ctx.goal.event_value_as_revenue = $event;
+ }),
+ title: _ctx.translate('Goals_UseEventValueAsRevenue'),
+ "inline-help": _ctx.useEventValueAsRevenueHelp
+ }, null, 8, ["modelValue", "title", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'event']])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_60, [_ctx.endEditTableComponent ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.endEditTableComponent), {
+ key: 0
+ })) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512), _hoisted_61, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ saving: _ctx.isLoading,
+ onConfirm: _cache[13] || (_cache[13] = function ($event) {
+ return _ctx.save();
+ }),
+ value: _ctx.submitText
+ }, null, 8, ["saving", "value"]), !_ctx.onlyShowAddNewGoal ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_62, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: "entityCancel",
+ onClick: _cache[14] || (_cache[14] = function ($event) {
+ return _ctx.showListOfReports();
+ }),
+ innerHTML: _ctx.cancelText
+ }, null, 8, _hoisted_63), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showEditGoal]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512), [[_directive_form]])];
+ }),
+ _: 1
+ }, 8, ["content-title"])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showEditGoal]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.userCanEditGoals]]), _hoisted_64]);
+}
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=template&id=065a1b7c
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+/*!
+* Matomo - free/libre analytics platform
+*
+* @link https://matomo.org
+* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+*/
+// the piwikApi angularjs service is passed in some frontend events to allow plugins to modify
+// a request before it is sent. for the time being in Vue we use this mock, which has the same
+// API as the piwikApi service, to modify the input used with AjaxHelper. this provides BC
+// with for plugins that haven't been converted.
+//
+// should be removed in Matomo 5.
+var PiwikApiMock = /*#__PURE__*/function () {
+ function PiwikApiMock(parameters, options) {
+ _classCallCheck(this, PiwikApiMock);
+
+ _defineProperty(this, "parameters", void 0);
+
+ _defineProperty(this, "options", void 0);
+
+ this.parameters = parameters;
+ this.options = options;
+ }
+
+ _createClass(PiwikApiMock, [{
+ key: "addParams",
+ value: function addParams(params) {
+ Object.assign(this.parameters, params);
+ }
+ }, {
+ key: "withTokenInUrl",
+ value: function withTokenInUrl() {
+ this.options.withTokenInUrl = true;
+ }
+ }, {
+ key: "reset",
+ value: function reset() {
+ var _this = this;
+
+ Object.keys(this.parameters).forEach(function (name) {
+ delete _this.parameters[name];
+ });
+ delete this.options.postParams;
+ }
+ }, {
+ key: "addPostParams",
+ value: function addPostParams(params) {
+ this.options.postParams = Object.assign(Object.assign({}, this.options.postParams), params);
+ }
+ }]);
+
+ return PiwikApiMock;
+}();
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var ManageGoalsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ inheritAttrs: false,
+ props: {
+ onlyShowAddNewGoal: Boolean,
+ userCanEditGoals: Boolean,
+ ecommerceEnabled: Boolean,
+ goals: {
+ type: Object,
+ required: true
+ },
+ addNewGoalIntro: String,
+ goalTriggerTypeOptions: Object,
+ goalMatchAttributeOptions: Array,
+ eventTypeOptions: Array,
+ patternTypeOptions: Array,
+ numericComparisonTypeOptions: Array,
+ allowMultipleOptions: Array,
+ showAddGoal: Boolean,
+ showGoal: Number,
+ beforeGoalListActionsBody: Object,
+ endEditTable: String,
+ beforeGoalListActionsHead: String
+ },
+ data: function data() {
+ return {
+ showEditGoal: false,
+ showGoalList: true,
+ goal: {},
+ isLoading: false,
+ eventType: 'event_category',
+ triggerType: 'visitors',
+ apiMethod: '',
+ submitText: '',
+ goalToDelete: null,
+ addEditTableComponent: false
+ };
+ },
+ components: {
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"],
+ Field: external_CorePluginsAdmin_["Field"],
+ Alert: external_CoreHome_["Alert"]
+ },
+ directives: {
+ ContentTable: external_CoreHome_["ContentTable"],
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ mounted: function mounted() {
+ var _this = this;
+
+ if (this.showAddGoal) {
+ this.createGoal();
+ } else if (this.showGoal) {
+ this.editGoal(this.showGoal);
+ }
+
+ this.showListOfReports(); // this component can be used in multiple places, one where
+ // Matomo.helper.compileAngularComponents() is already called, one where it's not.
+ // to make sure this function is only applied once to the slot data, we explicitly do not
+ // add it to vue, then on the next update, add it and call compileAngularComponents()
+
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ _this.addEditTableComponent = true;
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ var el = _this.$refs.endedittable;
+ var scope = external_CoreHome_["Matomo"].helper.getAngularDependency('$rootScope').$new(true);
+ $(el).data('scope', scope);
+ external_CoreHome_["Matomo"].helper.compileAngularComponents(el, {
+ scope: scope
+ });
+ });
+ });
+ },
+ beforeUnmount: function beforeUnmount() {
+ var el = this.$refs.endedittable;
+ $(el).data('scope').$destroy();
+ },
+ methods: {
+ scrollToTop: function scrollToTop() {
+ setTimeout(function () {
+ external_CoreHome_["Matomo"].helper.lazyScrollTo('.pageWrap', 200);
+ });
+ },
+ initGoalForm: function initGoalForm(goalMethodAPI, submitText, goalName, description, matchAttribute, pattern, patternType, caseSensitive, revenue, allowMultiple, useEventValueAsRevenue, goalId) {
+ external_CoreHome_["Matomo"].postEvent('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
+ this.apiMethod = goalMethodAPI;
+ this.goal = {};
+ this.goal.name = goalName;
+ this.goal.description = description;
+ var actualMatchAttribute = matchAttribute;
+
+ if (actualMatchAttribute === 'manually') {
+ this.triggerType = 'manually';
+ actualMatchAttribute = 'url';
+ } else {
+ this.triggerType = 'visitors';
+ }
+
+ if (actualMatchAttribute.indexOf('event') === 0) {
+ this.eventType = actualMatchAttribute;
+ actualMatchAttribute = 'event';
+ } else {
+ this.eventType = 'event_category';
+ }
+
+ this.goal.match_attribute = actualMatchAttribute;
+ this.goal.allow_multiple = allowMultiple;
+ this.goal.pattern_type = patternType;
+ this.goal.pattern = pattern;
+ this.goal.case_sensitive = caseSensitive;
+ this.goal.revenue = revenue;
+ this.goal.event_value_as_revenue = useEventValueAsRevenue;
+ this.submitText = submitText;
+ this.goal.idgoal = goalId;
+ },
+ showListOfReports: function showListOfReports() {
+ external_CoreHome_["Matomo"].postEvent('Goals.cancelForm');
+ this.showGoalList = true;
+ this.showEditGoal = false;
+ this.scrollToTop();
+ },
+ showAddEditForm: function showAddEditForm() {
+ this.showGoalList = false;
+ this.showEditGoal = true;
+ },
+ createGoal: function createGoal() {
+ var parameters = {
+ isAllowed: true
+ };
+ external_CoreHome_["Matomo"].postEvent('Goals.initAddGoal', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ return;
+ }
+
+ this.showAddEditForm();
+ this.initGoalForm('Goals.addGoal', Object(external_CoreHome_["translate"])('Goals_AddGoal'), '', '', 'url', '', 'contains', false, 0, false, false, 0);
+ this.scrollToTop();
+ },
+ editGoal: function editGoal(goalId) {
+ this.showAddEditForm();
+ var goal = this.goals["".concat(goalId)];
+ this.initGoalForm('Goals.updateGoal', Object(external_CoreHome_["translate"])('Goals_UpdateGoal'), goal.name, goal.description, goal.match_attribute, goal.pattern, goal.pattern_type, !!goal.case_sensitive && goal.case_sensitive !== '0', parseInt("".concat(goal.revenue), 10), !!goal.allow_multiple && goal.allow_multiple !== '0', !!goal.event_value_as_revenue && goal.event_value_as_revenue !== '0', goalId);
+ this.scrollToTop();
+ },
+ deleteGoal: function deleteGoal(goalId) {
+ var _this2 = this;
+
+ this.goalToDelete = this.goals["".concat(goalId)];
+ external_CoreHome_["Matomo"].helper.modalConfirm(this.$refs.confirm, {
+ yes: function yes() {
+ _this2.isLoading = true;
+ external_CoreHome_["AjaxHelper"].fetch({
+ idGoal: goalId,
+ method: 'Goals.deleteGoal'
+ }).then(function () {
+ window.location.reload();
+ }).finally(function () {
+ _this2.isLoading = false;
+ });
+ }
+ });
+ },
+ save: function save() {
+ var _this3 = this;
+
+ var parameters = {}; // TODO: test removal of encoding, should be handled by ajax request
+
+ parameters.name = this.goal.name;
+ parameters.description = this.goal.description;
+
+ if (this.isManuallyTriggered) {
+ parameters.matchAttribute = 'manually';
+ parameters.patternType = 'regex';
+ parameters.pattern = '.*';
+ parameters.caseSensitive = 0;
+ } else {
+ parameters.matchAttribute = this.goal.match_attribute;
+
+ if (parameters.matchAttribute === 'event') {
+ parameters.matchAttribute = this.eventType;
+ }
+
+ parameters.patternType = this.goal.pattern_type;
+ parameters.pattern = this.goal.pattern;
+ parameters.caseSensitive = this.goal.case_sensitive ? 1 : 0;
+ }
+
+ parameters.revenue = this.goal.revenue || 0;
+ parameters.allowMultipleConversionsPerVisit = this.goal.allow_multiple ? 1 : 0;
+ parameters.useEventValueAsRevenue = this.goal.event_value_as_revenue ? 1 : 0;
+ parameters.idGoal = this.goal.idgoal;
+ parameters.method = this.apiMethod;
+ var isCreate = parameters.method === 'Goals.addGoal';
+ var isUpdate = parameters.method === 'Goals.updateGoal';
+ var options = {};
+ var piwikApiMock = new PiwikApiMock(parameters, options);
+
+ if (isUpdate) {
+ external_CoreHome_["Matomo"].postEvent('Goals.beforeUpdateGoal', parameters, piwikApiMock);
+ } else if (isCreate) {
+ external_CoreHome_["Matomo"].postEvent('Goals.beforeAddGoal', parameters, piwikApiMock);
+ }
+
+ if (parameters !== null && parameters !== void 0 && parameters.cancelRequest) {
+ return;
+ }
+
+ this.isLoading = true;
+ external_CoreHome_["AjaxHelper"].fetch(parameters, options).then(function () {
+ var subcategory = external_CoreHome_["MatomoUrl"].parsed.value.subcategory;
+
+ if (subcategory === 'Goals_AddNewGoal' && external_CoreHome_["Matomo"].helper.isAngularRenderingThePage()) {
+ // when adding a goal for the first time we need to load manage goals page afterwards
+ external_CoreHome_["ReportingMenuStore"].reloadMenuItems().then(function () {
+ external_CoreHome_["MatomoUrl"].updateHash(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].hashParsed.value), {}, {
+ subcategory: 'Goals_ManageGoals'
+ }));
+ _this3.isLoading = false;
+ });
+ } else {
+ window.location.reload();
+ }
+ }).catch(function () {
+ _this3.scrollToTop();
+
+ _this3.isLoading = false;
+ });
+ },
+ changedTriggerType: function changedTriggerType() {
+ if (!this.isManuallyTriggered && !this.goal.pattern_type) {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ initPatternType: function initPatternType() {
+ if (this.isMatchAttributeNumeric) {
+ this.goal.pattern_type = 'greater_than';
+ } else {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ lcfirst: function lcfirst(s) {
+ return "".concat(s.substr(0, 1).toLowerCase()).concat(s.substr(1));
+ },
+ ucfirst: function ucfirst(s) {
+ return "".concat(s.substr(0, 1).toUpperCase()).concat(s.substr(1));
+ }
+ },
+ computed: {
+ learnMoreAboutGoalTracking: function learnMoreAboutGoalTracking() {
+ return Object(external_CoreHome_["translate"])('Goals_LearnMoreAboutGoalTrackingDocumentation', '<a target="_blank" rel="noreferrer noopener" ' + 'href="https://matomo.org/docs/tracking-goals-web-analytics/">', '</a>');
+ },
+ youCanEnableEcommerceReports: function youCanEnableEcommerceReports() {
+ var link = external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ module: 'SitesManager',
+ action: 'index'
+ }));
+ var ecommerceReportsText = '<a href="https://matomo.org/docs/ecommerce-analytics/" ' + "rel=\"noreferrer noopener\" target=\"_blank\">".concat(Object(external_CoreHome_["translate"])('Goals_EcommerceReports'), "</a>");
+ var websiteManageText = "<a href='".concat(link, "'>").concat(Object(external_CoreHome_["translate"])('SitesManager_WebsitesManagement'), "</a>");
+ return Object(external_CoreHome_["translate"])('Goals_YouCanEnableEcommerceReports', ecommerceReportsText, websiteManageText);
+ },
+ siteName: function siteName() {
+ return external_CoreHome_["Matomo"].helper.htmlDecode(external_CoreHome_["Matomo"].siteName);
+ },
+ whereVisitedPageManuallyCallsJsTrackerText: function whereVisitedPageManuallyCallsJsTrackerText() {
+ var link = 'https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions';
+ return Object(external_CoreHome_["translate"])('Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore', "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"".concat(link, "\">"), '</a>');
+ },
+ caseSensitiveTitle: function caseSensitiveTitle() {
+ return "".concat(Object(external_CoreHome_["translate"])('Goals_CaseSensitive'), " ").concat(Object(external_CoreHome_["translate"])('Goals_Optional'));
+ },
+ useEventValueAsRevenueHelp: function useEventValueAsRevenueHelp() {
+ return "".concat(Object(external_CoreHome_["translate"])('Goals_EventValueAsRevenueHelp'), " <br/><br/> ").concat(Object(external_CoreHome_["translate"])('Goals_EventValueAsRevenueHelp2'));
+ },
+ cancelText: function cancelText() {
+ return Object(external_CoreHome_["translate"])('General_OrCancel', '<a class=\'entityCancelLink\'>', '</a>');
+ },
+ isMatchAttributeNumeric: function isMatchAttributeNumeric() {
+ return ['visit_duration'].indexOf(this.goal.match_attribute) > -1;
+ },
+ patternFieldLabel: function patternFieldLabel() {
+ return this.goal.match_attribute === 'visit_duration' ? Object(external_CoreHome_["translate"])('Goals_TimeInMinutes') : Object(external_CoreHome_["translate"])('Goals_Pattern');
+ },
+ goalMatchAttributeTranslations: function goalMatchAttributeTranslations() {
+ return {
+ manually: Object(external_CoreHome_["translate"])('Goals_ManuallyTriggeredUsingJavascriptFunction'),
+ file: Object(external_CoreHome_["translate"])('Goals_Download'),
+ url: Object(external_CoreHome_["translate"])('Goals_VisitUrl'),
+ title: Object(external_CoreHome_["translate"])('Goals_VisitPageTitle'),
+ external_website: Object(external_CoreHome_["translate"])('Goals_ClickOutlink'),
+ event_action: "".concat(Object(external_CoreHome_["translate"])('Goals_SendEvent'), " (").concat(Object(external_CoreHome_["translate"])('Events_EventAction'), ")"),
+ event_category: "".concat(Object(external_CoreHome_["translate"])('Goals_SendEvent'), " (").concat(Object(external_CoreHome_["translate"])('Events_EventCategory'), ")"),
+ event_name: "".concat(Object(external_CoreHome_["translate"])('Goals_SendEvent'), " (").concat(Object(external_CoreHome_["translate"])('Events_EventName'), ")"),
+ visit_duration: "".concat(this.ucfirst(Object(external_CoreHome_["translate"])('Goals_VisitDuration')))
+ };
+ },
+ beforeGoalListActionsBodyComponent: function beforeGoalListActionsBodyComponent() {
+ var _this4 = this;
+
+ if (!this.beforeGoalListActionsBody) {
+ return {};
+ }
+
+ var componentsByIdGoal = {};
+ Object.values(this.goals).forEach(function (g) {
+ componentsByIdGoal[g.idgoal] = {
+ template: _this4.beforeGoalListActionsBody[g.idgoal]
+ };
+ });
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])(componentsByIdGoal);
+ },
+ endEditTableComponent: function endEditTableComponent() {
+ if (!this.endEditTable || !this.addEditTableComponent) {
+ return null;
+ }
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])({
+ template: this.endEditTable
+ });
+ },
+ beforeGoalListActionsHeadComponent: function beforeGoalListActionsHeadComponent() {
+ if (!this.beforeGoalListActionsHead) {
+ return null;
+ }
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])({
+ template: this.beforeGoalListActionsHead
+ });
+ },
+ isManuallyTriggered: function isManuallyTriggered() {
+ return this.triggerType === 'manually';
+ },
+ matchesExpressionExternal: function matchesExpressionExternal() {
+ var url = "'http://www.amazon.com\\/(.*)\\/yourAffiliateId'";
+ return Object(external_CoreHome_["translate"])('Goals_MatchesExpression', url);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
+
+
+
+ManageGoalsvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var ManageGoals = (ManageGoalsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts
/*!
* Matomo - free/libre analytics platform
*
@@ -225,6 +1070,71 @@ window.angular.module('piwikApp').directive('piwikGoalPageLink', piwikGoalPageLi
*/
+/* harmony default export */ var ManageGoals_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: ManageGoals,
+ directiveName: 'piwikManageGoals',
+ scope: {
+ userCanEditGoals: {
+ angularJsBind: '<'
+ },
+ onlyShowAddNewGoal: {
+ angularJsBind: '<'
+ },
+ ecommerceEnabled: {
+ angularJsBind: '<'
+ },
+ goals: {
+ angularJsBind: '<'
+ },
+ showGoal: {
+ angularJsBind: '<'
+ },
+ showAddGoal: {
+ angularJsBind: '<'
+ },
+ addNewGoalIntro: {
+ angularJsBind: '<'
+ },
+ goalTriggerTypeOptions: {
+ angularJsBind: '<'
+ },
+ goalMatchAttributeOptions: {
+ angularJsBind: '<'
+ },
+ eventTypeOptions: {
+ angularJsBind: '<'
+ },
+ patternTypeOptions: {
+ angularJsBind: '<'
+ },
+ numericComparisonTypeOptions: {
+ angularJsBind: '<'
+ },
+ allowMultipleOptions: {
+ angularJsBind: '<'
+ },
+ beforeGoalListActionsBody: {
+ angularJsBind: '<'
+ },
+ endEditTable: {
+ angularJsBind: '<'
+ },
+ beforeGoalListActionsHead: {
+ angularJsBind: '<'
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+*/
+
+
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/Goals/vue/dist/Goals.umd.min.js b/plugins/Goals/vue/dist/Goals.umd.min.js
index bb91dc1933..beedb32148 100644
--- a/plugins/Goals/vue/dist/Goals.umd.min.js
+++ b/plugins/Goals/vue/dist/Goals.umd.min.js
@@ -1,9 +1,21 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["Goals"]=t(require("CoreHome")):e["Goals"]=t(e["CoreHome"])})("undefined"!==typeof self?self:this,(function(e){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Goals/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"GoalPageLink",(function(){return c})),"undefined"!==typeof window){var o=window.document.currentScript,r=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),a=window,l=a.$,u={mounted:function(e,t){if(i["Matomo"].helper.isAngularRenderingThePage()){var n=l(e).text(),o=l("<a></a>");o.text(n),o.attr("title",Object(i["translate"])("Goals_ClickToViewThisGoal")),o.click((function(e){e.preventDefault(),i["MatomoUrl"].updateHash(Object.assign(Object.assign({},i["MatomoUrl"].hashParsed.value),{},{category:"Goals_Goals",subcategory:t.value.idGoal}))})),l(e).html(o[0])}}},c=u;
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["Goals"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Goals"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,a){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="plugins/Goals/vue/dist/",a(a.s="fae3")}({"19dc":function(t,a){t.exports=e},"8bbf":function(e,a){e.exports=t},a5a2:function(e,t){e.exports=a},fae3:function(e,t,a){"use strict";if(a.r(t),a.d(t,"GoalPageLink",(function(){return s})),a.d(t,"ManageGoals",(function(){return De})),"undefined"!==typeof window){var n=window.document.currentScript,o=n&&n.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(a.p=o[1])}var l=a("19dc"),r=window,i=r.$,c={mounted:function(e,t){if(l["Matomo"].helper.isAngularRenderingThePage()){var a=i(e).text(),n=i("<a></a>");n.text(a),n.attr("title",Object(l["translate"])("Goals_ClickToViewThisGoal")),n.click((function(e){e.preventDefault(),l["MatomoUrl"].updateHash(Object.assign(Object.assign({},l["MatomoUrl"].hashParsed.value),{},{category:"Goals_Goals",subcategory:t.value.idGoal}))})),i(e).html(n[0])}}},s=c;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function f(){return{restrict:"A",link:function(e,t,n){var o={instance:null,value:{idGoal:n.piwikGoalPageLink},oldValue:null,modifiers:{},dir:{}};c.mounted(t[0],o)}}}i["Matomo"].on("Matomo.processDynamicHtml",(function(e){e.find("[goal-page-link]").each((function(e,t){if(!l(t).attr("goal-page-link-handled")){var n=l(t).attr("goal-page-link");n&&u.mounted(t,{instance:null,value:{idGoal:n},oldValue:null,modifiers:{},dir:{}}),l(t).attr("goal-page-link-handled","1")}}))})),window.angular.module("piwikApp").directive("piwikGoalPageLink",f)}})}));
+function u(){return{restrict:"A",link:function(e,t,a){var n={instance:null,value:{idGoal:a.piwikGoalPageLink},oldValue:null,modifiers:{},dir:{}};s.mounted(t[0],n)}}}l["Matomo"].on("Matomo.processDynamicHtml",(function(e){e.find("[goal-page-link]").each((function(e,t){if(!i(t).attr("goal-page-link-handled")){var a=i(t).attr("goal-page-link");a&&c.mounted(t,{instance:null,value:{idGoal:a},oldValue:null,modifiers:{},dir:{}}),i(t).attr("goal-page-link-handled","1")}}))})),window.angular.module("piwikApp").directive("piwikGoalPageLink",u);var d=a("8bbf"),b={id:"entityEditContainer",feature:"true",class:"managegoals"},p={class:"contentHelp"},m=["innerHTML"],O={key:0},j=Object(d["createElementVNode"])("br",null,null,-1),g=Object(d["createElementVNode"])("br",null,null,-1),h=["innerHTML"],v={class:"first"},y={key:1},f={key:2},_={key:0},G={colspan:"8"},E=Object(d["createElementVNode"])("br",null,null,-1),V=Object(d["createElementVNode"])("br",null,null,-1),N=Object(d["createElementVNode"])("br",null,null,-1),w=["id"],T={class:"first"},S={class:"matchAttribute"},k={key:0},D={key:1},C=Object(d["createElementVNode"])("br",null,null,-1),x=["innerHTML"],A={key:1,style:{"padding-top":"2px"}},M=["onClick","title"],B=Object(d["createElementVNode"])("span",{class:"icon-edit"},null,-1),L=[B],P={key:2,style:{"padding-top":"2px"}},H=["onClick","title"],F=Object(d["createElementVNode"])("span",{class:"icon-delete"},null,-1),U=[F],R={key:0,class:"tableActionBar"},I=Object(d["createElementVNode"])("span",{class:"icon-add"},null,-1),J={class:"ui-confirm",ref:"confirm"},q=["value"],W=["value"],z={class:"addEditGoal"},Y=["innerHTML"],K={class:"row goalIsTriggeredWhen"},Q={class:"col s12"},X={class:"row"},Z={class:"col s12 m6 goalTriggerType"},ee={class:"col s12 m6"},te=["innerHTML"],ae={class:"row whereTheMatchAttrbiute"},ne={class:"col s12"},oe={class:"row"},le={class:"col s12 m6 l4"},re={key:0,class:"col s12 m6 l4"},ie={key:1,class:"col s12 m6 l4"},ce={class:"col s12 m6 l4"},se={id:"examples_pattern",class:"col s12"},ue=Object(d["createElementVNode"])("br",null,null,-1),de=Object(d["createElementVNode"])("br",null,null,-1),be=Object(d["createElementVNode"])("br",null,null,-1),pe=Object(d["createElementVNode"])("br",null,null,-1),me=Object(d["createElementVNode"])("br",null,null,-1),Oe=Object(d["createElementVNode"])("br",null,null,-1),je=Object(d["createElementVNode"])("br",null,null,-1),ge=Object(d["createElementVNode"])("br",null,null,-1),he={ref:"endedittable"},ve=Object(d["createElementVNode"])("input",{type:"hidden",name:"goalIdUpdate",value:""},null,-1),ye={key:0},fe=["innerHTML"],_e=Object(d["createElementVNode"])("a",{id:"bottom"},null,-1);function Ge(e,t,a,n,o,l){var r,i=Object(d["resolveComponent"])("ActivityIndicator"),c=Object(d["resolveComponent"])("ContentBlock"),s=Object(d["resolveComponent"])("Field"),u=Object(d["resolveComponent"])("Alert"),B=Object(d["resolveComponent"])("SaveButton"),F=Object(d["resolveDirective"])("content-table"),$=Object(d["resolveDirective"])("form");return Object(d["openBlock"])(),Object(d["createElementBlock"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",b,[Object(d["createVNode"])(c,{"content-title":e.translate("Goals_ManageGoals")},{default:Object(d["withCtx"])((function(){return[Object(d["createVNode"])(i,{loading:e.isLoading},null,8,["loading"]),Object(d["createElementVNode"])("div",p,[Object(d["createElementVNode"])("span",{innerHTML:e.learnMoreAboutGoalTracking},null,8,m),e.ecommerceEnabled?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",O,[j,g,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_Optional"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Ecommerce"))+": ",1),Object(d["createElementVNode"])("span",{innerHTML:e.youCanEnableEcommerceReports},null,8,h)]))]),Object(d["withDirectives"])(Object(d["createElementVNode"])("table",null,[Object(d["createElementVNode"])("thead",null,[Object(d["createElementVNode"])("tr",null,[Object(d["createElementVNode"])("th",v,Object(d["toDisplayString"])(e.translate("General_Id")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("Goals_GoalName")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("General_Description")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("Goals_GoalIsTriggeredWhen")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("General_ColumnRevenue")),1),e.beforeGoalListActionsHeadComponent?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.beforeGoalListActionsHeadComponent),{key:0})):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("th",y,Object(d["toDisplayString"])(e.translate("General_Edit")),1)):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("th",f,Object(d["toDisplayString"])(e.translate("General_Delete")),1)):Object(d["createCommentVNode"])("",!0)])]),Object(d["createElementVNode"])("tbody",null,[Object.keys(e.goals||{}).length?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",_,[Object(d["createElementVNode"])("td",G,[E,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_ThereIsNoGoalToManage",e.siteName))+" ",1),V,N])])),(Object(d["openBlock"])(!0),Object(d["createElementBlock"])(d["Fragment"],null,Object(d["renderList"])(e.goals||[],(function(t){return Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",{id:t.idgoal,key:t.idgoal},[Object(d["createElementVNode"])("td",T,Object(d["toDisplayString"])(t.idgoal),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.name),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.description),1),Object(d["createElementVNode"])("td",null,[Object(d["createElementVNode"])("span",S,Object(d["toDisplayString"])(e.goalMatchAttributeTranslations[t.match_attribute]||t.match_attribute),1),"visit_duration"===t.match_attribute?(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",k,Object(d["toDisplayString"])(e.lcfirst(e.translate("General_OperationGreaterThan")))+" "+Object(d["toDisplayString"])(e.translate("Intl_NMinutes",t.pattern)),1)):t.pattern_type?(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",D,[C,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_Pattern"))+" "+Object(d["toDisplayString"])(t.pattern_type)+": "+Object(d["toDisplayString"])(t.pattern),1)])):Object(d["createCommentVNode"])("",!0)]),Object(d["createElementVNode"])("td",{class:"center",innerHTML:0===t.revenue||"0"===t.revenue?"-":e.$sanitize(t.revenue_pretty)},null,8,x),e.beforeGoalListActionsBodyComponent[t.idgoal]?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.beforeGoalListActionsBodyComponent[t.idgoal]),{key:0})):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",A,[Object(d["createElementVNode"])("button",{onClick:function(a){return e.editGoal(t.idgoal)},class:"table-action",title:e.translate("General_Edit")},L,8,M)])):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",P,[Object(d["createElementVNode"])("button",{onClick:function(a){return e.deleteGoal(t.idgoal)},class:"table-action",title:e.translate("General_Delete")},U,8,H)])):Object(d["createCommentVNode"])("",!0)],8,w)})),128))])],512),[[F]]),e.userCanEditGoals&&!e.onlyShowAddNewGoal?(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",R,[Object(d["createElementVNode"])("button",{id:"add-goal",onClick:t[0]||(t[0]=function(t){return e.createGoal()})},[I,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_AddNewGoal")),1)])])):Object(d["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])],512),[[d["vShow"],e.showGoalList]]),Object(d["createElementVNode"])("div",J,[Object(d["createElementVNode"])("h2",null,Object(d["toDisplayString"])(e.translate("Goals_DeleteGoalConfirm",'"'.concat(null===(r=e.goalToDelete)||void 0===r?void 0:r.name,'"'))),1),Object(d["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,q),Object(d["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,W)],512)],512),[[d["vShow"],!e.onlyShowAddNewGoal]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",z,[Object(d["createVNode"])(c,{"content-title":e.goal.idgoal?e.translate("Goals_UpdateGoal"):e.translate("Goals_AddNewGoal")},{default:Object(d["withCtx"])((function(){return[Object(d["createElementVNode"])("div",{innerHTML:e.$sanitize(e.addNewGoalIntro)},null,8,Y),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"goal_name",modelValue:e.goal.name,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.goal.name=t}),maxlength:50,title:e.translate("Goals_GoalName")},null,8,["modelValue","title"])]),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"goal_description",modelValue:e.goal.description,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.goal.description=t}),maxlength:255,title:e.translate("General_Description")},null,8,["modelValue","title"])]),Object(d["createElementVNode"])("div",K,[Object(d["createElementVNode"])("div",Q,[Object(d["createElementVNode"])("h3",null,Object(d["toDisplayString"])(e.translate("Goals_GoalIsTriggered")),1)])]),Object(d["createElementVNode"])("div",X,[Object(d["createElementVNode"])("div",Z,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"trigger_type","model-value":e.triggerType,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.triggerType=t,e.changedTriggerType()}),"full-width":!0,options:e.goalTriggerTypeOptions},null,8,["model-value","options"])])]),Object(d["createElementVNode"])("div",ee,[Object(d["withDirectives"])(Object(d["createVNode"])(u,{severity:"info"},{default:Object(d["withCtx"])((function(){return[Object(d["createElementVNode"])("span",{innerHTML:e.whereVisitedPageManuallyCallsJsTrackerText},null,8,te)]})),_:1},512),[[d["vShow"],"manually"===e.triggerType]]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"radio",name:"match_attribute","full-width":!0,"model-value":e.goal.match_attribute,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.goal.match_attribute=t,e.initPatternType()}),options:e.goalMatchAttributeOptions},null,8,["model-value","options"]),[[d["vShow"],"manually"!==e.triggerType]])])])]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",ae,[Object(d["createElementVNode"])("h3",ne,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("Goals_WhereThe"))+" ",1),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_URL")),513),[[d["vShow"],"url"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_PageTitle")),513),[[d["vShow"],"title"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_Filename")),513),[[d["vShow"],"file"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_ExternalWebsiteUrl")),513),[[d["vShow"],"external_website"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_VisitDuration")),513),[[d["vShow"],"visit_duration"===e.goal.match_attribute]])])],512),[[d["vShow"],"manually"!==e.triggerType]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",oe,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",le,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"event_type",modelValue:e.eventType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.eventType=t}),"full-width":!0,options:e.eventTypeOptions},null,8,["modelValue","options"])])],512),[[d["vShow"],"event"===e.goal.match_attribute]]),e.isMatchAttributeNumeric?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",re,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"pattern_type",modelValue:e.goal.pattern_type,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.goal.pattern_type=t}),"full-width":!0,options:e.patternTypeOptions},null,8,["modelValue","options"])])])),e.isMatchAttributeNumeric?(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",ie,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"pattern_type",modelValue:e.goal.pattern_type,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.goal.pattern_type=t}),"full-width":!0,options:e.numericComparisonTypeOptions},null,8,["modelValue","options"])])])):Object(d["createCommentVNode"])("",!0),Object(d["createElementVNode"])("div",ce,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"pattern",modelValue:e.goal.pattern,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.goal.pattern=t}),maxlength:255,title:e.patternFieldLabel,"full-width":!0},null,8,["modelValue","title"])])]),Object(d["createElementVNode"])("div",se,[Object(d["createVNode"])(u,{severity:"info"},{default:Object(d["withCtx"])((function(){return[Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'checkout/confirmation'"))+" ",1),ue,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://example.com/thank-you.html'"))+" ",1),de,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)\\/demo\\/(.*)'")),1)],512),[[d["vShow"],"url"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'Order confirmation'")),513),[[d["vShow"],"title"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'files/brochure.pdf'"))+" ",1),be,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://example.com/files/brochure.pdf'"))+" ",1),pe,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)\\.zip'")),1)],512),[[d["vShow"],"file"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'amazon.com'"))+" ",1),me,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://mypartner.com/landing.html'"))+" ",1),Oe,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.matchesExpressionExternal),1)],512),[[d["vShow"],"external_website"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'video'"))+" ",1),je,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'click'"))+" ",1),ge,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)_banner'"))+'" ',1)],512),[[d["vShow"],"event"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_AtLeastMinutes","5","0.5")),513),[[d["vShow"],"visit_duration"===e.goal.match_attribute]])]})),_:1})])],512),[[d["vShow"],"manually"!==e.triggerType]]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"checkbox",name:"case_sensitive",modelValue:e.goal.case_sensitive,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.goal.case_sensitive=t}),title:e.caseSensitiveTitle},null,8,["modelValue","title"]),[[d["vShow"],"manually"!==e.triggerType&&!e.isMatchAttributeNumeric]])]),Object(d["createElementVNode"])("div",null,["visit_duration"!==e.goal.match_attribute?(Object(d["openBlock"])(),Object(d["createBlock"])(s,{key:0,uicontrol:"radio",name:"allow_multiple","model-value":e.goal.allow_multiple?1:0,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.goal.allow_multiple=t}),options:e.allowMultipleOptions,introduction:e.translate("Goals_AllowMultipleConversionsPerVisit"),"inline-help":e.translate("Goals_HelpOneConversionPerVisit")},null,8,["model-value","options","introduction","inline-help"])):Object(d["createCommentVNode"])("",!0)]),Object(d["createElementVNode"])("h3",null,Object(d["toDisplayString"])(e.translate("Goals_GoalRevenue"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Optional")),1),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"number",name:"revenue",modelValue:e.goal.revenue,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.goal.revenue=t}),placeholder:e.translate("Goals_DefaultRevenueLabel"),"inline-help":e.translate("Goals_DefaultRevenueHelp")},null,8,["modelValue","placeholder","inline-help"])]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"checkbox",name:"use_event_value",modelValue:e.goal.event_value_as_revenue,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.goal.event_value_as_revenue=t}),title:e.translate("Goals_UseEventValueAsRevenue"),"inline-help":e.useEventValueAsRevenueHelp},null,8,["modelValue","title","inline-help"]),[[d["vShow"],"event"===e.goal.match_attribute]])]),Object(d["createElementVNode"])("div",he,[e.endEditTableComponent?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.endEditTableComponent),{key:0})):Object(d["createCommentVNode"])("",!0)],512),ve,Object(d["createVNode"])(B,{saving:e.isLoading,onConfirm:t[13]||(t[13]=function(t){return e.save()}),value:e.submitText},null,8,["saving","value"]),e.onlyShowAddNewGoal?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",ye,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",{class:"entityCancel",onClick:t[14]||(t[14]=function(t){return e.showListOfReports()}),innerHTML:e.cancelText},null,8,fe),[[d["vShow"],e.showEditGoal]])]))],512),[[$]])]})),_:1},8,["content-title"])],512),[[d["vShow"],e.showEditGoal]])],512),[[d["vShow"],e.userCanEditGoals]]),_e])}var Ee=a("a5a2");function Ve(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ne(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function we(e,t,a){return t&&Ne(e.prototype,t),a&&Ne(e,a),e}function Te(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}
+/*!
+* Matomo - free/libre analytics platform
+*
+* @link https://matomo.org
+* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+*/var Se=function(){function e(t,a){Ve(this,e),Te(this,"parameters",void 0),Te(this,"options",void 0),this.parameters=t,this.options=a}return we(e,[{key:"addParams",value:function(e){Object.assign(this.parameters,e)}},{key:"withTokenInUrl",value:function(){this.options.withTokenInUrl=!0}},{key:"reset",value:function(){var e=this;Object.keys(this.parameters).forEach((function(t){delete e.parameters[t]})),delete this.options.postParams}},{key:"addPostParams",value:function(e){this.options.postParams=Object.assign(Object.assign({},this.options.postParams),e)}}]),e}(),ke=Object(d["defineComponent"])({inheritAttrs:!1,props:{onlyShowAddNewGoal:Boolean,userCanEditGoals:Boolean,ecommerceEnabled:Boolean,goals:{type:Object,required:!0},addNewGoalIntro:String,goalTriggerTypeOptions:Object,goalMatchAttributeOptions:Array,eventTypeOptions:Array,patternTypeOptions:Array,numericComparisonTypeOptions:Array,allowMultipleOptions:Array,showAddGoal:Boolean,showGoal:Number,beforeGoalListActionsBody:Object,endEditTable:String,beforeGoalListActionsHead:String},data:function(){return{showEditGoal:!1,showGoalList:!0,goal:{},isLoading:!1,eventType:"event_category",triggerType:"visitors",apiMethod:"",submitText:"",goalToDelete:null,addEditTableComponent:!1}},components:{SaveButton:Ee["SaveButton"],ContentBlock:l["ContentBlock"],ActivityIndicator:l["ActivityIndicator"],Field:Ee["Field"],Alert:l["Alert"]},directives:{ContentTable:l["ContentTable"],Form:Ee["Form"]},mounted:function(){var e=this;this.showAddGoal?this.createGoal():this.showGoal&&this.editGoal(this.showGoal),this.showListOfReports(),Object(d["nextTick"])((function(){e.addEditTableComponent=!0,Object(d["nextTick"])((function(){var t=e.$refs.endedittable,a=l["Matomo"].helper.getAngularDependency("$rootScope").$new(!0);$(t).data("scope",a),l["Matomo"].helper.compileAngularComponents(t,{scope:a})}))}))},beforeUnmount:function(){var e=this.$refs.endedittable;$(e).data("scope").$destroy()},methods:{scrollToTop:function(){setTimeout((function(){l["Matomo"].helper.lazyScrollTo(".pageWrap",200)}))},initGoalForm:function(e,t,a,n,o,r,i,c,s,u,d,b){l["Matomo"].postEvent("Goals.beforeInitGoalForm",e,b),this.apiMethod=e,this.goal={},this.goal.name=a,this.goal.description=n;var p=o;"manually"===p?(this.triggerType="manually",p="url"):this.triggerType="visitors",0===p.indexOf("event")?(this.eventType=p,p="event"):this.eventType="event_category",this.goal.match_attribute=p,this.goal.allow_multiple=u,this.goal.pattern_type=i,this.goal.pattern=r,this.goal.case_sensitive=c,this.goal.revenue=s,this.goal.event_value_as_revenue=d,this.submitText=t,this.goal.idgoal=b},showListOfReports:function(){l["Matomo"].postEvent("Goals.cancelForm"),this.showGoalList=!0,this.showEditGoal=!1,this.scrollToTop()},showAddEditForm:function(){this.showGoalList=!1,this.showEditGoal=!0},createGoal:function(){var e={isAllowed:!0};l["Matomo"].postEvent("Goals.initAddGoal",e),e&&!e.isAllowed||(this.showAddEditForm(),this.initGoalForm("Goals.addGoal",Object(l["translate"])("Goals_AddGoal"),"","","url","","contains",!1,0,!1,!1,0),this.scrollToTop())},editGoal:function(e){this.showAddEditForm();var t=this.goals["".concat(e)];this.initGoalForm("Goals.updateGoal",Object(l["translate"])("Goals_UpdateGoal"),t.name,t.description,t.match_attribute,t.pattern,t.pattern_type,!!t.case_sensitive&&"0"!==t.case_sensitive,parseInt("".concat(t.revenue),10),!!t.allow_multiple&&"0"!==t.allow_multiple,!!t.event_value_as_revenue&&"0"!==t.event_value_as_revenue,e),this.scrollToTop()},deleteGoal:function(e){var t=this;this.goalToDelete=this.goals["".concat(e)],l["Matomo"].helper.modalConfirm(this.$refs.confirm,{yes:function(){t.isLoading=!0,l["AjaxHelper"].fetch({idGoal:e,method:"Goals.deleteGoal"}).then((function(){window.location.reload()})).finally((function(){t.isLoading=!1}))}})},save:function(){var e=this,t={};t.name=this.goal.name,t.description=this.goal.description,this.isManuallyTriggered?(t.matchAttribute="manually",t.patternType="regex",t.pattern=".*",t.caseSensitive=0):(t.matchAttribute=this.goal.match_attribute,"event"===t.matchAttribute&&(t.matchAttribute=this.eventType),t.patternType=this.goal.pattern_type,t.pattern=this.goal.pattern,t.caseSensitive=this.goal.case_sensitive?1:0),t.revenue=this.goal.revenue||0,t.allowMultipleConversionsPerVisit=this.goal.allow_multiple?1:0,t.useEventValueAsRevenue=this.goal.event_value_as_revenue?1:0,t.idGoal=this.goal.idgoal,t.method=this.apiMethod;var a="Goals.addGoal"===t.method,n="Goals.updateGoal"===t.method,o={},r=new Se(t,o);n?l["Matomo"].postEvent("Goals.beforeUpdateGoal",t,r):a&&l["Matomo"].postEvent("Goals.beforeAddGoal",t,r),null!==t&&void 0!==t&&t.cancelRequest||(this.isLoading=!0,l["AjaxHelper"].fetch(t,o).then((function(){var t=l["MatomoUrl"].parsed.value.subcategory;"Goals_AddNewGoal"===t&&l["Matomo"].helper.isAngularRenderingThePage()?l["ReportingMenuStore"].reloadMenuItems().then((function(){l["MatomoUrl"].updateHash(Object.assign(Object.assign({},l["MatomoUrl"].hashParsed.value),{},{subcategory:"Goals_ManageGoals"})),e.isLoading=!1})):window.location.reload()})).catch((function(){e.scrollToTop(),e.isLoading=!1})))},changedTriggerType:function(){this.isManuallyTriggered||this.goal.pattern_type||(this.goal.pattern_type="contains")},initPatternType:function(){this.isMatchAttributeNumeric?this.goal.pattern_type="greater_than":this.goal.pattern_type="contains"},lcfirst:function(e){return"".concat(e.substr(0,1).toLowerCase()).concat(e.substr(1))},ucfirst:function(e){return"".concat(e.substr(0,1).toUpperCase()).concat(e.substr(1))}},computed:{learnMoreAboutGoalTracking:function(){return Object(l["translate"])("Goals_LearnMoreAboutGoalTrackingDocumentation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/tracking-goals-web-analytics/">',"</a>")},youCanEnableEcommerceReports:function(){var e=l["MatomoUrl"].stringify(Object.assign(Object.assign({},l["MatomoUrl"].urlParsed.value),{},{module:"SitesManager",action:"index"})),t='<a href="https://matomo.org/docs/ecommerce-analytics/" '+'rel="noreferrer noopener" target="_blank">'.concat(Object(l["translate"])("Goals_EcommerceReports"),"</a>"),a="<a href='".concat(e,"'>").concat(Object(l["translate"])("SitesManager_WebsitesManagement"),"</a>");return Object(l["translate"])("Goals_YouCanEnableEcommerceReports",t,a)},siteName:function(){return l["Matomo"].helper.htmlDecode(l["Matomo"].siteName)},whereVisitedPageManuallyCallsJsTrackerText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions";return Object(l["translate"])("Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore",'<a target="_blank" rel="noreferrer noopener" href="'.concat(e,'">'),"</a>")},caseSensitiveTitle:function(){return"".concat(Object(l["translate"])("Goals_CaseSensitive")," ").concat(Object(l["translate"])("Goals_Optional"))},useEventValueAsRevenueHelp:function(){return"".concat(Object(l["translate"])("Goals_EventValueAsRevenueHelp")," <br/><br/> ").concat(Object(l["translate"])("Goals_EventValueAsRevenueHelp2"))},cancelText:function(){return Object(l["translate"])("General_OrCancel","<a class='entityCancelLink'>","</a>")},isMatchAttributeNumeric:function(){return["visit_duration"].indexOf(this.goal.match_attribute)>-1},patternFieldLabel:function(){return"visit_duration"===this.goal.match_attribute?Object(l["translate"])("Goals_TimeInMinutes"):Object(l["translate"])("Goals_Pattern")},goalMatchAttributeTranslations:function(){return{manually:Object(l["translate"])("Goals_ManuallyTriggeredUsingJavascriptFunction"),file:Object(l["translate"])("Goals_Download"),url:Object(l["translate"])("Goals_VisitUrl"),title:Object(l["translate"])("Goals_VisitPageTitle"),external_website:Object(l["translate"])("Goals_ClickOutlink"),event_action:"".concat(Object(l["translate"])("Goals_SendEvent")," (").concat(Object(l["translate"])("Events_EventAction"),")"),event_category:"".concat(Object(l["translate"])("Goals_SendEvent")," (").concat(Object(l["translate"])("Events_EventCategory"),")"),event_name:"".concat(Object(l["translate"])("Goals_SendEvent")," (").concat(Object(l["translate"])("Events_EventName"),")"),visit_duration:"".concat(this.ucfirst(Object(l["translate"])("Goals_VisitDuration")))}},beforeGoalListActionsBodyComponent:function(){var e=this;if(!this.beforeGoalListActionsBody)return{};var t={};return Object.values(this.goals).forEach((function(a){t[a.idgoal]={template:e.beforeGoalListActionsBody[a.idgoal]}})),Object(d["markRaw"])(t)},endEditTableComponent:function(){return this.endEditTable&&this.addEditTableComponent?Object(d["markRaw"])({template:this.endEditTable}):null},beforeGoalListActionsHeadComponent:function(){return this.beforeGoalListActionsHead?Object(d["markRaw"])({template:this.beforeGoalListActionsHead}):null},isManuallyTriggered:function(){return"manually"===this.triggerType},matchesExpressionExternal:function(){var e="'http://www.amazon.com\\/(.*)\\/yourAffiliateId'";return Object(l["translate"])("Goals_MatchesExpression",e)}}});ke.render=Ge;var De=ke;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(l["createAngularJsAdapter"])({component:De,directiveName:"piwikManageGoals",scope:{userCanEditGoals:{angularJsBind:"<"},onlyShowAddNewGoal:{angularJsBind:"<"},ecommerceEnabled:{angularJsBind:"<"},goals:{angularJsBind:"<"},showGoal:{angularJsBind:"<"},showAddGoal:{angularJsBind:"<"},addNewGoalIntro:{angularJsBind:"<"},goalTriggerTypeOptions:{angularJsBind:"<"},goalMatchAttributeOptions:{angularJsBind:"<"},eventTypeOptions:{angularJsBind:"<"},patternTypeOptions:{angularJsBind:"<"},numericComparisonTypeOptions:{angularJsBind:"<"},allowMultipleOptions:{angularJsBind:"<"},beforeGoalListActionsBody:{angularJsBind:"<"},endEditTable:{angularJsBind:"<"},beforeGoalListActionsHead:{angularJsBind:"<"}}})}})}));
//# sourceMappingURL=Goals.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Goals/vue/dist/umd.metadata.json b/plugins/Goals/vue/dist/umd.metadata.json
index 9ecfcc0456..dce4477a3c 100644
--- a/plugins/Goals/vue/dist/umd.metadata.json
+++ b/plugins/Goals/vue/dist/umd.metadata.json
@@ -1,5 +1,6 @@
{
"dependsOn": [
- "CoreHome"
+ "CoreHome",
+ "CorePluginsAdmin"
]
} \ No newline at end of file
diff --git a/plugins/Goals/vue/src/Goal.ts b/plugins/Goals/vue/src/Goal.ts
new file mode 100644
index 0000000000..7609ea75ee
--- /dev/null
+++ b/plugins/Goals/vue/src/Goal.ts
@@ -0,0 +1,24 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+interface Goal {
+ idgoal: string|number;
+ name: string;
+ allow_multiple: string|number|boolean;
+ case_sensitive: string|number|boolean;
+ deleted: string|number|boolean;
+ description: string;
+ event_value_as_revenue: string|number|boolean;
+ idsite: string|number;
+ match_attribute: string;
+ pattern: string;
+ pattern_type: string;
+ revenue: string|number;
+ revenue_pretty?: string;
+}
+
+export default Goal;
diff --git a/plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts b/plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts
new file mode 100644
index 0000000000..72237788a8
--- /dev/null
+++ b/plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts
@@ -0,0 +1,64 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import ManageGoals from './ManageGoals.vue';
+
+export default createAngularJsAdapter({
+ component: ManageGoals,
+ directiveName: 'piwikManageGoals',
+ scope: {
+ userCanEditGoals: {
+ angularJsBind: '<',
+ },
+ onlyShowAddNewGoal: {
+ angularJsBind: '<',
+ },
+ ecommerceEnabled: {
+ angularJsBind: '<',
+ },
+ goals: {
+ angularJsBind: '<',
+ },
+ showGoal: {
+ angularJsBind: '<',
+ },
+ showAddGoal: {
+ angularJsBind: '<',
+ },
+ addNewGoalIntro: {
+ angularJsBind: '<',
+ },
+ goalTriggerTypeOptions: {
+ angularJsBind: '<',
+ },
+ goalMatchAttributeOptions: {
+ angularJsBind: '<',
+ },
+ eventTypeOptions: {
+ angularJsBind: '<',
+ },
+ patternTypeOptions: {
+ angularJsBind: '<',
+ },
+ numericComparisonTypeOptions: {
+ angularJsBind: '<',
+ },
+ allowMultipleOptions: {
+ angularJsBind: '<',
+ },
+ beforeGoalListActionsBody: {
+ angularJsBind: '<',
+ },
+ endEditTable: {
+ angularJsBind: '<',
+ },
+ beforeGoalListActionsHead: {
+ angularJsBind: '<',
+ },
+ },
+});
diff --git a/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue b/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
new file mode 100644
index 0000000000..667935117b
--- /dev/null
+++ b/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
@@ -0,0 +1,821 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div>
+ <!-- v-show required until funnels/multiattribution are using vue and not angularjs -->
+ <div v-show="!onlyShowAddNewGoal">
+ <div
+ id='entityEditContainer'
+ feature="true"
+ v-show="showGoalList"
+ class="managegoals"
+ >
+ <ContentBlock :content-title="translate('Goals_ManageGoals')">
+ <ActivityIndicator :loading="isLoading"/>
+
+ <div class="contentHelp">
+ <span v-html="learnMoreAboutGoalTracking"/>
+ <span v-if="!ecommerceEnabled">
+ <br /><br/>
+
+ {{ translate('Goals_Optional') }} {{ translate('Goals_Ecommerce') }}:
+ <span v-html="youCanEnableEcommerceReports"/>
+ </span>
+ </div>
+
+ <table v-content-table>
+ <thead>
+ <tr>
+ <th class="first">{{ translate('General_Id') }}</th>
+ <th>{{ translate('Goals_GoalName') }}</th>
+ <th>{{ translate('General_Description') }}</th>
+ <th>{{ translate('Goals_GoalIsTriggeredWhen') }}</th>
+ <th>{{ translate('General_ColumnRevenue') }}</th>
+
+ <component
+ v-if="beforeGoalListActionsHeadComponent"
+ :is="beforeGoalListActionsHeadComponent"
+ ></component>
+
+ <th v-if="userCanEditGoals">{{ translate('General_Edit') }}</th>
+ <th v-if="userCanEditGoals">{{ translate('General_Delete') }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr v-if="!Object.keys(goals || {}).length">
+ <td colspan='8'>
+ <br/>
+ {{ translate('Goals_ThereIsNoGoalToManage', siteName) }}
+ <br/><br/>
+ </td>
+ </tr>
+ <tr v-for="goal in goals || []" :id="goal.idgoal" :key="goal.idgoal">
+ <td class="first">{{ goal.idgoal }}</td>
+ <td>{{ goal.name }}</td>
+ <td>{{ goal.description }}</td>
+ <td>
+ <span class='matchAttribute'>
+ {{ goalMatchAttributeTranslations[goal.match_attribute]
+ || goal.match_attribute }}
+ </span>
+ <span v-if="goal.match_attribute === 'visit_duration'">
+ {{ lcfirst(translate('General_OperationGreaterThan')) }}
+ {{ translate('Intl_NMinutes', goal.pattern) }}
+ </span>
+ <span v-else-if="!!goal.pattern_type">
+ <br/>
+ {{ translate('Goals_Pattern') }} {{ goal.pattern_type }}: {{ goal.pattern }}
+ </span>
+ </td>
+ <td
+ class="center"
+ v-html="goal.revenue === 0 || goal.revenue === '0'
+ ? '-'
+ : $sanitize(goal.revenue_pretty)"
+ >
+ </td>
+
+ <component
+ v-if="beforeGoalListActionsBodyComponent[goal.idgoal]"
+ :is="beforeGoalListActionsBodyComponent[goal.idgoal]"
+ ></component>
+
+ <td v-if="userCanEditGoals" style="padding-top:2px">
+ <button
+ @click="editGoal(goal.idgoal)"
+ class="table-action"
+ :title="translate('General_Edit')"
+ >
+ <span class="icon-edit"></span>
+ </button>
+ </td>
+ <td v-if="userCanEditGoals" style="padding-top:2px">
+ <button
+ @click="deleteGoal(goal.idgoal)"
+ class="table-action"
+ :title="translate('General_Delete')"
+ >
+ <span class="icon-delete"></span>
+ </button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div class="tableActionBar" v-if="userCanEditGoals && !onlyShowAddNewGoal">
+ <button id="add-goal" @click="createGoal()">
+ <span class="icon-add"></span>
+ {{ translate('Goals_AddNewGoal') }}
+ </button>
+ </div>
+ </ContentBlock>
+ </div>
+
+ <div class="ui-confirm" ref="confirm">
+ <h2>{{ translate('Goals_DeleteGoalConfirm', `"${goalToDelete?.name}"`) }}</h2>
+ <input role="yes" type="button" :value="translate('General_Yes')"/>
+ <input role="no" type="button" :value="translate('General_No')"/>
+ </div>
+ </div>
+
+ <!-- v-show required until funnels/multiattribution are using vue and not angularjs -->
+ <div v-show="userCanEditGoals">
+ <div class="addEditGoal" v-show="showEditGoal">
+ <ContentBlock
+ :content-title="goal.idgoal
+ ? translate('Goals_UpdateGoal')
+ : translate('Goals_AddNewGoal')"
+ >
+ <div v-html="$sanitize(addNewGoalIntro)"></div>
+
+ <div v-form>
+ <div>
+ <Field
+ uicontrol="text"
+ name="goal_name"
+ v-model="goal.name"
+ :maxlength="50"
+ :title="translate('Goals_GoalName')">
+ </Field>
+ </div>
+
+ <div>
+ <Field
+ uicontrol="text"
+ name="goal_description"
+ v-model="goal.description"
+ :maxlength="255"
+ :title="translate('General_Description')"
+ />
+ </div>
+
+ <div class="row goalIsTriggeredWhen">
+ <div class="col s12">
+ <h3>{{ translate('Goals_GoalIsTriggered') }}</h3>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col s12 m6 goalTriggerType">
+ <div>
+ <Field
+ uicontrol="select" name="trigger_type"
+ :model-value="triggerType"
+ @update:model-value="triggerType = $event; changedTriggerType()"
+ :full-width="true"
+ :options="goalTriggerTypeOptions"
+ />
+ </div>
+ </div>
+ <div class="col s12 m6">
+ <Alert severity="info" v-show="triggerType === 'manually'">
+ <span v-html="whereVisitedPageManuallyCallsJsTrackerText"></span>
+ </Alert>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="match_attribute"
+ v-show="triggerType !== 'manually'"
+ :full-width="true"
+ :model-value="goal.match_attribute"
+ @update:model-value="goal.match_attribute = $event; initPatternType()"
+ :options="goalMatchAttributeOptions"
+ />
+ </div>
+ </div>
+ </div>
+
+ <div class="row whereTheMatchAttrbiute" v-show="triggerType !== 'manually'">
+ <h3 class="col s12">{{ translate('Goals_WhereThe') }}
+ <span v-show="goal.match_attribute === 'url'">
+ {{ translate('Goals_URL') }}
+ </span>
+ <span v-show="goal.match_attribute === 'title'">
+ {{ translate('Goals_PageTitle') }}
+ </span>
+ <span v-show="goal.match_attribute === 'file'">
+ {{ translate('Goals_Filename') }}
+ </span>
+ <span v-show="goal.match_attribute === 'external_website'">
+ {{ translate('Goals_ExternalWebsiteUrl') }}
+ </span>
+ <span v-show="goal.match_attribute === 'visit_duration'">
+ {{ translate('Goals_VisitDuration') }}
+ </span>
+ </h3>
+ </div>
+
+ <div class="row" v-show="triggerType !== 'manually'">
+ <div class="col s12 m6 l4"
+ v-show="goal.match_attribute === 'event'">
+ <div>
+ <Field
+ uicontrol="select" name="event_type"
+ v-model="eventType"
+ :full-width="true"
+ :options="eventTypeOptions"
+ />
+ </div>
+ </div>
+
+ <div class="col s12 m6 l4" v-if="!isMatchAttributeNumeric">
+ <div>
+ <Field
+ uicontrol="select"
+ name="pattern_type"
+ v-model="goal.pattern_type"
+ :full-width="true"
+ :options="patternTypeOptions"
+ />
+ </div>
+ </div>
+
+ <div class="col s12 m6 l4" v-if="isMatchAttributeNumeric">
+ <div>
+ <Field
+ uicontrol="select" name="pattern_type"
+ v-model="goal.pattern_type"
+ :full-width="true"
+ :options="numericComparisonTypeOptions"
+ />
+ </div>
+ </div>
+
+ <div class="col s12 m6 l4">
+ <div>
+ <Field
+ uicontrol="text" name="pattern"
+ v-model="goal.pattern"
+ :maxlength="255"
+ :title="patternFieldLabel"
+ :full-width="true"
+ />
+ </div>
+ </div>
+
+ <div id="examples_pattern" class="col s12">
+ <Alert severity="info">
+ <span v-show="goal.match_attribute === 'url'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'checkout/confirmation'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'http://example.com/thank-you.html'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_MatchesExpression', "'(.*)\\\/demo\\\/(.*)'") }}
+ </span>
+ <span v-show="goal.match_attribute === 'title'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'Order confirmation'") }}
+ </span>
+ <span v-show="goal.match_attribute === 'file'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'files/brochure.pdf'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'http://example.com/files/brochure.pdf'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_MatchesExpression', "'(.*)\\\.zip'") }}
+ </span>
+ <span v-show="goal.match_attribute === 'external_website'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'amazon.com'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'http://mypartner.com/landing.html'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ matchesExpressionExternal }}
+ </span>
+ <span v-show="goal.match_attribute === 'event'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'video'") }}
+ <br />
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'click'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_MatchesExpression', "'(.*)_banner'") }}"
+ </span>
+ <span v-show="goal.match_attribute === 'visit_duration'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_AtLeastMinutes', '5', '0.5') }}
+ </span>
+ </Alert>
+ </div>
+ </div>
+
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="case_sensitive"
+ v-model="goal.case_sensitive"
+ v-show="triggerType !== 'manually' && !isMatchAttributeNumeric"
+ :title="caseSensitiveTitle"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="allow_multiple"
+ :model-value="goal.allow_multiple ? 1 : 0"
+ @update:model-value="goal.allow_multiple = $event"
+ v-if="goal.match_attribute !== 'visit_duration'"
+ :options="allowMultipleOptions"
+ :introduction="translate('Goals_AllowMultipleConversionsPerVisit')"
+ :inline-help="translate('Goals_HelpOneConversionPerVisit')"
+ />
+ </div>
+
+ <h3>{{ translate('Goals_GoalRevenue') }} {{ translate('Goals_Optional') }}</h3>
+
+ <div>
+ <Field
+ uicontrol="number"
+ name="revenue"
+ v-model="goal.revenue"
+ :placeholder="translate('Goals_DefaultRevenueLabel')"
+ :inline-help="translate('Goals_DefaultRevenueHelp')"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="use_event_value"
+ v-model="goal.event_value_as_revenue"
+ :title="translate('Goals_UseEventValueAsRevenue')"
+ v-show="goal.match_attribute === 'event'"
+ :inline-help="useEventValueAsRevenueHelp"
+ />
+ </div>
+
+ <div ref="endedittable">
+ <component :is="endEditTableComponent" v-if="endEditTableComponent"/>
+ </div>
+
+ <input type="hidden" name="goalIdUpdate" value=""/>
+
+ <SaveButton
+ :saving="isLoading"
+ @confirm="save()"
+ :value="submitText"
+ />
+
+ <div v-if="!onlyShowAddNewGoal">
+ <div
+ class='entityCancel'
+ v-show="showEditGoal"
+ @click="showListOfReports()"
+ v-html="cancelText"
+ >
+ </div>
+ </div>
+ </div>
+ </ContentBlock>
+ </div>
+ </div>
+
+ <a id='bottom'></a>
+ </div>
+</template>
+
+<script lang="ts">
+import { IScope } from 'angular';
+import { defineComponent, markRaw, nextTick } from 'vue';
+import {
+ Matomo,
+ AjaxHelper,
+ AjaxOptions,
+ translate,
+ ContentBlock,
+ ActivityIndicator,
+ MatomoUrl,
+ ContentTable,
+ Alert,
+ ReportingMenuStore,
+} from 'CoreHome';
+import {
+ Form,
+ Field,
+ SaveButton,
+} from 'CorePluginsAdmin';
+import Goal from '../Goal';
+import PiwikApiMock from './PiwikApiMock';
+
+interface ManageGoalsState {
+ showEditGoal: boolean;
+ showGoalList: boolean;
+ goal: Goal;
+ isLoading: boolean;
+ eventType: string;
+ triggerType: string;
+ apiMethod: string;
+ submitText: string;
+ goalToDelete: Goal|null;
+ addEditTableComponent: boolean;
+}
+
+export default defineComponent({
+ inheritAttrs: false,
+ props: {
+ onlyShowAddNewGoal: Boolean,
+ userCanEditGoals: Boolean,
+ ecommerceEnabled: Boolean,
+ goals: {
+ type: Object,
+ required: true,
+ },
+ addNewGoalIntro: String,
+ goalTriggerTypeOptions: Object,
+ goalMatchAttributeOptions: Array,
+ eventTypeOptions: Array,
+ patternTypeOptions: Array,
+ numericComparisonTypeOptions: Array,
+ allowMultipleOptions: Array,
+ showAddGoal: Boolean,
+ showGoal: Number,
+ beforeGoalListActionsBody: Object,
+ endEditTable: String,
+ beforeGoalListActionsHead: String,
+ },
+ data(): ManageGoalsState {
+ return {
+ showEditGoal: false,
+ showGoalList: true,
+ goal: {} as unknown as Goal,
+ isLoading: false,
+ eventType: 'event_category',
+ triggerType: 'visitors',
+ apiMethod: '',
+ submitText: '',
+ goalToDelete: null,
+ addEditTableComponent: false,
+ };
+ },
+ components: {
+ SaveButton,
+ ContentBlock,
+ ActivityIndicator,
+ Field,
+ Alert,
+ },
+ directives: {
+ ContentTable,
+ Form,
+ },
+ mounted() {
+ if (this.showAddGoal) {
+ this.createGoal();
+ } else if (this.showGoal) {
+ this.editGoal(this.showGoal);
+ }
+
+ this.showListOfReports();
+
+ // this component can be used in multiple places, one where
+ // Matomo.helper.compileAngularComponents() is already called, one where it's not.
+ // to make sure this function is only applied once to the slot data, we explicitly do not
+ // add it to vue, then on the next update, add it and call compileAngularComponents()
+ nextTick(() => {
+ this.addEditTableComponent = true;
+
+ nextTick(() => {
+ const el = this.$refs.endedittable as HTMLElement;
+ const scope = Matomo.helper.getAngularDependency('$rootScope').$new(true);
+ $(el).data('scope', scope);
+ Matomo.helper.compileAngularComponents(el, { scope });
+ });
+ });
+ },
+ beforeUnmount() {
+ const el = this.$refs.endedittable as HTMLElement;
+ ($(el).data('scope') as IScope).$destroy();
+ },
+ methods: {
+ scrollToTop() {
+ setTimeout(() => {
+ Matomo.helper.lazyScrollTo('.pageWrap', 200);
+ });
+ },
+ initGoalForm(
+ goalMethodAPI: string,
+ submitText: string,
+ goalName: string,
+ description: string,
+ matchAttribute: string,
+ pattern: string,
+ patternType: string,
+ caseSensitive: boolean,
+ revenue: number,
+ allowMultiple: boolean,
+ useEventValueAsRevenue: boolean,
+ goalId: string|number,
+ ) {
+ Matomo.postEvent('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
+
+ this.apiMethod = goalMethodAPI;
+
+ this.goal = {} as unknown as Goal;
+ this.goal.name = goalName;
+ this.goal.description = description;
+
+ let actualMatchAttribute = matchAttribute;
+ if (actualMatchAttribute === 'manually') {
+ this.triggerType = 'manually';
+ actualMatchAttribute = 'url';
+ } else {
+ this.triggerType = 'visitors';
+ }
+
+ if (actualMatchAttribute.indexOf('event') === 0) {
+ this.eventType = actualMatchAttribute;
+ actualMatchAttribute = 'event';
+ } else {
+ this.eventType = 'event_category';
+ }
+
+ this.goal.match_attribute = actualMatchAttribute;
+ this.goal.allow_multiple = allowMultiple;
+ this.goal.pattern_type = patternType;
+ this.goal.pattern = pattern;
+ this.goal.case_sensitive = caseSensitive;
+ this.goal.revenue = revenue;
+ this.goal.event_value_as_revenue = useEventValueAsRevenue;
+ this.submitText = submitText;
+ this.goal.idgoal = goalId;
+ },
+ showListOfReports() {
+ Matomo.postEvent('Goals.cancelForm');
+ this.showGoalList = true;
+ this.showEditGoal = false;
+ this.scrollToTop();
+ },
+ showAddEditForm() {
+ this.showGoalList = false;
+ this.showEditGoal = true;
+ },
+ createGoal() {
+ const parameters = {
+ isAllowed: true,
+ };
+ Matomo.postEvent('Goals.initAddGoal', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ return;
+ }
+
+ this.showAddEditForm();
+ this.initGoalForm(
+ 'Goals.addGoal',
+ translate('Goals_AddGoal'),
+ '',
+ '',
+ 'url',
+ '',
+ 'contains',
+ false,
+ 0,
+ false,
+ false,
+ 0,
+ );
+ this.scrollToTop();
+ },
+ editGoal(goalId: string|number) {
+ this.showAddEditForm();
+ const goal = this.goals[`${goalId}`] as Goal;
+ this.initGoalForm(
+ 'Goals.updateGoal',
+ translate('Goals_UpdateGoal'),
+ goal.name,
+ goal.description,
+ goal.match_attribute,
+ goal.pattern,
+ goal.pattern_type,
+ !!goal.case_sensitive && goal.case_sensitive !== '0',
+ parseInt(`${goal.revenue}`, 10),
+ !!goal.allow_multiple && goal.allow_multiple !== '0',
+ !!goal.event_value_as_revenue && goal.event_value_as_revenue !== '0',
+ goalId,
+ );
+ this.scrollToTop();
+ },
+ deleteGoal(goalId: string|number) {
+ this.goalToDelete = this.goals[`${goalId}`];
+ Matomo.helper.modalConfirm((this.$refs.confirm as HTMLElement), {
+ yes: () => {
+ this.isLoading = true;
+
+ AjaxHelper.fetch({
+ idGoal: goalId,
+ method: 'Goals.deleteGoal',
+ }).then(() => {
+ window.location.reload();
+ }).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ });
+ },
+ save() {
+ const parameters: QueryParameters = {};
+ // TODO: test removal of encoding, should be handled by ajax request
+ parameters.name = this.goal.name;
+ parameters.description = this.goal.description;
+
+ if (this.isManuallyTriggered) {
+ parameters.matchAttribute = 'manually';
+ parameters.patternType = 'regex';
+ parameters.pattern = '.*';
+ parameters.caseSensitive = 0;
+ } else {
+ parameters.matchAttribute = this.goal.match_attribute;
+
+ if (parameters.matchAttribute === 'event') {
+ parameters.matchAttribute = this.eventType;
+ }
+
+ parameters.patternType = this.goal.pattern_type;
+ parameters.pattern = this.goal.pattern;
+ parameters.caseSensitive = this.goal.case_sensitive ? 1 : 0;
+ }
+ parameters.revenue = this.goal.revenue || 0;
+ parameters.allowMultipleConversionsPerVisit = this.goal.allow_multiple ? 1 : 0;
+ parameters.useEventValueAsRevenue = this.goal.event_value_as_revenue ? 1 : 0;
+
+ parameters.idGoal = this.goal.idgoal;
+ parameters.method = this.apiMethod;
+
+ const isCreate = parameters.method === 'Goals.addGoal';
+ const isUpdate = parameters.method === 'Goals.updateGoal';
+
+ const options: AjaxOptions = {};
+
+ const piwikApiMock = new PiwikApiMock(parameters, options);
+ if (isUpdate) {
+ Matomo.postEvent('Goals.beforeUpdateGoal', parameters, piwikApiMock);
+ } else if (isCreate) {
+ Matomo.postEvent('Goals.beforeAddGoal', parameters, piwikApiMock);
+ }
+
+ if (parameters?.cancelRequest) {
+ return;
+ }
+
+ this.isLoading = true;
+
+ AjaxHelper.fetch(parameters, options).then(() => {
+ const subcategory = MatomoUrl.parsed.value.subcategory as string;
+ if (subcategory === 'Goals_AddNewGoal'
+ && Matomo.helper.isAngularRenderingThePage()
+ ) {
+ // when adding a goal for the first time we need to load manage goals page afterwards
+ ReportingMenuStore.reloadMenuItems().then(() => {
+ MatomoUrl.updateHash({
+ ...MatomoUrl.hashParsed.value,
+ subcategory: 'Goals_ManageGoals',
+ });
+
+ this.isLoading = false;
+ });
+ } else {
+ window.location.reload();
+ }
+ }).catch(() => {
+ this.scrollToTop();
+ this.isLoading = false;
+ });
+ },
+ changedTriggerType() {
+ if (!this.isManuallyTriggered && !this.goal.pattern_type) {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ initPatternType() {
+ if (this.isMatchAttributeNumeric) {
+ this.goal.pattern_type = 'greater_than';
+ } else {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ lcfirst(s: string) {
+ return `${s.substr(0, 1).toLowerCase()}${s.substr(1)}`;
+ },
+ ucfirst(s: string) {
+ return `${s.substr(0, 1).toUpperCase()}${s.substr(1)}`;
+ },
+ },
+ computed: {
+ learnMoreAboutGoalTracking() {
+ return translate(
+ 'Goals_LearnMoreAboutGoalTrackingDocumentation',
+ '<a target="_blank" rel="noreferrer noopener" '
+ + 'href="https://matomo.org/docs/tracking-goals-web-analytics/">',
+ '</a>',
+ );
+ },
+ youCanEnableEcommerceReports() {
+ const link = MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ module: 'SitesManager',
+ action: 'index',
+ });
+
+ const ecommerceReportsText = '<a href="https://matomo.org/docs/ecommerce-analytics/" '
+ + `rel="noreferrer noopener" target="_blank">${translate('Goals_EcommerceReports')}</a>`;
+ const websiteManageText = `<a href='${link}'>${translate('SitesManager_WebsitesManagement')}</a>`;
+
+ return translate(
+ 'Goals_YouCanEnableEcommerceReports',
+ ecommerceReportsText,
+ websiteManageText,
+ );
+ },
+ siteName() {
+ return Matomo.helper.htmlDecode(Matomo.siteName);
+ },
+ whereVisitedPageManuallyCallsJsTrackerText() {
+ const link = 'https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions';
+ return translate(
+ 'Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore',
+ `<a target="_blank" rel="noreferrer noopener" href="${link}">`,
+ '</a>',
+ );
+ },
+ caseSensitiveTitle() {
+ return `${translate('Goals_CaseSensitive')} ${translate('Goals_Optional')}`;
+ },
+ useEventValueAsRevenueHelp() {
+ return `${translate('Goals_EventValueAsRevenueHelp')} <br/><br/> ${translate('Goals_EventValueAsRevenueHelp2')}`;
+ },
+ cancelText() {
+ return translate(
+ 'General_OrCancel',
+ '<a class=\'entityCancelLink\'>',
+ '</a>',
+ );
+ },
+ isMatchAttributeNumeric() {
+ return ['visit_duration'].indexOf(this.goal.match_attribute) > -1;
+ },
+ patternFieldLabel() {
+ return this.goal.match_attribute === 'visit_duration'
+ ? translate('Goals_TimeInMinutes')
+ : translate('Goals_Pattern');
+ },
+ goalMatchAttributeTranslations() {
+ return {
+ manually: translate('Goals_ManuallyTriggeredUsingJavascriptFunction'),
+ file: translate('Goals_Download'),
+ url: translate('Goals_VisitUrl'),
+ title: translate('Goals_VisitPageTitle'),
+ external_website: translate('Goals_ClickOutlink'),
+ event_action: `${translate('Goals_SendEvent')} (${translate('Events_EventAction')})`,
+ event_category: `${translate('Goals_SendEvent')} (${translate('Events_EventCategory')})`,
+ event_name: `${translate('Goals_SendEvent')} (${translate('Events_EventName')})`,
+ visit_duration: `${this.ucfirst(translate('Goals_VisitDuration'))}`,
+ };
+ },
+ beforeGoalListActionsBodyComponent() {
+ if (!this.beforeGoalListActionsBody) {
+ return {};
+ }
+
+ const componentsByIdGoal: Record<string, unknown> = {};
+ Object.values(this.goals as Record<string, Goal>).forEach((g) => {
+ componentsByIdGoal[g.idgoal] = {
+ template: this.beforeGoalListActionsBody![g.idgoal],
+ };
+ });
+ return markRaw(componentsByIdGoal);
+ },
+ endEditTableComponent() {
+ if (!this.endEditTable || !this.addEditTableComponent) {
+ return null;
+ }
+
+ return markRaw({
+ template: this.endEditTable,
+ });
+ },
+ beforeGoalListActionsHeadComponent() {
+ if (!this.beforeGoalListActionsHead) {
+ return null;
+ }
+
+ return markRaw({
+ template: this.beforeGoalListActionsHead,
+ });
+ },
+ isManuallyTriggered() {
+ return this.triggerType === 'manually';
+ },
+ matchesExpressionExternal() {
+ const url = "'http://www.amazon.com\\/(.*)\\/yourAffiliateId'";
+ return translate('Goals_MatchesExpression', url);
+ },
+ },
+});
+</script>
diff --git a/plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts b/plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts
new file mode 100644
index 0000000000..9745fe3543
--- /dev/null
+++ b/plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts
@@ -0,0 +1,38 @@
+/*!
+* Matomo - free/libre analytics platform
+*
+* @link https://matomo.org
+* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+*/
+
+import { AjaxOptions } from 'CoreHome';
+
+// the piwikApi angularjs service is passed in some frontend events to allow plugins to modify
+// a request before it is sent. for the time being in Vue we use this mock, which has the same
+// API as the piwikApi service, to modify the input used with AjaxHelper. this provides BC
+// with for plugins that haven't been converted.
+//
+// should be removed in Matomo 5.
+export default class PiwikApiMock {
+ constructor(private parameters: QueryParameters, private options: AjaxOptions) {}
+
+ addParams(params: QueryParameters): void {
+ Object.assign(this.parameters, params);
+ }
+
+ withTokenInUrl(): void {
+ this.options.withTokenInUrl = true;
+ }
+
+ reset(): void {
+ Object.keys(this.parameters).forEach((name) => {
+ delete this.parameters[name];
+ });
+
+ delete this.options.postParams;
+ }
+
+ addPostParams(params: QueryParameters): void {
+ this.options.postParams = { ...this.options.postParams, ...params };
+ }
+}
diff --git a/plugins/Goals/vue/src/index.ts b/plugins/Goals/vue/src/index.ts
index 5be8221004..a792651336 100644
--- a/plugins/Goals/vue/src/index.ts
+++ b/plugins/Goals/vue/src/index.ts
@@ -3,8 +3,10 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
+*/
import './GoalPageLink/GoalPageLink.adapter';
+import './ManageGoals/ManageGoals.adapter';
export { default as GoalPageLink } from './GoalPageLink/GoalPageLink.ts';
+export { default as ManageGoals } from './ManageGoals/ManageGoals.vue';
diff --git a/plugins/ImageGraph/ImageGraph.php b/plugins/ImageGraph/ImageGraph.php
index 8669f32ffc..f4139c91b0 100644
--- a/plugins/ImageGraph/ImageGraph.php
+++ b/plugins/ImageGraph/ImageGraph.php
@@ -14,7 +14,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Period;
use Piwik\Period\Range;
-use Piwik\Piwik;
use Piwik\Scheduler\Scheduler;
use Piwik\Site;
use Piwik\Url;
diff --git a/plugins/Insights/Controller.php b/plugins/Insights/Controller.php
index 9627902913..546cb783e2 100644
--- a/plugins/Insights/Controller.php
+++ b/plugins/Insights/Controller.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Insights;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Insights\Visualizations\Insight;
use Piwik\View;
/**
diff --git a/plugins/Insights/DataTable/Filter/MinGrowth.php b/plugins/Insights/DataTable/Filter/MinGrowth.php
index b30bdf5346..7d987909d9 100644
--- a/plugins/Insights/DataTable/Filter/MinGrowth.php
+++ b/plugins/Insights/DataTable/Filter/MinGrowth.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Insights\DataTable\Filter;
-use Piwik\DataTable;
use Piwik\DataTable\BaseFilter;
/**
diff --git a/plugins/Insights/Visualizations/Insight/RequestConfig.php b/plugins/Insights/Visualizations/Insight/RequestConfig.php
index b229534059..41d90825a5 100644
--- a/plugins/Insights/Visualizations/Insight/RequestConfig.php
+++ b/plugins/Insights/Visualizations/Insight/RequestConfig.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\Insights\Visualizations\Insight;
use Piwik\Plugins\Insights\InsightReport;
-use Piwik\Plugins\Insights\Visualizations\Insight;
use Piwik\ViewDataTable\RequestConfig as VisualizationRequestConfig;
class RequestConfig extends VisualizationRequestConfig
diff --git a/plugins/Insights/tests/Unit/BaseUnitTest.php b/plugins/Insights/tests/Unit/BaseUnitTest.php
index d7f768aacf..c72eb91feb 100644
--- a/plugins/Insights/tests/Unit/BaseUnitTest.php
+++ b/plugins/Insights/tests/Unit/BaseUnitTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Insights\tests\Unit;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
/**
* Abstract class because it avoids it being picked up as a test case
diff --git a/plugins/Insights/tests/Unit/FilterOrderByTest.php b/plugins/Insights/tests/Unit/FilterOrderByTest.php
index 82e4ae4aae..dc31919071 100644
--- a/plugins/Insights/tests/Unit/FilterOrderByTest.php
+++ b/plugins/Insights/tests/Unit/FilterOrderByTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Insights\tests\Unit;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Plugins\Insights\DataTable\Filter\OrderBy;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* @group Insights
diff --git a/plugins/Insights/tests/Unit/InsightReportTest.php b/plugins/Insights/tests/Unit/InsightReportTest.php
index cf0a916751..ee8969060a 100644
--- a/plugins/Insights/tests/Unit/InsightReportTest.php
+++ b/plugins/Insights/tests/Unit/InsightReportTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Insights\tests\Unit;
use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Insights\InsightReport;
-use Piwik\Plugins\Insights\Visualizations\Insight;
/**
* @group Insights
diff --git a/plugins/Installation/FormSuperUser.php b/plugins/Installation/FormSuperUser.php
index a434275adc..9f9799f31d 100644
--- a/plugins/Installation/FormSuperUser.php
+++ b/plugins/Installation/FormSuperUser.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Installation;
use HTML_QuickForm2_DataSource_Array;
use HTML_QuickForm2_Factory;
use HTML_QuickForm2_Rule;
-use Piwik\Container\StaticContainer;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\QuickForm2;
diff --git a/plugins/Installation/Widgets/GetSystemCheck.php b/plugins/Installation/Widgets/GetSystemCheck.php
index f79829d1c9..23b4817095 100644
--- a/plugins/Installation/Widgets/GetSystemCheck.php
+++ b/plugins/Installation/Widgets/GetSystemCheck.php
@@ -15,7 +15,6 @@ use Piwik\Plugins\Diagnostics\DiagnosticReport;
use Piwik\Plugins\Diagnostics\DiagnosticService;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
class GetSystemCheck extends Widget
{
diff --git a/plugins/Installation/tests/System/APITest.php b/plugins/Installation/tests/System/APITest.php
index 370b99e3bc..54a85ec389 100644
--- a/plugins/Installation/tests/System/APITest.php
+++ b/plugins/Installation/tests/System/APITest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\Installation\tests\System;
-use Piwik\Config;
use Piwik\Http;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/plugins/Intl/Commands/GenerateIntl.php b/plugins/Intl/Commands/GenerateIntl.php
index af7ad7903d..ec035b40bb 100644
--- a/plugins/Intl/Commands/GenerateIntl.php
+++ b/plugins/Intl/Commands/GenerateIntl.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\Intl\Commands;
use DateTimeZone;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Development;
use Piwik\Filesystem;
@@ -41,6 +40,7 @@ class GenerateIntl extends ConsoleCommand
{
$this->setName('translations:generate-intl-data')
->addOption('language', 'l', InputOption::VALUE_OPTIONAL, 'language that should be fetched')
+ ->addOption('cldr-version', '', InputOption::VALUE_OPTIONAL, 'CLDR version to use for update')
->setDescription('Generates Intl-data for Piwik');
}
@@ -71,15 +71,17 @@ class GenerateIntl extends ConsoleCommand
$matomoLanguages = [$input->getOption('language')];
}
+ if ($input->getOption('cldr-version')) {
+ $this->CLDRVersion = $input->getOption('cldr-version');
+ }
+
$aliasesUrl = 'https://raw.githubusercontent.com/unicode-org/cldr-json/%s/cldr-json/cldr-core/supplemental/aliases.json';
$aliasesData = Http::fetchRemoteFile(sprintf($aliasesUrl, $this->CLDRVersion));
$aliasesData = json_decode($aliasesData, true);
- $aliasesData = $aliasesData['supplemental']['metadata']['alias']['languageAlias'];
+ $aliasesData = $aliasesData['supplemental']['metadata']['alias']['languageAlias'] ?? [];
$this->checkCurrencies($output);
- $writePath = Filesystem::getPathToPiwikRoot() . '/plugins/Intl/lang/%s.json';
-
foreach ($matomoLanguages AS $langCode) {
if ($langCode == 'dev') {
@@ -151,7 +153,7 @@ class GenerateIntl extends ConsoleCommand
$currencyData = Http::fetchRemoteFile(sprintf($currencyDataUrl, $this->CLDRVersion, 'en'));
$currencyData = json_decode($currencyData, true);
- $currencyData = $currencyData['supplemental']['currencyData']['region'];
+ $currencyData = $currencyData['supplemental']['currencyData']['region'] ?? [];
$cldrCurrencies = array();
foreach ($currencyData as $region) {
@@ -188,7 +190,7 @@ class GenerateIntl extends ConsoleCommand
if (empty($languageData)) {
$languageData = Http::fetchRemoteFile(sprintf($languageDataUrl, $this->CLDRVersion, 'en'));
$languageData = json_decode($languageData, true);
- $languageData = $languageData['main']['en']['localeDisplayNames']['languages'];
+ $languageData = $languageData['main']['en']['localeDisplayNames']['languages'] ?? [];
}
if (array_key_exists($code, $languageData) && $languageData[$code] != $code) {
@@ -213,7 +215,7 @@ class GenerateIntl extends ConsoleCommand
try {
$territoryData = Http::fetchRemoteFile(sprintf($territoryDataUrl, $this->CLDRVersion, 'en'));
$territoryData = json_decode($territoryData, true);
- $territoryData = $territoryData['main']['en']['localeDisplayNames']['territories'];
+ $territoryData = $territoryData['main']['en']['localeDisplayNames']['territories'] ?? [];
if (array_key_exists($territory, $territoryData)) {
$englishName .= ' ('.$territoryData[$territory].')';
@@ -242,7 +244,7 @@ class GenerateIntl extends ConsoleCommand
try {
$languageData = Http::fetchRemoteFile(sprintf($languageDataUrl, $this->CLDRVersion, $requestLangCode));
$languageData = json_decode($languageData, true);
- $languageData = $languageData['main'][$requestLangCode]['localeDisplayNames']['languages'];
+ $languageData = $languageData['main'][$requestLangCode]['localeDisplayNames']['languages'] ?? [];
if (empty($languageData)) {
throw new \Exception();
@@ -274,7 +276,7 @@ class GenerateIntl extends ConsoleCommand
try {
$layoutData = Http::fetchRemoteFile(sprintf($layoutDirectionUrl, $this->CLDRVersion, $requestLangCode));
$layoutData = json_decode($layoutData, true);
- $layoutData = $layoutData['main'][$requestLangCode]['layout']['orientation'];
+ $layoutData = $layoutData['main'][$requestLangCode]['layout']['orientation'] ?? [];
if (empty($layoutData)) {
throw new \Exception();
@@ -312,7 +314,7 @@ class GenerateIntl extends ConsoleCommand
try {
$territoryData = Http::fetchRemoteFile(sprintf($territoryDataUrl, $this->CLDRVersion, $requestLangCode));
$territoryData = json_decode($territoryData, true);
- $territoryData = $territoryData['main'][$requestLangCode]['localeDisplayNames']['territories'];
+ $territoryData = $territoryData['main'][$requestLangCode]['localeDisplayNames']['territories'] ?? [];
if (empty($territoryData)) {
throw new \Exception();
@@ -343,7 +345,7 @@ class GenerateIntl extends ConsoleCommand
try {
$calendarData = Http::fetchRemoteFile(sprintf($calendarDataUrl, $this->CLDRVersion, $requestLangCode));
$calendarData = json_decode($calendarData, true);
- $calendarData = $calendarData['main'][$requestLangCode]['dates']['calendars']['gregorian'];
+ $calendarData = $calendarData['main'][$requestLangCode]['dates']['calendars']['gregorian'] ?? [];
if (empty($calendarData)) {
throw new \Exception();
@@ -419,7 +421,7 @@ class GenerateIntl extends ConsoleCommand
try {
$dateFieldData = Http::fetchRemoteFile(sprintf($dateFieldsUrl, $this->CLDRVersion, $requestLangCode));
$dateFieldData = json_decode($dateFieldData, true);
- $dateFieldData = $dateFieldData['main'][$requestLangCode]['dates']['fields'];
+ $dateFieldData = $dateFieldData['main'][$requestLangCode]['dates']['fields'] ?? [];
if (empty($dateFieldData)) {
throw new \Exception();
@@ -446,7 +448,7 @@ class GenerateIntl extends ConsoleCommand
try {
$timeZoneData = Http::fetchRemoteFile(sprintf($timeZoneDataUrl, $this->CLDRVersion, $requestLangCode));
$timeZoneData = json_decode($timeZoneData, true);
- $timeZoneData = $timeZoneData['main'][$requestLangCode]['dates']['timeZoneNames'];
+ $timeZoneData = $timeZoneData['main'][$requestLangCode]['dates']['timeZoneNames'] ?? [];
if (empty($timeZoneData)) {
throw new \Exception();
@@ -509,7 +511,7 @@ class GenerateIntl extends ConsoleCommand
try {
$unitsData = Http::fetchRemoteFile(sprintf($unitsUrl, $this->CLDRVersion, $requestLangCode));
$unitsData = json_decode($unitsData, true);
- $unitsData = $unitsData['main'][$requestLangCode]['numbers'];
+ $unitsData = $unitsData['main'][$requestLangCode]['numbers'] ?? [];
if (empty($unitsData)) {
throw new \Exception();
@@ -539,7 +541,7 @@ class GenerateIntl extends ConsoleCommand
try {
$unitsData = Http::fetchRemoteFile(sprintf($unitsUrl, $this->CLDRVersion, $requestLangCode));
$unitsData = json_decode($unitsData, true);
- $unitsData = $unitsData['main'][$requestLangCode]['units'];
+ $unitsData = $unitsData['main'][$requestLangCode]['units'] ?? [];
if (empty($unitsData)) {
throw new \Exception();
@@ -597,7 +599,7 @@ class GenerateIntl extends ConsoleCommand
try {
$currencyData = Http::fetchRemoteFile(sprintf($currenciesUrl, $this->CLDRVersion, $requestLangCode));
$currencyData = json_decode($currencyData, true);
- $currencyData = $currencyData['main'][$requestLangCode]['numbers']['currencies'];
+ $currencyData = $currencyData['main'][$requestLangCode]['numbers']['currencies'] ?? [];
if (empty($currencyData)) {
throw new \Exception();
diff --git a/plugins/Intl/lang/be.json b/plugins/Intl/lang/be.json
index c92b71efc8..b9014f0640 100644
--- a/plugins/Intl/lang/be.json
+++ b/plugins/Intl/lang/be.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Ліванскі фунт",
"Currency_LKR": "Шры-ланкійская рупія",
"Currency_LRD": "Ліберыйскі долар",
- "Currency_LSL": "LSL",
+ "Currency_LSL": "Лесоцкі лоці",
"Currency_LYD": "Лівійскі дынар",
"Currency_MAD": "Мараканскі дырхам",
"Currency_MDL": "Малдаўскі лей",
@@ -613,10 +613,10 @@
"Day_Short_StandAlone_7": "нд",
"EnglishLanguageName": "Belarusian",
"Format_DateTime_Long": "EEEE, d MMMM y 'г'. {time}",
- "Format_DateTime_Short": "d.MM.y {time}",
+ "Format_DateTime_Short": "d MMM y 'г'. {time}",
"Format_Date_Day_Month": "E, d MMM",
"Format_Date_Long": "EEEE, d MMMM y 'г'.",
- "Format_Date_Short": "d.MM.y",
+ "Format_Date_Short": "d MMM y 'г'.",
"Format_Hour_12": "hh a",
"Format_Hour_24": "HH",
"Format_Interval_Long_D": "d–d MMMM y",
diff --git a/plugins/Intl/lang/ca.json b/plugins/Intl/lang/ca.json
index 7b63e2607e..57faf473fc 100644
--- a/plugins/Intl/lang/ca.json
+++ b/plugins/Intl/lang/ca.json
@@ -22,7 +22,7 @@
"Country_AT": "Àustria",
"Country_AU": "Austràlia",
"Country_AW": "Aruba",
- "Country_AX": "Illes Åland",
+ "Country_AX": "Illes Aland",
"Country_AZ": "Azerbaidjan",
"Country_BA": "Bòsnia i Hercegovina",
"Country_BB": "Barbados",
@@ -33,11 +33,11 @@
"Country_BH": "Bahrain",
"Country_BI": "Burundi",
"Country_BJ": "Benín",
- "Country_BL": "Saint Barthélemy",
+ "Country_BL": "Saint-Barthélemy",
"Country_BM": "Bermudes",
"Country_BN": "Brunei",
"Country_BO": "Bolívia",
- "Country_BQ": "Carib Neerlandès",
+ "Country_BQ": "Antilles Neerlandeses",
"Country_BR": "Brasil",
"Country_BS": "Bahames",
"Country_BT": "Bhutan",
@@ -127,7 +127,7 @@
"Country_KH": "Cambodja",
"Country_KI": "Kiribati",
"Country_KM": "Comores",
- "Country_KN": "Saint Christopher i Nevis",
+ "Country_KN": "Saint Kitts i Nevis",
"Country_KP": "Corea del Nord",
"Country_KR": "Corea del Sud",
"Country_KW": "Kuwait",
@@ -206,7 +206,7 @@
"Country_SD": "Sudan",
"Country_SE": "Suècia",
"Country_SG": "Singapur",
- "Country_SH": "Saint Helena",
+ "Country_SH": "Santa Helena",
"Country_SI": "Eslovènia",
"Country_SJ": "Svalbard i Jan Mayen",
"Country_SK": "Eslovàquia",
@@ -246,8 +246,8 @@
"Country_VA": "Ciutat del Vaticà",
"Country_VC": "Saint Vincent i les Grenadines",
"Country_VE": "Veneçuela",
- "Country_VG": "Illes Verges Britàniques",
- "Country_VI": "Illes Verges Nord-americanes",
+ "Country_VG": "Illes Verges britàniques",
+ "Country_VI": "Illes Verges nord-americanes",
"Country_VN": "Vietnam",
"Country_VU": "Vanuatu",
"Country_WF": "Wallis i Futuna",
@@ -413,10 +413,10 @@
"CurrencySymbol_YER": "YER",
"CurrencySymbol_ZAR": "ZAR",
"CurrencySymbol_ZMW": "ZMW",
- "Currency_AED": "Dírham de la UEA",
+ "Currency_AED": "Dírham dels Emirats Àrabs Units",
"Currency_AFN": "Afgani afganès",
- "Currency_ALL": "Lek albanès",
- "Currency_AMD": "Dram armeni",
+ "Currency_ALL": "Lek",
+ "Currency_AMD": "Dram",
"Currency_ANG": "Florí de les Antilles Neerlandeses",
"Currency_AOA": "Kwanza angolès",
"Currency_ARS": "Peso argentí",
@@ -425,8 +425,8 @@
"Currency_AZN": "Manat azerbaidjanès",
"Currency_BAM": "Marc convertible de Bòsnia i Hercegovina",
"Currency_BBD": "Dòlar de Barbados",
- "Currency_BDT": "Taka de Bangla Desh",
- "Currency_BGN": "Lev búlgar",
+ "Currency_BDT": "Taka",
+ "Currency_BGN": "Lev",
"Currency_BHD": "Dinar de Bahrain",
"Currency_BIF": "Franc de Burundi",
"Currency_BMD": "Dòlar de les Bermudes",
@@ -443,7 +443,7 @@
"Currency_CDF": "Franc congolès",
"Currency_CHF": "Franc suís",
"Currency_CLP": "Peso xilè",
- "Currency_CNY": "Iuan xinès",
+ "Currency_CNY": "Iuan",
"Currency_COP": "Peso colombià",
"Currency_CRC": "Colon costa-riqueny",
"Currency_CUC": "Peso convertible cubà",
@@ -460,19 +460,19 @@
"Currency_EUR": "Euro",
"Currency_FJD": "Dòlar fijià",
"Currency_FKP": "Lliura de les illes Malvines",
- "Currency_GBP": "Lliura esterlina britànica",
- "Currency_GEL": "Lari georgià",
+ "Currency_GBP": "Lliura esterlina",
+ "Currency_GEL": "Lari",
"Currency_GHS": "Cedi ghanès",
"Currency_GIP": "Lliura de Gibraltar",
"Currency_GMD": "Dalasi gambià",
"Currency_GNF": "Franc guineà",
- "Currency_GTQ": "Quetzal guatemalenc",
+ "Currency_GTQ": "Quetzal",
"Currency_GYD": "Dòlar de Guyana",
"Currency_HKD": "Dòlar de Hong Kong",
- "Currency_HNL": "Lempira hondurenya",
- "Currency_HRK": "Kuna croata",
- "Currency_HTG": "Gourde haitià",
- "Currency_HUF": "Fòrint hongarès",
+ "Currency_HNL": "Lempira",
+ "Currency_HRK": "Kuna",
+ "Currency_HTG": "Gourde",
+ "Currency_HUF": "Fòrint",
"Currency_IDR": "Rupia indonèsia",
"Currency_ILS": "Nou xéquel israelià",
"Currency_INR": "Rupia índia",
@@ -481,7 +481,7 @@
"Currency_ISK": "Corona islandesa",
"Currency_JMD": "Dòlar jamaicà",
"Currency_JOD": "Dinar jordà",
- "Currency_JPY": "Ien japonès",
+ "Currency_JPY": "Ien",
"Currency_KES": "Xíling kenyà",
"Currency_KGS": "Som kirguís",
"Currency_KHR": "Riel cambodjà",
@@ -490,17 +490,17 @@
"Currency_KRW": "Won sud-coreà",
"Currency_KWD": "Dinar kuwaitià",
"Currency_KYD": "Dòlar de les illes Caiman",
- "Currency_KZT": "Tenge kazakh",
+ "Currency_KZT": "Tenge",
"Currency_LAK": "Kip laosià",
"Currency_LBP": "Lliura libanesa",
"Currency_LKR": "Rupia de Sri Lanka",
"Currency_LRD": "Dòlar liberià",
- "Currency_LSL": "Loti de Lesotho",
+ "Currency_LSL": "Loti",
"Currency_LYD": "Dinar libi",
"Currency_MAD": "Dírham marroquí",
"Currency_MDL": "Leu moldau",
"Currency_MGA": "Ariary malgaix",
- "Currency_MKD": "Denar macedoni",
+ "Currency_MKD": "Dinar macedoni",
"Currency_MMK": "Kyat de Myanmar",
"Currency_MNT": "Tögrög mongol",
"Currency_MOP": "Pataca de Macau",
@@ -509,7 +509,7 @@
"Currency_MVR": "Rupia de les Maldives",
"Currency_MWK": "Kwacha malawià",
"Currency_MXN": "Peso mexicà",
- "Currency_MYR": "Ringgit de Malàisia",
+ "Currency_MYR": "Ringgit",
"Currency_MZN": "Metical moçambiquès",
"Currency_NAD": "Dòlar namibià",
"Currency_NGN": "Naira nigerià",
@@ -518,17 +518,17 @@
"Currency_NPR": "Rupia nepalesa",
"Currency_NZD": "Dòlar neozelandès",
"Currency_OMR": "Rial omanita",
- "Currency_PAB": "Balboa panameny",
- "Currency_PEN": "Sol peruà",
- "Currency_PGK": "Kina de Papua Nova Guinea",
+ "Currency_PAB": "Balboa",
+ "Currency_PEN": "Sol",
+ "Currency_PGK": "Kina",
"Currency_PHP": "Peso filipí",
"Currency_PKR": "Rupia pakistanesa",
- "Currency_PLN": "Zloty polonès",
- "Currency_PYG": "Guaraní paraguaià",
+ "Currency_PLN": "Zloty",
+ "Currency_PYG": "Guaraní",
"Currency_QAR": "Rial de Qatar",
"Currency_RON": "Leu romanès",
"Currency_RSD": "Dinar serbi",
- "Currency_RUB": "Ruble rus",
+ "Currency_RUB": "Ruble",
"Currency_RWF": "Franc de Ruanda",
"Currency_SAR": "Rial saudita",
"Currency_SBD": "Dòlar de les illes Salomó",
@@ -544,7 +544,7 @@
"Currency_STN": "Dobra de São Tomé i Príncipe",
"Currency_SYP": "Lliura siriana",
"Currency_SZL": "Lilangeni swazi",
- "Currency_THB": "Baht tailandès",
+ "Currency_THB": "Baht",
"Currency_TJS": "Somoni tadjik",
"Currency_TMT": "Manat turcman",
"Currency_TND": "Dinar tunisià",
@@ -553,7 +553,7 @@
"Currency_TTD": "Dòlar de Trinitat i Tobago",
"Currency_TWD": "Nou dòlar de Taiwan",
"Currency_TZS": "Xíling tanzà",
- "Currency_UAH": "Hrívnia ucraïnesa",
+ "Currency_UAH": "Hrívnia",
"Currency_UGX": "Xíling ugandès",
"Currency_USD": "Dòlar dels Estats Units",
"Currency_UYU": "Peso uruguaià",
diff --git a/plugins/Intl/lang/cs.json b/plugins/Intl/lang/cs.json
index 31b01054b1..e53ad6fe3a 100644
--- a/plugins/Intl/lang/cs.json
+++ b/plugins/Intl/lang/cs.json
@@ -865,7 +865,7 @@
"Month_Short_StandAlone_7": "čvc",
"Month_Short_StandAlone_8": "srp",
"Month_Short_StandAlone_9": "zář",
- "NDays": "%s dní",
+ "NDays": "%s dnů",
"NHoursShort": "%s h",
"NMinutes": "%s minut",
"NMinutesShort": "%s min",
diff --git a/plugins/Intl/lang/cy.json b/plugins/Intl/lang/cy.json
index 333314310b..def1b11fde 100644
--- a/plugins/Intl/lang/cy.json
+++ b/plugins/Intl/lang/cy.json
@@ -732,7 +732,7 @@
"Language_lv": "Latfieg",
"Language_mg": "Malagaseg",
"Language_mh": "Marsialeg",
- "Language_mi": "Maori",
+ "Language_mi": "Māori",
"Language_mk": "Macedoneg",
"Language_ml": "Malayalam",
"Language_mn": "Mongoleg",
diff --git a/plugins/Intl/lang/de.json b/plugins/Intl/lang/de.json
index 57204470be..4d9ecbeae8 100644
--- a/plugins/Intl/lang/de.json
+++ b/plugins/Intl/lang/de.json
@@ -733,7 +733,7 @@
"Language_lv": "Lettisch",
"Language_mg": "Malagasy",
"Language_mh": "Marschallesisch",
- "Language_mi": "Maori",
+ "Language_mi": "Māori",
"Language_mk": "Mazedonisch",
"Language_ml": "Malayalam",
"Language_mn": "Mongolisch",
diff --git a/plugins/Intl/lang/el.json b/plugins/Intl/lang/el.json
index 647e6de064..b2c3046ede 100644
--- a/plugins/Intl/lang/el.json
+++ b/plugins/Intl/lang/el.json
@@ -612,19 +612,19 @@
"Day_Short_StandAlone_6": "Σάβ",
"Day_Short_StandAlone_7": "Κυρ",
"EnglishLanguageName": "Greek",
- "Format_DateTime_Long": "EEEE, d MMMM y {time}",
+ "Format_DateTime_Long": "EEEE d MMMM y {time}",
"Format_DateTime_Short": "d MMM y {time}",
- "Format_Date_Day_Month": "E, d MMM",
- "Format_Date_Long": "EEEE, d MMMM y",
+ "Format_Date_Day_Month": "E d MMM",
+ "Format_Date_Long": "EEEE d MMMM y",
"Format_Date_Short": "d MMM y",
"Format_Hour_12": "h a",
"Format_Hour_24": "HH",
- "Format_Interval_Long_D": "dd–dd MMMM y",
- "Format_Interval_Long_M": "dd MMMM – dd MMMM y",
- "Format_Interval_Long_Y": "dd MMMM y – dd MMMM y",
- "Format_Interval_Short_D": "dd–dd MMM y",
- "Format_Interval_Short_M": "dd MMM – dd MMM y",
- "Format_Interval_Short_Y": "dd MMM y – dd MMM y",
+ "Format_Interval_Long_D": "d–d MMMM y",
+ "Format_Interval_Long_M": "d MMMM – d MMMM y",
+ "Format_Interval_Long_Y": "d MMMM y – d MMMM y",
+ "Format_Interval_Short_D": "d–d MMM y",
+ "Format_Interval_Short_M": "d MMM – d MMM y",
+ "Format_Interval_Short_Y": "d MMM y – d MMM y",
"Format_Month_Long": "LLLL y",
"Format_Month_Short": "MMM y",
"Format_Time": "{time}",
@@ -684,7 +684,7 @@
"Language_gd": "Σκωτικά Κελτικά",
"Language_gl": "Γαλικιανά",
"Language_gn": "Γκουαρανί",
- "Language_gu": "Γκουγιαράτι",
+ "Language_gu": "Γκουτζαρατικά",
"Language_gv": "Μανξ",
"Language_ha": "Χάουσα",
"Language_he": "Εβραϊκά",
@@ -802,7 +802,7 @@
"Language_ty": "Ταϊτιανά",
"Language_ug": "Ουιγουρικά",
"Language_uk": "Ουκρανικά",
- "Language_ur": "Ουρντού",
+ "Language_ur": "Ούρντου",
"Language_uz": "Ουζμπεκικά",
"Language_ve": "Βέντα",
"Language_vi": "Βιετναμικά",
@@ -868,7 +868,7 @@
"NDays": "%s ημέρες",
"NHoursShort": "%s ώ",
"NMinutes": "%s λεπτά",
- "NMinutesShort": "%s λεπ.",
+ "NMinutesShort": "%s λ.",
"NSeconds": "%s δευτερόλεπτα",
"NSecondsShort": "%s δ",
"NumberFormatCurrency": "#,##0.00 ¤",
@@ -881,7 +881,7 @@
"NumberSymbolPlus": "+",
"OneDay": "1 ημέρα",
"OneMinute": "1 λεπτό",
- "OneMinuteShort": "1 λεπ.",
+ "OneMinuteShort": "1 λ.",
"OriginalLanguageName": "Ελληνικά",
"PeriodDay": "ημέρα",
"PeriodDays": "ημέρες",
diff --git a/plugins/Intl/lang/en.json b/plugins/Intl/lang/en.json
index 31b5614abc..77b7520994 100644
--- a/plugins/Intl/lang/en.json
+++ b/plugins/Intl/lang/en.json
@@ -733,7 +733,7 @@
"Language_lv": "Latvian",
"Language_mg": "Malagasy",
"Language_mh": "Marshallese",
- "Language_mi": "Maori",
+ "Language_mi": "Māori",
"Language_mk": "Macedonian",
"Language_ml": "Malayalam",
"Language_mn": "Mongolian",
diff --git a/plugins/Intl/lang/es-ar.json b/plugins/Intl/lang/es-ar.json
index 402655e0b4..570e1b6d3c 100644
--- a/plugins/Intl/lang/es-ar.json
+++ b/plugins/Intl/lang/es-ar.json
@@ -426,8 +426,8 @@
"Currency_BAM": "Marco convertible de Bosnia y Herzegovina",
"Currency_BBD": "Dólar barbadense",
"Currency_BDT": "Taka",
- "Currency_BGN": "Lev búlgaro",
- "Currency_BHD": "Dinar bahreiní",
+ "Currency_BGN": "Leva búlgara",
+ "Currency_BHD": "Dinar bareiní",
"Currency_BIF": "Franco burundés",
"Currency_BMD": "Dólar de Bermudas",
"Currency_BND": "Dólar bruneano",
@@ -490,12 +490,12 @@
"Currency_KRW": "Won surcoreano",
"Currency_KWD": "Dinar kuwaití",
"Currency_KYD": "Dólar de las Islas Caimán",
- "Currency_KZT": "Tenge kazako",
+ "Currency_KZT": "Tenge kazajo",
"Currency_LAK": "Kip",
"Currency_LBP": "Libra libanesa",
"Currency_LKR": "Rupia esrilanquesa",
"Currency_LRD": "Dólar liberiano",
- "Currency_LSL": "Loti lesothense",
+ "Currency_LSL": "Loti lesotense",
"Currency_LYD": "Dinar libio",
"Currency_MAD": "Dírham marroquí",
"Currency_MDL": "Leu moldavo",
@@ -604,13 +604,13 @@
"Day_Short_5": "vie",
"Day_Short_6": "sáb",
"Day_Short_7": "dom",
- "Day_Short_StandAlone_1": "lun.",
- "Day_Short_StandAlone_2": "mar.",
- "Day_Short_StandAlone_3": "mié.",
- "Day_Short_StandAlone_4": "jue.",
- "Day_Short_StandAlone_5": "vie.",
- "Day_Short_StandAlone_6": "sáb.",
- "Day_Short_StandAlone_7": "dom.",
+ "Day_Short_StandAlone_1": "lun",
+ "Day_Short_StandAlone_2": "mar",
+ "Day_Short_StandAlone_3": "mié",
+ "Day_Short_StandAlone_4": "jue",
+ "Day_Short_StandAlone_5": "vie",
+ "Day_Short_StandAlone_6": "sáb",
+ "Day_Short_StandAlone_7": "dom",
"EnglishLanguageName": "Spanish (Argentina)",
"Format_DateTime_Long": "EEEE, d 'de' MMMM 'de' y {time}",
"Format_DateTime_Short": "d MMM y {time}",
@@ -620,8 +620,8 @@
"Format_Hour_12": "h a",
"Format_Hour_24": "HH",
"Format_Interval_Long_D": "d–d 'de' MMMM 'de' y",
- "Format_Interval_Long_M": "d 'de' MMMM–d 'de' MMMM 'de' y",
- "Format_Interval_Long_Y": "d 'de' MMMM 'de' y–d 'de' MMMM 'de' y",
+ "Format_Interval_Long_M": "d 'de' MMMM – d 'de' MMMM 'de' y",
+ "Format_Interval_Long_Y": "d 'de' MMMM 'de' y – d 'de' MMMM 'de' y",
"Format_Interval_Short_D": "d – d 'de' MMM 'de' y",
"Format_Interval_Short_M": "d 'de' MMM 'al' d 'de' MMM 'de' y",
"Format_Interval_Short_Y": "d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y",
@@ -735,7 +735,7 @@
"Language_mh": "Marshalés",
"Language_mi": "Maorí",
"Language_mk": "Macedonio",
- "Language_ml": "Malayalam",
+ "Language_ml": "Malabar",
"Language_mn": "Mongol",
"Language_mr": "Maratí",
"Language_ms": "Malayo",
@@ -841,30 +841,30 @@
"Month_Long_StandAlone_7": "julio",
"Month_Long_StandAlone_8": "agosto",
"Month_Long_StandAlone_9": "septiembre",
- "Month_Short_1": "ene.",
- "Month_Short_10": "oct.",
- "Month_Short_11": "nov.",
- "Month_Short_12": "dic.",
- "Month_Short_2": "feb.",
- "Month_Short_3": "mar.",
- "Month_Short_4": "abr.",
- "Month_Short_5": "may.",
- "Month_Short_6": "jun.",
- "Month_Short_7": "jul.",
- "Month_Short_8": "ago.",
- "Month_Short_9": "sep.",
- "Month_Short_StandAlone_1": "ene.",
- "Month_Short_StandAlone_10": "oct.",
- "Month_Short_StandAlone_11": "nov.",
- "Month_Short_StandAlone_12": "dic.",
- "Month_Short_StandAlone_2": "feb.",
- "Month_Short_StandAlone_3": "mar.",
- "Month_Short_StandAlone_4": "abr.",
- "Month_Short_StandAlone_5": "may.",
- "Month_Short_StandAlone_6": "jun.",
- "Month_Short_StandAlone_7": "jul.",
- "Month_Short_StandAlone_8": "ago.",
- "Month_Short_StandAlone_9": "sep.",
+ "Month_Short_1": "ene",
+ "Month_Short_10": "oct",
+ "Month_Short_11": "nov",
+ "Month_Short_12": "dic",
+ "Month_Short_2": "feb",
+ "Month_Short_3": "mar",
+ "Month_Short_4": "abr",
+ "Month_Short_5": "may",
+ "Month_Short_6": "jun",
+ "Month_Short_7": "jul",
+ "Month_Short_8": "ago",
+ "Month_Short_9": "sept",
+ "Month_Short_StandAlone_1": "ene",
+ "Month_Short_StandAlone_10": "oct",
+ "Month_Short_StandAlone_11": "nov",
+ "Month_Short_StandAlone_12": "dic",
+ "Month_Short_StandAlone_2": "feb",
+ "Month_Short_StandAlone_3": "mar",
+ "Month_Short_StandAlone_4": "abr",
+ "Month_Short_StandAlone_5": "may",
+ "Month_Short_StandAlone_6": "jun",
+ "Month_Short_StandAlone_7": "jul",
+ "Month_Short_StandAlone_8": "ago",
+ "Month_Short_StandAlone_9": "sept",
"NDays": "%s días",
"NHoursShort": "%sh",
"NMinutes": "%s minutos",
diff --git a/plugins/Intl/lang/es.json b/plugins/Intl/lang/es.json
index 488fd9dac9..66c6815236 100644
--- a/plugins/Intl/lang/es.json
+++ b/plugins/Intl/lang/es.json
@@ -426,8 +426,8 @@
"Currency_BAM": "Marco convertible de Bosnia y Herzegovina",
"Currency_BBD": "Dólar barbadense",
"Currency_BDT": "Taka",
- "Currency_BGN": "Lev búlgaro",
- "Currency_BHD": "Dinar bahreiní",
+ "Currency_BGN": "Leva búlgara",
+ "Currency_BHD": "Dinar bareiní",
"Currency_BIF": "Franco burundés",
"Currency_BMD": "Dólar bermudeño",
"Currency_BND": "Dólar bruneano",
@@ -471,7 +471,7 @@
"Currency_HKD": "Dólar hongkonés",
"Currency_HNL": "Lempira hondureño",
"Currency_HRK": "Kuna",
- "Currency_HTG": "Gourde haitiano",
+ "Currency_HTG": "Gurde haitiano",
"Currency_HUF": "Forinto húngaro",
"Currency_IDR": "Rupia indonesia",
"Currency_ILS": "Nuevo séquel israelí",
@@ -490,12 +490,12 @@
"Currency_KRW": "Won surcoreano",
"Currency_KWD": "Dinar kuwaití",
"Currency_KYD": "Dólar de las Islas Caimán",
- "Currency_KZT": "Tenge kazako",
+ "Currency_KZT": "Tengue kazajo",
"Currency_LAK": "Kip",
"Currency_LBP": "Libra libanesa",
"Currency_LKR": "Rupia esrilanquesa",
"Currency_LRD": "Dólar liberiano",
- "Currency_LSL": "Loti lesothense",
+ "Currency_LSL": "Loti lesotense",
"Currency_LYD": "Dinar libio",
"Currency_MAD": "Dírham marroquí",
"Currency_MDL": "Leu moldavo",
@@ -620,8 +620,8 @@
"Format_Hour_12": "h a",
"Format_Hour_24": "H",
"Format_Interval_Long_D": "d–d 'de' MMMM 'de' y",
- "Format_Interval_Long_M": "d 'de' MMMM–d 'de' MMMM 'de' y",
- "Format_Interval_Long_Y": "d 'de' MMMM 'de' y–d 'de' MMMM 'de' y",
+ "Format_Interval_Long_M": "d 'de' MMMM – d 'de' MMMM 'de' y",
+ "Format_Interval_Long_Y": "d 'de' MMMM 'de' y – d 'de' MMMM 'de' y",
"Format_Interval_Short_D": "d–d MMM y",
"Format_Interval_Short_M": "d MMM – d MMM y",
"Format_Interval_Short_Y": "d MMM y – d MMM y",
@@ -717,7 +717,7 @@
"Language_kn": "Canarés",
"Language_ko": "Coreano",
"Language_kr": "Kanuri",
- "Language_ks": "Cachemiro",
+ "Language_ks": "Cachemir",
"Language_ku": "Kurdo",
"Language_kv": "Komi",
"Language_kw": "Córnico",
@@ -735,7 +735,7 @@
"Language_mh": "Marshalés",
"Language_mi": "Maorí",
"Language_mk": "Macedonio",
- "Language_ml": "Malayalam",
+ "Language_ml": "Malayálam",
"Language_mn": "Mongol",
"Language_mr": "Maratí",
"Language_ms": "Malayo",
diff --git a/plugins/Intl/lang/et.json b/plugins/Intl/lang/et.json
index 0afbf957ac..13d1ac6f2d 100644
--- a/plugins/Intl/lang/et.json
+++ b/plugins/Intl/lang/et.json
@@ -569,20 +569,20 @@
"Currency_YER": "Jeemeni riaal",
"Currency_ZAR": "Lõuna-Aafrika rand",
"Currency_ZMW": "Sambia kvatša",
- "Day_Long_1": "esmaspäev",
- "Day_Long_2": "teisipäev",
- "Day_Long_3": "kolmapäev",
- "Day_Long_4": "neljapäev",
- "Day_Long_5": "reede",
- "Day_Long_6": "laupäev",
- "Day_Long_7": "pühapäev",
- "Day_Long_StandAlone_1": "esmaspäev",
- "Day_Long_StandAlone_2": "teisipäev",
- "Day_Long_StandAlone_3": "kolmapäev",
- "Day_Long_StandAlone_4": "neljapäev",
- "Day_Long_StandAlone_5": "reede",
- "Day_Long_StandAlone_6": "laupäev",
- "Day_Long_StandAlone_7": "pühapäev",
+ "Day_Long_1": "Esmaspäev",
+ "Day_Long_2": "Teisipäev",
+ "Day_Long_3": "Kolmapäev",
+ "Day_Long_4": "Neljapäev",
+ "Day_Long_5": "Reede",
+ "Day_Long_6": "Laupäev",
+ "Day_Long_7": "Pühapäev",
+ "Day_Long_StandAlone_1": "Esmaspäev",
+ "Day_Long_StandAlone_2": "Teisipäev",
+ "Day_Long_StandAlone_3": "Kolmapäev",
+ "Day_Long_StandAlone_4": "Neljapäev",
+ "Day_Long_StandAlone_5": "Reede",
+ "Day_Long_StandAlone_6": "Laupäev",
+ "Day_Long_StandAlone_7": "Pühapäev",
"Day_Min_1": "E",
"Day_Min_2": "T",
"Day_Min_3": "K",
diff --git a/plugins/Intl/lang/eu.json b/plugins/Intl/lang/eu.json
index 21e15c7200..8a0dff7c2a 100644
--- a/plugins/Intl/lang/eu.json
+++ b/plugins/Intl/lang/eu.json
@@ -417,7 +417,7 @@
"Currency_AFN": "Afgani afganiarra",
"Currency_ALL": "Lek albaniarra",
"Currency_AMD": "Dram armeniarra",
- "Currency_ANG": "Holandarren Antilletako florina",
+ "Currency_ANG": "Florin antillarra",
"Currency_AOA": "Kwanza angolarra",
"Currency_ARS": "Peso argentinarra",
"Currency_AUD": "Dolar australiarra",
@@ -445,7 +445,7 @@
"Currency_CLP": "Peso txiletarra",
"Currency_CNY": "Yuan txinatarra",
"Currency_COP": "Peso kolonbiarra",
- "Currency_CRC": "Costa Ricako colona",
+ "Currency_CRC": "Colon costarricarra",
"Currency_CUC": "Peso bihurgarri kubatarra",
"Currency_CUP": "Peso kubatarra",
"Currency_CVE": "Ezkutu caboverdetarra",
@@ -464,7 +464,7 @@
"Currency_GEL": "Lari georgiarra",
"Currency_GHS": "Cedi ghanatarra",
"Currency_GIP": "Libera gibraltartarra",
- "Currency_GMD": "Dalasi ganbiarra",
+ "Currency_GMD": "Dalasi gambiarra",
"Currency_GNF": "Franko ginearra",
"Currency_GTQ": "Ketzal guatemalarra",
"Currency_GYD": "Dolar guyanarra",
@@ -472,7 +472,7 @@
"Currency_HNL": "Lempira hodurastarra",
"Currency_HRK": "Kuna kroaziarra",
"Currency_HTG": "Gourde haitiarra",
- "Currency_HUF": "Florin hungariarra",
+ "Currency_HUF": "Forint hungariarra",
"Currency_IDR": "Errupia indonesiarra",
"Currency_ILS": "Shekel israeldar berria",
"Currency_INR": "Errupia indiarra",
@@ -495,7 +495,7 @@
"Currency_LBP": "Libera libanoarra",
"Currency_LKR": "Errupia srilankarra",
"Currency_LRD": "Dolar liberiarra",
- "Currency_LSL": "Lesothoko lotia",
+ "Currency_LSL": "Loti lesothoarra",
"Currency_LYD": "Dinar libiarra",
"Currency_MAD": "Dirham marokoarra",
"Currency_MDL": "Leu moldaviarra",
@@ -550,7 +550,7 @@
"Currency_TND": "Dinar tunisiarra",
"Currency_TOP": "Paʻanga tongatarra",
"Currency_TRY": "Lira turkiarra",
- "Currency_TTD": "Trinidad eta Tobagoko dolarra",
+ "Currency_TTD": "Dolar trinitatearra",
"Currency_TWD": "Dolar taiwandar berria",
"Currency_TZS": "Txelin tanzaniarra",
"Currency_UAH": "Hryvnia ukrainarra",
@@ -563,7 +563,7 @@
"Currency_VUV": "Vatu vanuatuarra",
"Currency_WST": "Tala samoarra",
"Currency_XAF": "Afrika erdialdeko CFA frankoa",
- "Currency_XCD": "Karibe ekialdeko dolarra",
+ "Currency_XCD": "Dolar ekikaribearra",
"Currency_XOF": "Afrika mendebaldeko CFA frankoa",
"Currency_XPF": "CFP frankoa",
"Currency_YER": "Rial yemendarra",
@@ -720,7 +720,7 @@
"Language_ky": "Kirgizera",
"Language_la": "Latin",
"Language_lb": "Luxenburgera",
- "Language_lg": "Gandera",
+ "Language_lg": "Luganda",
"Language_li": "Limburgera",
"Language_ln": "Lingala",
"Language_lo": "Laosera",
@@ -786,7 +786,7 @@
"Language_th": "Thailandiera",
"Language_ti": "Tigrinyera",
"Language_tk": "Turkmenera",
- "Language_tl": "Tagalog",
+ "Language_tl": "Tagaloa",
"Language_tn": "Tswanera",
"Language_to": "Tongera",
"Language_tr": "Turkiera",
diff --git a/plugins/Intl/lang/fa.json b/plugins/Intl/lang/fa.json
index ec5b300289..e1f703dba4 100644
--- a/plugins/Intl/lang/fa.json
+++ b/plugins/Intl/lang/fa.json
@@ -223,7 +223,7 @@
"Country_SZ": "اسواتینی",
"Country_TC": "جزایر تورکس و کایکوس",
"Country_TD": "چاد",
- "Country_TF": "سرزمین‌های جنوب فرانسه",
+ "Country_TF": "سرزمین‌های جنوبی فرانسه",
"Country_TG": "توگو",
"Country_TH": "تایلند",
"Country_TJ": "تاجیکستان",
@@ -408,7 +408,7 @@
"CurrencySymbol_WST": "WST",
"CurrencySymbol_XAF": "FCFA",
"CurrencySymbol_XCD": "$EC",
- "CurrencySymbol_XOF": "F CFA",
+ "CurrencySymbol_XOF": "فرانک CFA",
"CurrencySymbol_XPF": "CFPF",
"CurrencySymbol_YER": "YER",
"CurrencySymbol_ZAR": "ZAR",
@@ -437,7 +437,7 @@
"Currency_BTC": "Bitcoin",
"Currency_BTN": "انگولتروم بوتان",
"Currency_BWP": "پولای بوتسوانا",
- "Currency_BYN": "روبل بلاروسی",
+ "Currency_BYN": "روبل بلاروس",
"Currency_BZD": "دلار بلیز",
"Currency_CAD": "دلار کانادا",
"Currency_CDF": "فرانک کنگو",
@@ -555,7 +555,7 @@
"Currency_TZS": "شیلینگ تانزانیا",
"Currency_UAH": "هریونیای اوکراین",
"Currency_UGX": "شیلینگ اوگاندا",
- "Currency_USD": "دلار امریکا",
+ "Currency_USD": "دلار آمریکا",
"Currency_UYU": "پزوی اوروگوئه",
"Currency_UZS": "سوم ازبکستان",
"Currency_VES": "بولیوار ونزوئلا",
@@ -841,16 +841,16 @@
"Month_Long_StandAlone_7": "ژوئیه",
"Month_Long_StandAlone_8": "اوت",
"Month_Long_StandAlone_9": "سپتامبر",
- "Month_Short_1": "ژانویهٔ",
+ "Month_Short_1": "ژانویه",
"Month_Short_10": "اکتبر",
"Month_Short_11": "نوامبر",
"Month_Short_12": "دسامبر",
- "Month_Short_2": "فوریهٔ",
+ "Month_Short_2": "فوریه",
"Month_Short_3": "مارس",
"Month_Short_4": "آوریل",
- "Month_Short_5": "مهٔ",
+ "Month_Short_5": "مه",
"Month_Short_6": "ژوئن",
- "Month_Short_7": "ژوئیهٔ",
+ "Month_Short_7": "ژوئیه",
"Month_Short_8": "اوت",
"Month_Short_9": "سپتامبر",
"Month_Short_StandAlone_1": "ژانویه",
diff --git a/plugins/Intl/lang/he.json b/plugins/Intl/lang/he.json
index 6b9ef258d2..b6c064819c 100644
--- a/plugins/Intl/lang/he.json
+++ b/plugins/Intl/lang/he.json
@@ -446,13 +446,13 @@
"Currency_CNY": "יואן סיני",
"Currency_COP": "פסו קולומביאני",
"Currency_CRC": "קולון קוסטה־ריקני",
- "Currency_CUC": "פזו קובני להמרה",
- "Currency_CUP": "פזו קובני",
+ "Currency_CUC": "פסו קובני להמרה",
+ "Currency_CUP": "פסו קובני",
"Currency_CVE": "אסקודו כף ורדה",
"Currency_CZK": "קורונה צ׳כית",
"Currency_DJF": "פרנק ג׳יבוטי",
"Currency_DKK": "כתר דני",
- "Currency_DOP": "פזו דומיניקני",
+ "Currency_DOP": "פסו דומיניקני",
"Currency_DZD": "דינר אלג׳ירי",
"Currency_EGP": "לירה מצרית",
"Currency_ERN": "נאקפה אריתראי",
@@ -508,7 +508,7 @@
"Currency_MUR": "רופי מאוריציני",
"Currency_MVR": "רופיה מלדיבית",
"Currency_MWK": "קואצ׳ה מלאווי",
- "Currency_MXN": "פזו מקסיקני",
+ "Currency_MXN": "פסו מקסיקני",
"Currency_MYR": "רינגיט מלזי",
"Currency_MZN": "מטיקל מוזמביני",
"Currency_NAD": "דולר נמיבי",
@@ -800,7 +800,7 @@
"Language_tt": "טטרית",
"Language_tw": "טווי",
"Language_ty": "טהיטית",
- "Language_ug": "אויגור",
+ "Language_ug": "אויגורית",
"Language_uk": "אוקראינית",
"Language_ur": "אורדו",
"Language_uz": "אוזבקית",
diff --git a/plugins/Intl/lang/hi.json b/plugins/Intl/lang/hi.json
index d4879ab3e9..e06e0e7589 100644
--- a/plugins/Intl/lang/hi.json
+++ b/plugins/Intl/lang/hi.json
@@ -220,7 +220,7 @@
"Country_SV": "अल सल्वाडोर",
"Country_SX": "सिंट मार्टिन",
"Country_SY": "सीरिया",
- "Country_SZ": "स्वाज़ीलैंड",
+ "Country_SZ": "एस्वाटिनी",
"Country_TC": "तुर्क और कैकोज़ द्वीपसमूह",
"Country_TD": "चाड",
"Country_TF": "फ़्रांसीसी दक्षिणी क्षेत्र",
@@ -886,7 +886,7 @@
"PeriodDay": "दिन",
"PeriodDays": "दिन",
"PeriodMonth": "माह",
- "PeriodMonths": "माह",
+ "PeriodMonths": "महीना",
"PeriodWeek": "सप्ताह",
"PeriodWeeks": "सप्ताह",
"PeriodYear": "वर्ष",
diff --git a/plugins/Intl/lang/hr.json b/plugins/Intl/lang/hr.json
index 14ccb1f54a..4d6f0a9e62 100644
--- a/plugins/Intl/lang/hr.json
+++ b/plugins/Intl/lang/hr.json
@@ -314,7 +314,7 @@
"CurrencySymbol_GYD": "GYD",
"CurrencySymbol_HKD": "HKD",
"CurrencySymbol_HNL": "HNL",
- "CurrencySymbol_HRK": "HRK",
+ "CurrencySymbol_HRK": "kn",
"CurrencySymbol_HTG": "HTG",
"CurrencySymbol_HUF": "HUF",
"CurrencySymbol_IDR": "IDR",
@@ -495,7 +495,7 @@
"Currency_LBP": "Libanonska funta",
"Currency_LKR": "Šrilankanska rupija",
"Currency_LRD": "Liberijski dolar",
- "Currency_LSL": "Lesoto loti",
+ "Currency_LSL": "Lesotski loti",
"Currency_LYD": "Libijski dinar",
"Currency_MAD": "Marokanski dirham",
"Currency_MDL": "Moldavski lej",
diff --git a/plugins/Intl/lang/hu.json b/plugins/Intl/lang/hu.json
index 2cfa29c23b..877c718102 100644
--- a/plugins/Intl/lang/hu.json
+++ b/plugins/Intl/lang/hu.json
@@ -866,11 +866,11 @@
"Month_Short_StandAlone_8": "aug.",
"Month_Short_StandAlone_9": "szept.",
"NDays": "%s nap",
- "NHoursShort": "%s h",
+ "NHoursShort": "%s ó",
"NMinutes": "%s perc",
"NMinutesShort": "%s p",
"NSeconds": "%s másodperc",
- "NSecondsShort": "%s s",
+ "NSecondsShort": "%s mp",
"NumberFormatCurrency": "#,##0.00 ¤",
"NumberFormatNumber": "#,##0.###",
"NumberFormatPercent": "#,##0%",
diff --git a/plugins/Intl/lang/id.json b/plugins/Intl/lang/id.json
index 0fe445aa8a..d8b8862655 100644
--- a/plugins/Intl/lang/id.json
+++ b/plugins/Intl/lang/id.json
@@ -866,11 +866,11 @@
"Month_Short_StandAlone_8": "Agu",
"Month_Short_StandAlone_9": "Sep",
"NDays": "%s hari",
- "NHoursShort": "%sj",
+ "NHoursShort": "%s j",
"NMinutes": "%s menit",
"NMinutesShort": "%s mnt",
"NSeconds": "%s detik",
- "NSecondsShort": "%sdtk",
+ "NSecondsShort": "%s dtk",
"NumberFormatCurrency": "¤#,##0.00",
"NumberFormatNumber": "#,##0.###",
"NumberFormatPercent": "#,##0%",
diff --git a/plugins/Intl/lang/is.json b/plugins/Intl/lang/is.json
index d070ede77d..07ef1a8296 100644
--- a/plugins/Intl/lang/is.json
+++ b/plugins/Intl/lang/is.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Líbanskt pund",
"Currency_LKR": "Srílönsk rúpía",
"Currency_LRD": "Líberískur dalur",
- "Currency_LSL": "Lesotho Loti",
+ "Currency_LSL": "Lesótóskur lóti",
"Currency_LYD": "Líbískur denari",
"Currency_MAD": "Marokkóskt dírham",
"Currency_MDL": "Moldavískt lei",
diff --git a/plugins/Intl/lang/ka.json b/plugins/Intl/lang/ka.json
index 43d3859c10..ea308a020a 100644
--- a/plugins/Intl/lang/ka.json
+++ b/plugins/Intl/lang/ka.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Ლიბანური ფუნტი",
"Currency_LKR": "Შრი-ლანკური რუპია",
"Currency_LRD": "Ლიბერიული დოლარი",
- "Currency_LSL": "LSL",
+ "Currency_LSL": "Ლესოთოს ლოტი",
"Currency_LYD": "Ლიბიური დინარი",
"Currency_MAD": "Მაროკოს დირჰამი",
"Currency_MDL": "Მოლდოვური ლეუ",
diff --git a/plugins/Intl/lang/lv.json b/plugins/Intl/lang/lv.json
index e47ab1ba14..584156ecc9 100644
--- a/plugins/Intl/lang/lv.json
+++ b/plugins/Intl/lang/lv.json
@@ -881,7 +881,7 @@
"NumberSymbolPlus": "+",
"OneDay": "1 diena",
"OneMinute": "1 minūte",
- "OneMinuteShort": "1 min.",
+ "OneMinuteShort": "1 min",
"OriginalLanguageName": "Latviešu",
"PeriodDay": "diena",
"PeriodDays": "dienas",
diff --git a/plugins/Intl/lang/nb.json b/plugins/Intl/lang/nb.json
index 1cd5b24b3f..abf7c80ea9 100644
--- a/plugins/Intl/lang/nb.json
+++ b/plugins/Intl/lang/nb.json
@@ -871,7 +871,7 @@
"NMinutesShort": "%s min",
"NSeconds": "%s sekunder",
"NSecondsShort": "%ss",
- "NumberFormatCurrency": "¤ #,##0.00",
+ "NumberFormatCurrency": "¤ #,##0.00;¤ -#,##0.00",
"NumberFormatNumber": "#,##0.###",
"NumberFormatPercent": "#,##0 %",
"NumberSymbolDecimal": ",",
diff --git a/plugins/Intl/lang/nn.json b/plugins/Intl/lang/nn.json
index 130d4e9c96..a66ddab1c3 100644
--- a/plugins/Intl/lang/nn.json
+++ b/plugins/Intl/lang/nn.json
@@ -892,8 +892,8 @@
"PeriodYear": "år",
"PeriodYears": "år",
"Seconds": "sekund",
- "Time_AM": "formiddag",
- "Time_PM": "ettermiddag",
+ "Time_AM": "a.m.",
+ "Time_PM": "p.m.",
"Timezone_Africa_Asmera": "Asmara",
"Timezone_Africa_Ceuta": "Ceuta",
"Timezone_Africa_Kinshasa": "Kinshasa",
diff --git a/plugins/Intl/lang/pl.json b/plugins/Intl/lang/pl.json
index fa888fd120..c5965a8868 100644
--- a/plugins/Intl/lang/pl.json
+++ b/plugins/Intl/lang/pl.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Funt libański",
"Currency_LKR": "Rupia lankijska",
"Currency_LRD": "Dolar liberyjski",
- "Currency_LSL": "Loti Lesoto",
+ "Currency_LSL": "Loti lesotyjskie",
"Currency_LYD": "Dinar libijski",
"Currency_MAD": "Dirham marokański",
"Currency_MDL": "Lej mołdawski",
@@ -866,7 +866,7 @@
"Month_Short_StandAlone_8": "sie",
"Month_Short_StandAlone_9": "wrz",
"NDays": "%s doby",
- "NHoursShort": "%s g.",
+ "NHoursShort": "%s h",
"NMinutes": "%s minuty",
"NMinutesShort": "%s min",
"NSeconds": "%s sekundy",
diff --git a/plugins/Intl/lang/pt-br.json b/plugins/Intl/lang/pt-br.json
index 1a8248c805..7ee61e5305 100644
--- a/plugins/Intl/lang/pt-br.json
+++ b/plugins/Intl/lang/pt-br.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Libra libanesa",
"Currency_LKR": "Rupia cingalesa",
"Currency_LRD": "Dólar liberiano",
- "Currency_LSL": "Loti do Lesoto",
+ "Currency_LSL": "Loti lesotiano",
"Currency_LYD": "Dinar líbio",
"Currency_MAD": "Dirham marroquino",
"Currency_MDL": "Leu moldávio",
diff --git a/plugins/Intl/lang/pt.json b/plugins/Intl/lang/pt.json
index 019a2d2a7b..5f0465b0a9 100644
--- a/plugins/Intl/lang/pt.json
+++ b/plugins/Intl/lang/pt.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Libra libanesa",
"Currency_LKR": "Rupia do Sri Lanka",
"Currency_LRD": "Dólar liberiano",
- "Currency_LSL": "Loti do Lesoto",
+ "Currency_LSL": "Loti lesotiano",
"Currency_LYD": "Dinar líbio",
"Currency_MAD": "Dirham marroquino",
"Currency_MDL": "Leu moldavo",
diff --git a/plugins/Intl/lang/sl.json b/plugins/Intl/lang/sl.json
index c0ef8714eb..8606dddd8b 100644
--- a/plugins/Intl/lang/sl.json
+++ b/plugins/Intl/lang/sl.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Libanonski funt",
"Currency_LKR": "Šrilanška rupija",
"Currency_LRD": "Liberijski dolar",
- "Currency_LSL": "Lesoški loti",
+ "Currency_LSL": "Lesotski loti",
"Currency_LYD": "Libijski dinar",
"Currency_MAD": "Maroški dirham",
"Currency_MDL": "Moldavijski leu",
@@ -612,10 +612,10 @@
"Day_Short_StandAlone_6": "sob.",
"Day_Short_StandAlone_7": "ned.",
"EnglishLanguageName": "Slovenian",
- "Format_DateTime_Long": "EEEE, dd. MMMM y {time}",
+ "Format_DateTime_Long": "EEEE, d. MMMM y {time}",
"Format_DateTime_Short": "d. MMM y {time}",
"Format_Date_Day_Month": "E, d. MMM",
- "Format_Date_Long": "EEEE, dd. MMMM y",
+ "Format_Date_Long": "EEEE, d. MMMM y",
"Format_Date_Short": "d. MMM y",
"Format_Hour_12": "h a",
"Format_Hour_24": "HH'h'",
@@ -885,11 +885,11 @@
"PeriodDay": "dan",
"PeriodDays": "dni",
"PeriodMonth": "mesec",
- "PeriodMonths": "mesecev",
+ "PeriodMonths": "meseci",
"PeriodWeek": "teden",
- "PeriodWeeks": "tednov",
+ "PeriodWeeks": "tedni",
"PeriodYear": "leto",
- "PeriodYears": "let",
+ "PeriodYears": "leta",
"Seconds": "sekund",
"Time_AM": "dop.",
"Time_PM": "pop.",
diff --git a/plugins/Intl/lang/sq.json b/plugins/Intl/lang/sq.json
index c65b047038..268f90dd68 100644
--- a/plugins/Intl/lang/sq.json
+++ b/plugins/Intl/lang/sq.json
@@ -495,7 +495,7 @@
"Currency_LBP": "Sterlina libaneze",
"Currency_LKR": "Rupia e Sri-Lankës",
"Currency_LRD": "Dollari liberian",
- "Currency_LSL": "LSL",
+ "Currency_LSL": "Lota lesotiane",
"Currency_LYD": "Dinari libian",
"Currency_MAD": "Dirhami maroken",
"Currency_MDL": "Leuja moldave",
diff --git a/plugins/Intl/lang/sr.json b/plugins/Intl/lang/sr.json
index 1f2a3ce9ea..2fb1aabe51 100644
--- a/plugins/Intl/lang/sr.json
+++ b/plugins/Intl/lang/sr.json
@@ -413,7 +413,7 @@
"CurrencySymbol_YER": "YER",
"CurrencySymbol_ZAR": "ZAR",
"CurrencySymbol_ZMW": "ZMW",
- "Currency_AED": "УАЕ дирхам",
+ "Currency_AED": "Дирхам УАЕ",
"Currency_AFN": "Авганистански авгани",
"Currency_ALL": "Албански лек",
"Currency_AMD": "Јерменски драм",
@@ -455,11 +455,11 @@
"Currency_DOP": "Доминикански пезос",
"Currency_DZD": "Алжирски динар",
"Currency_EGP": "Египатска фунта",
- "Currency_ERN": "Eритрејска накфa",
- "Currency_ETB": "Етиопски бир",
+ "Currency_ERN": "Еритрејска накфа",
+ "Currency_ETB": "Етиопијски бир",
"Currency_EUR": "Евро",
"Currency_FJD": "Фиџијски долар",
- "Currency_FKP": "Фокландска фунта",
+ "Currency_FKP": "Фолкландска фунта",
"Currency_GBP": "Британска фунта",
"Currency_GEL": "Грузијски лари",
"Currency_GHS": "Гански седи",
@@ -477,29 +477,29 @@
"Currency_ILS": "Израелски нови шекел",
"Currency_INR": "Индијска рупија",
"Currency_IQD": "Ирачки динар",
- "Currency_IRR": "Ирански риjал",
+ "Currency_IRR": "Ирански ријал",
"Currency_ISK": "Исландска круна",
"Currency_JMD": "Јамајчански долар",
"Currency_JOD": "Јордански динар",
"Currency_JPY": "Јапански јен",
"Currency_KES": "Кенијски шилинг",
"Currency_KGS": "Киргистански сом",
- "Currency_KHR": "Kамбоџански ријел",
+ "Currency_KHR": "Камбоџански ријел",
"Currency_KMF": "Коморски франак",
"Currency_KPW": "Севернокорејски вон",
"Currency_KRW": "Јужнокорејски вон",
"Currency_KWD": "Кувајтски динар",
"Currency_KYD": "Кајмански долар",
"Currency_KZT": "Казахстански тенге",
- "Currency_LAK": "Лаошки кип",
+ "Currency_LAK": "Лаоски кип",
"Currency_LBP": "Либанска фунта",
- "Currency_LKR": "Шриланканскa рупиja",
+ "Currency_LKR": "Шриланчанска рупија",
"Currency_LRD": "Либеријски долар",
- "Currency_LSL": "Лесото лоти",
+ "Currency_LSL": "Лесотски лоти",
"Currency_LYD": "Либијски динар",
"Currency_MAD": "Марокански дирхам",
"Currency_MDL": "Молдавски леј",
- "Currency_MGA": "Мадагаскарски ариари",
+ "Currency_MGA": "Малгашки аријари",
"Currency_MKD": "Македонски денар",
"Currency_MMK": "Мјанмарски кјат",
"Currency_MNT": "Монголски тугрик",
@@ -513,16 +513,16 @@
"Currency_MZN": "Мозамбички метикал",
"Currency_NAD": "Намибијски долар",
"Currency_NGN": "Нигеријска наира",
- "Currency_NIO": "Никарагванска златна кордоба",
+ "Currency_NIO": "Никарагванска кордоба",
"Currency_NOK": "Норвешка круна",
- "Currency_NPR": "Непалскa рупиja",
+ "Currency_NPR": "Непалска рупија",
"Currency_NZD": "Новозеландски долар",
"Currency_OMR": "Омански ријал",
"Currency_PAB": "Панамска балбоа",
"Currency_PEN": "Перуански сол",
"Currency_PGK": "Папуанска кина",
"Currency_PHP": "Филипински пезос",
- "Currency_PKR": "Пакистанскa рупиja",
+ "Currency_PKR": "Пакистанска рупија",
"Currency_PLN": "Пољски злот",
"Currency_PYG": "Парагвајски гварани",
"Currency_QAR": "Катарски ријал",
@@ -536,7 +536,7 @@
"Currency_SDG": "Суданска фунта",
"Currency_SEK": "Шведска круна",
"Currency_SGD": "Сингапурски долар",
- "Currency_SHP": "Свете Јелене фунта",
+ "Currency_SHP": "Фунта Свете Јелене",
"Currency_SLL": "Сијералеонски леоне",
"Currency_SOS": "Сомалијски шилинг",
"Currency_SRD": "Суринамски долар",
@@ -553,7 +553,7 @@
"Currency_TTD": "Тринидад-тобагошки долар",
"Currency_TWD": "Нови тајвански долар",
"Currency_TZS": "Танзанијски шилинг",
- "Currency_UAH": "Украјинска хривња",
+ "Currency_UAH": "Украјинска гривна",
"Currency_UGX": "Угандски шилинг",
"Currency_USD": "Амерички долар",
"Currency_UYU": "Уругвајски пезос",
@@ -562,11 +562,11 @@
"Currency_VND": "Вијетнамски донг",
"Currency_VUV": "Вануатски вату",
"Currency_WST": "Самоанска тала",
- "Currency_XAF": "CFA франак BEAC",
+ "Currency_XAF": "Централноафрички франак",
"Currency_XCD": "Источнокарипски долар",
- "Currency_XOF": "ЦФА франак БЦЕАО",
+ "Currency_XOF": "Западноафрички франак",
"Currency_XPF": "CFP франак",
- "Currency_YER": "Јеменски риjал",
+ "Currency_YER": "Јеменски ријал",
"Currency_ZAR": "Јужноафрички ранд",
"Currency_ZMW": "Замбијска квача",
"Day_Long_1": "понедељак",
@@ -612,11 +612,11 @@
"Day_Short_StandAlone_6": "суб",
"Day_Short_StandAlone_7": "нед",
"EnglishLanguageName": "Serbian",
- "Format_DateTime_Long": "EEEE, dd. MMMM y. {time}",
- "Format_DateTime_Short": "dd.MM.y. {time}",
+ "Format_DateTime_Long": "EEEE, d. MMMM y. {time}",
+ "Format_DateTime_Short": "d. M. y. {time}",
"Format_Date_Day_Month": "E d. MMM",
- "Format_Date_Long": "EEEE, dd. MMMM y.",
- "Format_Date_Short": "dd.MM.y.",
+ "Format_Date_Long": "EEEE, d. MMMM y.",
+ "Format_Date_Short": "d. M. y.",
"Format_Hour_12": "h a",
"Format_Hour_24": "HH",
"Format_Interval_Long_D": "dd.–dd. MMMM y.",
@@ -892,8 +892,8 @@
"PeriodYear": "година",
"PeriodYears": "године",
"Seconds": "секунде",
- "Time_AM": "пре подне",
- "Time_PM": "по подне",
+ "Time_AM": "AM",
+ "Time_PM": "PM",
"Timezone_Africa_Asmera": "Асмера",
"Timezone_Africa_Ceuta": "Сеута",
"Timezone_Africa_Kinshasa": "Киншаса",
diff --git a/plugins/Intl/lang/te.json b/plugins/Intl/lang/te.json
index 76aae0fe79..4f34afc1e0 100644
--- a/plugins/Intl/lang/te.json
+++ b/plugins/Intl/lang/te.json
@@ -475,7 +475,7 @@
"Currency_HUF": "హంగేరియన్ ఫోరింట్",
"Currency_IDR": "ఇండోనేషియా రూపాయి",
"Currency_ILS": "ఇజ్రాయేలీ న్యూ షెకెల్",
- "Currency_INR": "రూపాయి",
+ "Currency_INR": "భారతదేశ రూపాయి",
"Currency_IQD": "ఇరాకీ దీనార్",
"Currency_IRR": "ఇరానియన్ రీయల్",
"Currency_ISK": "ఐస్లాండిక్ క్రోనా",
@@ -497,7 +497,7 @@
"Currency_LRD": "లిబేరియన్ డాలర్",
"Currency_LSL": "లెసోధో లోటి",
"Currency_LYD": "లిబియన్ దీనార్",
- "Currency_MAD": "మోరోకన్ దిర్హుమ్",
+ "Currency_MAD": "మోరోకన్ దిర్హామ్",
"Currency_MDL": "మోల్‌డోవన్ ల్యూ",
"Currency_MGA": "మలగసీ అరియరీ",
"Currency_MKD": "మెసిడోనియన్ దినార్",
diff --git a/plugins/Intl/lang/th.json b/plugins/Intl/lang/th.json
index 19bb6ccf9d..982afc7fcf 100644
--- a/plugins/Intl/lang/th.json
+++ b/plugins/Intl/lang/th.json
@@ -621,7 +621,7 @@
"Format_Hour_24": "HH",
"Format_Interval_Long_D": "d–d MMMM G y",
"Format_Interval_Long_M": "d MMMM – d MMMM G y",
- "Format_Interval_Long_Y": "d MMMM G y – d MMMM y",
+ "Format_Interval_Long_Y": "d MMMM G y – d MMMM G y",
"Format_Interval_Short_D": "d–d MMM y",
"Format_Interval_Short_M": "d MMM – d MMM y",
"Format_Interval_Short_Y": "d MMM y – d MMM y",
diff --git a/plugins/Intl/lang/tl.json b/plugins/Intl/lang/tl.json
index 6500fdff43..1706283079 100644
--- a/plugins/Intl/lang/tl.json
+++ b/plugins/Intl/lang/tl.json
@@ -729,7 +729,7 @@
"Language_lv": "Latvian",
"Language_mg": "Malagasy",
"Language_mh": "Marshallese",
- "Language_mi": "Maori",
+ "Language_mi": "Māori",
"Language_mk": "Macedonian",
"Language_ml": "Malayalam",
"Language_mn": "Mongolian",
diff --git a/plugins/Intl/lang/uk.json b/plugins/Intl/lang/uk.json
index 4426215cdc..1fb06d7908 100644
--- a/plugins/Intl/lang/uk.json
+++ b/plugins/Intl/lang/uk.json
@@ -619,14 +619,14 @@
"Format_Date_Short": "d MMM y 'р'.",
"Format_Hour_12": "h a",
"Format_Hour_24": "HH",
- "Format_Interval_Long_D": "d–d MMMM y",
- "Format_Interval_Long_M": "d MMMM – d MMMM y",
- "Format_Interval_Long_Y": "d MMMM y – d MMMM y",
- "Format_Interval_Short_D": "d–d MMM y",
- "Format_Interval_Short_M": "d MMM – d MMM y",
- "Format_Interval_Short_Y": "d MMM y – d MMM y",
- "Format_Month_Long": "LLLL y",
- "Format_Month_Short": "LLL y",
+ "Format_Interval_Long_D": "d–d MMMM y 'р'.",
+ "Format_Interval_Long_M": "d MMMM – d MMMM y 'р'.",
+ "Format_Interval_Long_Y": "d MMMM y – d MMMM y 'рр'.",
+ "Format_Interval_Short_D": "d–d MMM y 'р'.",
+ "Format_Interval_Short_M": "d MMM – d MMM y 'р'.",
+ "Format_Interval_Short_Y": "d MMM y – d MMM y 'рр'.",
+ "Format_Month_Long": "LLLL y 'р'.",
+ "Format_Month_Short": "LLL y 'р'.",
"Format_Time": "{time}",
"Format_Time_12": "h:mm:ss a",
"Format_Time_24": "HH:mm:ss",
@@ -870,7 +870,7 @@
"NMinutes": "%s хвилини",
"NMinutesShort": "%s хв",
"NSeconds": "%s секунди",
- "NSecondsShort": "%s с",
+ "NSecondsShort": "%sс",
"NumberFormatCurrency": "#,##0.00 ¤",
"NumberFormatNumber": "#,##0.###",
"NumberFormatPercent": "#,##0%",
diff --git a/plugins/Intl/lang/vi.json b/plugins/Intl/lang/vi.json
index 1dc0126c73..56eb3efa35 100644
--- a/plugins/Intl/lang/vi.json
+++ b/plugins/Intl/lang/vi.json
@@ -733,7 +733,7 @@
"Language_lv": "Tiếng Latvia",
"Language_mg": "Tiếng Malagasy",
"Language_mh": "Tiếng Marshall",
- "Language_mi": "Tiếng Maori",
+ "Language_mi": "Tiếng Māori",
"Language_mk": "Tiếng Macedonia",
"Language_ml": "Tiếng Malayalam",
"Language_mn": "Tiếng Mông Cổ",
diff --git a/plugins/Intl/lang/zh-tw.json b/plugins/Intl/lang/zh-tw.json
index 0a5259cc1a..fbe478c0ad 100644
--- a/plugins/Intl/lang/zh-tw.json
+++ b/plugins/Intl/lang/zh-tw.json
@@ -617,7 +617,7 @@
"Format_Date_Day_Month": "M月d日 E",
"Format_Date_Long": "y年M月d日 EEEE",
"Format_Date_Short": "y年M月d日",
- "Format_Hour_12": "ah時",
+ "Format_Hour_12": "Bh時",
"Format_Hour_24": "H時",
"Format_Interval_Long_D": "y年M月d日至d日",
"Format_Interval_Long_M": "y年M月d日至M月d日",
@@ -628,7 +628,7 @@
"Format_Month_Long": "y年M月",
"Format_Month_Short": "y年M月",
"Format_Time": "{time}",
- "Format_Time_12": "ah:mm:ss",
+ "Format_Time_12": "Bh:mm:ss",
"Format_Time_24": "HH:mm:ss",
"Format_Year": "y年",
"Hours": "小時",
diff --git a/plugins/LanguagesManager/Commands/TranslationBase.php b/plugins/LanguagesManager/Commands/TranslationBase.php
index 5e47ae9101..6a304f6758 100644
--- a/plugins/LanguagesManager/Commands/TranslationBase.php
+++ b/plugins/LanguagesManager/Commands/TranslationBase.php
@@ -11,10 +11,6 @@ namespace Piwik\Plugins\LanguagesManager\Commands;
use Piwik\Development;
use Piwik\Plugin\ConsoleCommand;
-use Symfony\Component\Console\Input\ArrayInput;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
/**
*/
diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php
index 0dcfe9a29d..a52a613035 100644
--- a/plugins/LanguagesManager/LanguagesManager.php
+++ b/plugins/LanguagesManager/LanguagesManager.php
@@ -11,11 +11,11 @@ namespace Piwik\Plugins\LanguagesManager;
use Exception;
use Piwik\API\Request;
+use Piwik\AssetManager\UIAssetFetcher\PluginUmdAssetFetcher;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Cookie;
-use Piwik\Development;
use Piwik\Intl\Locale;
use Piwik\Nonce;
use Piwik\Piwik;
@@ -36,7 +36,6 @@ class LanguagesManager extends \Piwik\Plugin
public function registerEvents()
{
return array(
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Config.NoConfigurationFile' => 'initLanguage',
'Request.dispatchCoreAndPluginUpdatesScreen' => 'initLanguage',
'Request.dispatch' => 'initLanguage',
@@ -58,13 +57,6 @@ class LanguagesManager extends \Piwik\Plugin
$allTablesInstalled[] = Common::prefixTable('user_language');
}
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js";
- $jsFiles[] = "plugins/LanguagesManager/angularjs/translationsearch/translationsearch.controller.js";
- $jsFiles[] = "plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.js";
- }
-
/**
* Adds the languages drop-down list to topbars other than the main one rendered
* in CoreHome/templates/top_bar.twig. The 'other' topbars are on the Installation
@@ -74,7 +66,8 @@ class LanguagesManager extends \Piwik\Plugin
{
// piwik object & scripts aren't loaded in 'other' topbars
$str .= "<script type='text/javascript'>if (!window.piwik) window.piwik={};</script>";
- $str .= "<script type='text/javascript' src='plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js'></script>";
+ $file = PluginUmdAssetFetcher::getUmdFileToUseForPlugin('LanguagesManager');
+ $str .= "<script type='text/javascript' src='$file' defer></script>";
$str .= $this->getLanguagesSelector();
}
diff --git a/plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js b/plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js
deleted file mode 100644
index 3eddb08839..0000000000
--- a/plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div class="languageSelection">
- * </div>
- */
-(function () {
- angular.module('piwikApp').directive('languageSelection', languageSelection);
-
- function languageSelection() {
-
- return {
- restrict: 'C',
- link: function(scope, element, attr, ctrl) {
-
- function postLanguageChange () {
- var value = $(this).attr('value');
- if (value) {
- element.find('#language').val(value).parents('form').submit();
- }
- }
-
- element.on('click', 'a[value]', postLanguageChange);
- scope.$on('$destroy', function() {
- element.off('click', 'a[value]', postLanguageChange);
- });
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.controller.js b/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.controller.js
deleted file mode 100644
index 8c6ed08564..0000000000
--- a/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.controller.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('TranslationSearchController', TranslationSearchController);
-
- TranslationSearchController.$inject = ['piwikApi'];
-
- function TranslationSearchController(piwikApi) {
-
- function fetchTranslations(languageCode) {
- piwikApi.fetch({
- method: 'LanguagesManager.getTranslationsForLanguage',
- filter_limit: -1,
- languageCode: languageCode
- }).then(function (response) {
- if (response) {
- if (languageCode === 'en') {
- vm.existingTranslations = response;
- } else {
- vm.compareTranslations = {};
- angular.forEach(response, function (translation) {
- vm.compareTranslations[translation.label] = translation.value;
- });
- }
- }
- });
- }
-
- function fetchLanguages() {
- piwikApi.fetch({
- method: 'LanguagesManager.getAvailableLanguagesInfo',
- filter_limit: -1
- }).then(function (languages) {
- vm.languages = [{key: '', value: 'None'}];
- if (languages) {
- angular.forEach(languages, function (language) {
- if (language.code === 'en') {
- return;
- }
- vm.languages.push({key: language.code, value: language.name});
- });
- }
- });
- }
-
- var vm = this;
- vm.compareTranslations = null;
- vm.existingTranslations = [];
- vm.languages = [];
- vm.compareLanguage = '';
-
- this.doCompareLanguage = function () {
- if (vm.compareLanguage) {
- vm.compareTranslations = null;
- fetchTranslations(vm.compareLanguage);
- }
- };
-
- fetchTranslations('en');
-
- fetchLanguages();
-
- }
-})(); \ No newline at end of file
diff --git a/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.html b/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.html
deleted file mode 100644
index e56b0d15ea..0000000000
--- a/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<div>
-
- <p>
- This page helps you to find existing translations that you can reuse in your Plugin.
- If you want to know more about translations have a look at our <a href="https://developer.matomo.org/guides/internationalization" rel="noreferrer noopener" target="_blank">Internationalization guide</a>.
- Enter a search term to find translations and their corresponding keys:
- </p>
-
- <div piwik-field uicontrol="text" name="alias"
- inline-help="Search for English translation. Max 1000 results will be shown."
- ng-model="translationSearch.searchTerm"
- placeholder="Search for English translation">
- </div>
-
- <div piwik-field uicontrol="select" name="translationSearch.compareLanguage"
- inline-help="Optionally select a language to compare the English language with."
- ng-model="translationSearch.compareLanguage"
- ng-change="translationSearch.doCompareLanguage()"
- options='translationSearch.languages'>
- </div>
-
- <br />
- <br />
-
- <table piwik-content-table
- ng-show="translationSearch.searchTerm"
- style="word-break: break-all;">
- <thead>
- <tr>
- <th style="width:250px;">Key</th>
- <th>English translation</th>
- <th ng-show="translationSearch.compareLanguage && translationSearch.compareTranslations">Compare translation</th>
- </tr>
- </thead>
- <tbody>
- <tr ng-repeat="translation in translationSearch.existingTranslations | filter:translationSearch.searchTerm | limitTo: 1000">
- <td>{{ translation.label }}</td>
- <td>{{ translation.value }}</td>
- <td ng-show="translationSearch.compareLanguage && translationSearch.compareTranslations">{{ translationSearch.compareTranslations[translation.label] }}</td>
- </tr>
- </tbody>
- </table>
-
-</div>
diff --git a/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.js b/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.js
deleted file mode 100644
index 96d9a247ce..0000000000
--- a/plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- *
- * <div piwik-translation-search></div>
- *
- * Will show a text box which allows the user to search for translation keys and actual translations. Currently,
- * only english is supported.
- */
-(function () {
- angular.module('piwikApp').directive('piwikTranslationSearch', piwikTranslationSearch);
-
- piwikTranslationSearch.$inject = ['piwik'];
-
- function piwikTranslationSearch(piwik){
-
- return {
- restrict: 'A',
- scope: {},
- templateUrl: 'plugins/LanguagesManager/angularjs/translationsearch/translationsearch.directive.html?cb=' + piwik.cacheBuster,
- controller: 'TranslationSearchController',
- controllerAs: 'translationSearch'
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/LanguagesManager/templates/searchTranslation.twig b/plugins/LanguagesManager/templates/searchTranslation.twig
index d2b040f1b9..c8ed0140db 100644
--- a/plugins/LanguagesManager/templates/searchTranslation.twig
+++ b/plugins/LanguagesManager/templates/searchTranslation.twig
@@ -4,8 +4,13 @@
{% block content %}
- <div piwik-content-block content-title="{{ title|e('html_attr') }}" feature="true">
- <div piwik-translation-search></div>
+ <div
+ vue-entry="CoreHome.ContentBlock"
+ vue-components="LanguagesManager.TranslationSearch"
+ content-title="{{ title|json_encode|e('html_attr') }}"
+ feature="{{ 'true'|json_encode }}"
+ >
+ <translation-search />
</div>
{% endblock %}
diff --git a/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php b/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php
index 48456239dc..e057a317b4 100644
--- a/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php
+++ b/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php
@@ -12,7 +12,6 @@ use Piwik\Cache;
use Piwik\Container\StaticContainer;
use Piwik\Intl\Data\Provider\LanguageDataProvider;
use Piwik\Plugins\LanguagesManager\API;
-use \Exception;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\ByParameterCount;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\EmptyTranslations;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\EncodedEntities;
diff --git a/plugins/LanguagesManager/vue/dist/LanguagesManager.umd.js b/plugins/LanguagesManager/vue/dist/LanguagesManager.umd.js
new file mode 100644
index 0000000000..0273a089d1
--- /dev/null
+++ b/plugins/LanguagesManager/vue/dist/LanguagesManager.umd.js
@@ -0,0 +1,401 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", ], factory);
+ else if(typeof exports === 'object')
+ exports["LanguagesManager"] = factory(require("CoreHome"), require("vue"));
+ else
+ root["LanguagesManager"] = factory(root["CoreHome"], root["Vue"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/LanguagesManager/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "TranslationSearch", function() { return /* reexport */ TranslationSearch; });
+__webpack_require__.d(__webpack_exports__, "LanguageSelector", function() { return /* reexport */ LanguageSelector; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+var _window = window,
+ $ = _window.$;
+
+function postLanguageChange(element, event) {
+ var value = $(event.target).attr('value');
+
+ if (value) {
+ $(element).find('#language').val(value).parents('form').submit();
+ }
+}
+
+/* harmony default export */ var LanguageSelector = ({
+ mounted: function mounted(el, binding) {
+ binding.value.onClick = postLanguageChange.bind(null, el);
+ $(el).on('click', 'a[value]', binding.value.onClick);
+ },
+ unmounted: function unmounted(el, binding) {
+ $(el).off('click', 'a[value]', binding.value.onClick);
+ }
+});
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+function languageSelection() {
+ return {
+ restrict: 'C',
+ link: function languageSelectionLink(scope, element) {
+ var binding = {
+ instance: null,
+ value: {},
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ LanguageSelector.mounted(element[0], binding);
+ element.on('$destroy', function () {
+ LanguageSelector.unmounted(element[0], binding);
+ });
+ }
+ };
+}
+
+window.angular.module('piwikApp').directive('languageSelection', languageSelection);
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue?vue&type=template&id=3d477584
+
+
+var _hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [/*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" This page helps you to find existing translations that you can reuse in your Plugin. If you want to know more about translations have a look at our "), /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: "https://developer.matomo.org/guides/internationalization",
+ rel: "noreferrer noopener",
+ target: "_blank"
+}, "Internationalization guide"), /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(". Enter a search term to find translations and their corresponding keys: ")], -1);
+
+var _hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_4 = {
+ style: {
+ "word-break": "break-all"
+ }
+};
+
+var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", {
+ style: {
+ "width": "250px"
+ }
+}, "Key", -1);
+
+var _hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, "English translation", -1);
+
+var _hoisted_7 = {
+ key: 0
+};
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _directive_content_table = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-table");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "alias",
+ "inline-help": "Search for English translation. Max 1000 results will be shown.",
+ placeholder: "Search for English translation",
+ modelValue: _ctx.searchTerm,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.searchTerm = $event;
+ })
+ }, null, 8, ["modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "translationSearch.compareLanguage",
+ "inline-help": "Optionally select a language to compare the English language with.",
+ "model-value": _ctx.compareLanguage,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ _ctx.compareLanguage = $event;
+
+ _ctx.doCompareLanguage();
+ }),
+ options: _ctx.languages
+ }, null, 8, ["model-value", "options"])]), _hoisted_2, _hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("table", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [_hoisted_5, _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, "Compare translation", 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.compareLanguage && _ctx.compareTranslations]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.filteredTranslations, function (translation) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
+ key: translation.label
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(translation.label), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(translation.value), 1), _ctx.compareLanguage && _ctx.compareTranslations ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.compareTranslations[translation.label]), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]);
+ }), 128))])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm], [_directive_content_table]])]);
+}
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue?vue&type=template&id=3d477584
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue?vue&type=script&lang=ts
+
+ // loading a component this way since during Installation we don't want to load CorePluginsAdmin
+// just for the language selector directive
+
+var Field = Object(external_CoreHome_["useExternalPluginComponent"])('CorePluginsAdmin', 'Field');
+/* harmony default export */ var TranslationSearchvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ components: {
+ Field: Field
+ },
+ directives: {
+ ContentTable: external_CoreHome_["ContentTable"]
+ },
+ data: function data() {
+ return {
+ compareTranslations: null,
+ existingTranslations: [],
+ languages: [],
+ compareLanguage: '',
+ searchTerm: ''
+ };
+ },
+ created: function created() {
+ this.fetchTranslations('en');
+ this.fetchLanguages();
+ },
+ methods: {
+ fetchTranslations: function fetchTranslations(languageCode) {
+ var _this = this;
+
+ external_CoreHome_["AjaxHelper"].fetch({
+ method: 'LanguagesManager.getTranslationsForLanguage',
+ filter_limit: -1,
+ languageCode: languageCode
+ }).then(function (response) {
+ if (!response) {
+ return;
+ }
+
+ if (languageCode === 'en') {
+ _this.existingTranslations = response;
+ } else {
+ _this.compareTranslations = {};
+ response.forEach(function (translation) {
+ _this.compareTranslations[translation.label] = translation.value;
+ });
+ }
+ });
+ },
+ fetchLanguages: function fetchLanguages() {
+ var _this2 = this;
+
+ external_CoreHome_["AjaxHelper"].fetch({
+ method: 'LanguagesManager.getAvailableLanguagesInfo',
+ filter_limit: -1
+ }).then(function (languages) {
+ _this2.languages = [{
+ key: '',
+ value: 'None'
+ }];
+
+ if (languages) {
+ languages.forEach(function (language) {
+ if (language.code === 'en') {
+ return;
+ }
+
+ _this2.languages.push({
+ key: language.code,
+ value: language.name
+ });
+ });
+ }
+ });
+ },
+ doCompareLanguage: function doCompareLanguage() {
+ if (this.compareLanguage) {
+ this.compareTranslations = null;
+ this.fetchTranslations(this.compareLanguage);
+ }
+ }
+ },
+ computed: {
+ filteredTranslations: function filteredTranslations() {
+ var _this3 = this;
+
+ var filtered = this.existingTranslations.filter(function (t) {
+ return t.label.includes(_this3.searchTerm) || t.value.includes(_this3.searchTerm);
+ });
+ filtered = filtered.slice(0, 1000);
+ return filtered;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue
+
+
+
+TranslationSearchvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var TranslationSearch = (TranslationSearchvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var TranslationSearch_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: TranslationSearch,
+ directiveName: 'piwikTranslationSearch'
+}));
+// CONCATENATED MODULE: ./plugins/LanguagesManager/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=LanguagesManager.umd.js.map \ No newline at end of file
diff --git a/plugins/LanguagesManager/vue/dist/LanguagesManager.umd.min.js b/plugins/LanguagesManager/vue/dist/LanguagesManager.umd.min.js
new file mode 100644
index 0000000000..e07348f412
--- /dev/null
+++ b/plugins/LanguagesManager/vue/dist/LanguagesManager.umd.min.js
@@ -0,0 +1,20 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["LanguagesManager"]=t(require("CoreHome"),require("vue")):e["LanguagesManager"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/LanguagesManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"TranslationSearch",(function(){return T})),n.d(t,"LanguageSelector",(function(){return c})),"undefined"!==typeof window){var a=window.document.currentScript,o=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var r=window,l=r.$;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function i(e,t){var n=l(t.target).attr("value");n&&l(e).find("#language").val(n).parents("form").submit()}var c={mounted:function(e,t){t.value.onClick=i.bind(null,e),l(e).on("click","a[value]",t.value.onClick)},unmounted:function(e,t){l(e).off("click","a[value]",t.value.onClick)}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function u(){return{restrict:"C",link:function(e,t){var n={instance:null,value:{},oldValue:null,modifiers:{},dir:{}};c.mounted(t[0],n),t.on("$destroy",(function(){c.unmounted(t[0],n)}))}}}window.angular.module("piwikApp").directive("languageSelection",u);var s=n("19dc"),d=n("8bbf"),f=Object(d["createElementVNode"])("p",null,[Object(d["createTextVNode"])(" This page helps you to find existing translations that you can reuse in your Plugin. If you want to know more about translations have a look at our "),Object(d["createElementVNode"])("a",{href:"https://developer.matomo.org/guides/internationalization",rel:"noreferrer noopener",target:"_blank"},"Internationalization guide"),Object(d["createTextVNode"])(". Enter a search term to find translations and their corresponding keys: ")],-1),g=Object(d["createElementVNode"])("br",null,null,-1),m=Object(d["createElementVNode"])("br",null,null,-1),p={style:{"word-break":"break-all"}},b=Object(d["createElementVNode"])("th",{style:{width:"250px"}},"Key",-1),h=Object(d["createElementVNode"])("th",null,"English translation",-1),v={key:0};function j(e,t,n,a,o,r){var l=Object(d["resolveComponent"])("Field"),i=Object(d["resolveDirective"])("content-table");return Object(d["openBlock"])(),Object(d["createElementBlock"])("div",null,[f,Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(l,{uicontrol:"text",name:"alias","inline-help":"Search for English translation. Max 1000 results will be shown.",placeholder:"Search for English translation",modelValue:e.searchTerm,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.searchTerm=t})},null,8,["modelValue"])]),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(l,{uicontrol:"select",name:"translationSearch.compareLanguage","inline-help":"Optionally select a language to compare the English language with.","model-value":e.compareLanguage,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.compareLanguage=t,e.doCompareLanguage()}),options:e.languages},null,8,["model-value","options"])]),g,m,Object(d["withDirectives"])(Object(d["createElementVNode"])("table",p,[Object(d["createElementVNode"])("thead",null,[Object(d["createElementVNode"])("tr",null,[b,h,Object(d["withDirectives"])(Object(d["createElementVNode"])("th",null,"Compare translation",512),[[d["vShow"],e.compareLanguage&&e.compareTranslations]])])]),Object(d["createElementVNode"])("tbody",null,[(Object(d["openBlock"])(!0),Object(d["createElementBlock"])(d["Fragment"],null,Object(d["renderList"])(e.filteredTranslations,(function(t){return Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",{key:t.label},[Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.label),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.value),1),e.compareLanguage&&e.compareTranslations?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",v,Object(d["toDisplayString"])(e.compareTranslations[t.label]),1)):Object(d["createCommentVNode"])("",!0)])})),128))])],512),[[d["vShow"],e.searchTerm],[i]])])}var O=Object(s["useExternalPluginComponent"])("CorePluginsAdmin","Field"),y=Object(d["defineComponent"])({components:{Field:O},directives:{ContentTable:s["ContentTable"]},data:function(){return{compareTranslations:null,existingTranslations:[],languages:[],compareLanguage:"",searchTerm:""}},created:function(){this.fetchTranslations("en"),this.fetchLanguages()},methods:{fetchTranslations:function(e){var t=this;s["AjaxHelper"].fetch({method:"LanguagesManager.getTranslationsForLanguage",filter_limit:-1,languageCode:e}).then((function(n){n&&("en"===e?t.existingTranslations=n:(t.compareTranslations={},n.forEach((function(e){t.compareTranslations[e.label]=e.value}))))}))},fetchLanguages:function(){var e=this;s["AjaxHelper"].fetch({method:"LanguagesManager.getAvailableLanguagesInfo",filter_limit:-1}).then((function(t){e.languages=[{key:"",value:"None"}],t&&t.forEach((function(t){"en"!==t.code&&e.languages.push({key:t.code,value:t.name})}))}))},doCompareLanguage:function(){this.compareLanguage&&(this.compareTranslations=null,this.fetchTranslations(this.compareLanguage))}},computed:{filteredTranslations:function(){var e=this,t=this.existingTranslations.filter((function(t){return t.label.includes(e.searchTerm)||t.value.includes(e.searchTerm)}));return t=t.slice(0,1e3),t}}});y.render=j;var T=y;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(s["createAngularJsAdapter"])({component:T,directiveName:"piwikTranslationSearch"})}})}));
+//# sourceMappingURL=LanguagesManager.umd.min.js.map \ No newline at end of file
diff --git a/plugins/LanguagesManager/vue/dist/umd.metadata.json b/plugins/LanguagesManager/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..9ecfcc0456
--- /dev/null
+++ b/plugins/LanguagesManager/vue/dist/umd.metadata.json
@@ -0,0 +1,5 @@
+{
+ "dependsOn": [
+ "CoreHome"
+ ]
+} \ No newline at end of file
diff --git a/plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.adapter.ts b/plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.adapter.ts
new file mode 100644
index 0000000000..bd8076421f
--- /dev/null
+++ b/plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.adapter.ts
@@ -0,0 +1,31 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { IScope } from 'angular';
+import LanguageSelector from './LanguageSelector';
+
+function languageSelection() {
+ return {
+ restrict: 'C',
+ link: function languageSelectionLink(scope: IScope, element: JQuery) {
+ const binding = {
+ instance: null,
+ value: {},
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ LanguageSelector.mounted(element[0], binding);
+ element.on('$destroy', () => {
+ LanguageSelector.unmounted(element[0], binding);
+ });
+ },
+ };
+}
+
+window.angular.module('piwikApp').directive('languageSelection', languageSelection);
diff --git a/plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.ts b/plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.ts
new file mode 100644
index 0000000000..e2f622998b
--- /dev/null
+++ b/plugins/LanguagesManager/vue/src/LanguageSelector/LanguageSelector.ts
@@ -0,0 +1,36 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { DirectiveBinding } from 'vue';
+import ClickEvent = JQuery.ClickEvent;
+
+const { $ } = window;
+
+interface LanguageSelectorBinding {
+ onClick?: (event: ClickEvent) => void;
+}
+
+function postLanguageChange(element: HTMLElement, event: ClickEvent) {
+ const value = $(event.target).attr('value');
+ if (value) {
+ $(element)
+ .find('#language')
+ .val(value)
+ .parents('form')
+ .submit();
+ }
+}
+
+export default {
+ mounted(el: HTMLElement, binding: DirectiveBinding<LanguageSelectorBinding>): void {
+ binding.value.onClick = postLanguageChange.bind(null, el);
+ $(el).on('click', 'a[value]', binding.value.onClick!);
+ },
+ unmounted(el: HTMLElement, binding: DirectiveBinding<LanguageSelectorBinding>): void {
+ $(el).off('click', 'a[value]', binding.value.onClick!);
+ },
+};
diff --git a/plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.adapter.ts b/plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.adapter.ts
new file mode 100644
index 0000000000..c32abdf102
--- /dev/null
+++ b/plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.adapter.ts
@@ -0,0 +1,14 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import TranslationSearch from './TranslationSearch.vue';
+
+export default createAngularJsAdapter({
+ component: TranslationSearch,
+ directiveName: 'piwikTranslationSearch',
+});
diff --git a/plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue b/plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue
new file mode 100644
index 0000000000..c84c02df02
--- /dev/null
+++ b/plugins/LanguagesManager/vue/src/TranslationSearch/TranslationSearch.vue
@@ -0,0 +1,183 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div>
+ <p>
+ This page helps you to find existing translations that you can reuse in your Plugin.
+ If you want to know more about translations have a look at our
+ <a
+ href="https://developer.matomo.org/guides/internationalization"
+ rel="noreferrer noopener"
+ target="_blank"
+ >Internationalization guide</a>.
+ Enter a search term to find translations and their corresponding keys:
+ </p>
+ <div>
+ <Field
+ uicontrol="text"
+ name="alias"
+ inline-help="Search for English translation. Max 1000 results will be shown."
+ placeholder="Search for English translation"
+ v-model="searchTerm"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="select"
+ name="translationSearch.compareLanguage"
+ inline-help="Optionally select a language to compare the English language with."
+ :model-value="compareLanguage"
+ @update:model-value="compareLanguage = $event; doCompareLanguage()"
+ :options="languages"
+ >
+ </Field>
+ </div>
+ <br />
+ <br />
+ <table
+ style="word-break: break-all;"
+ v-show="searchTerm"
+ v-content-table
+ >
+ <thead>
+ <tr>
+ <th style="width:250px;">Key</th>
+ <th>English translation</th>
+ <th v-show="compareLanguage && compareTranslations">Compare translation</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr
+ v-for="translation in filteredTranslations"
+ :key="translation.label"
+ >
+ <td>{{ translation.label }}</td>
+ <td>{{ translation.value }}</td>
+ <td v-if="compareLanguage && compareTranslations">
+ {{ compareTranslations[translation.label] }}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { AjaxHelper, ContentTable, useExternalPluginComponent } from 'CoreHome';
+
+interface Option {
+ key: string;
+ value: string;
+}
+
+interface Translation {
+ label: string;
+ value: string;
+}
+
+interface Language {
+ code: string;
+ name: string;
+}
+
+interface TranslationSearchState {
+ compareTranslations: Record<string, string>|null;
+ existingTranslations: Translation[];
+ languages: Option[];
+ compareLanguage: string;
+ searchTerm: string;
+}
+
+// loading a component this way since during Installation we don't want to load CorePluginsAdmin
+// just for the language selector directive
+const Field = useExternalPluginComponent('CorePluginsAdmin', 'Field');
+
+export default defineComponent({
+ components: {
+ Field,
+ },
+ directives: {
+ ContentTable,
+ },
+ data(): TranslationSearchState {
+ return {
+ compareTranslations: null,
+ existingTranslations: [],
+ languages: [],
+ compareLanguage: '',
+ searchTerm: '',
+ };
+ },
+ created() {
+ this.fetchTranslations('en');
+ this.fetchLanguages();
+ },
+ methods: {
+ fetchTranslations(languageCode: string) {
+ AjaxHelper.fetch<Translation[]>({
+ method: 'LanguagesManager.getTranslationsForLanguage',
+ filter_limit: -1,
+ languageCode,
+ }).then((response) => {
+ if (!response) {
+ return;
+ }
+
+ if (languageCode === 'en') {
+ this.existingTranslations = response;
+ } else {
+ this.compareTranslations = {};
+ response.forEach((translation) => {
+ this.compareTranslations![translation.label] = translation.value;
+ });
+ }
+ });
+ },
+ fetchLanguages() {
+ AjaxHelper.fetch<Language[]>({
+ method: 'LanguagesManager.getAvailableLanguagesInfo',
+ filter_limit: -1,
+ }).then((languages) => {
+ this.languages = [{
+ key: '',
+ value: 'None',
+ }];
+
+ if (languages) {
+ languages.forEach((language) => {
+ if (language.code === 'en') {
+ return;
+ }
+
+ this.languages.push({
+ key: language.code,
+ value: language.name,
+ });
+ });
+ }
+ });
+ },
+ doCompareLanguage() {
+ if (this.compareLanguage) {
+ this.compareTranslations = null;
+ this.fetchTranslations(this.compareLanguage);
+ }
+ },
+ },
+ computed: {
+ filteredTranslations(): Translation[] {
+ let filtered = this.existingTranslations.filter(
+ (t) => t.label.includes(this.searchTerm) || t.value.includes(this.searchTerm),
+ );
+ filtered = filtered.slice(0, 1000);
+ return filtered;
+ },
+ },
+});
+</script>
diff --git a/plugins/LanguagesManager/vue/src/index.ts b/plugins/LanguagesManager/vue/src/index.ts
new file mode 100644
index 0000000000..d31cd92ab9
--- /dev/null
+++ b/plugins/LanguagesManager/vue/src/index.ts
@@ -0,0 +1,12 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './LanguageSelector/LanguageSelector.adapter';
+import './TranslationSearch/TranslationSearch.adapter';
+
+export { default as TranslationSearch } from './TranslationSearch/TranslationSearch.vue';
+export { default as LanguageSelector } from './LanguageSelector/LanguageSelector.ts';
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index 032ba40675..0f639a9e87 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -15,7 +15,6 @@ use Piwik\Config;
use Piwik\DataTable;
use Piwik\Date;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Site;
use Psr\Log\LoggerInterface;
diff --git a/plugins/Live/Controller.php b/plugins/Live/Controller.php
index 5d9590df6b..8625805495 100644
--- a/plugins/Live/Controller.php
+++ b/plugins/Live/Controller.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
use Piwik\DataTable;
-use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Plugins\Live\Exception\MaxExecutionTimeExceededException;
use Piwik\Plugins\Live\Visualizations\VisitorLog;
use Piwik\Url;
diff --git a/plugins/Live/Live.php b/plugins/Live/Live.php
index 3995d5df76..00b1f4bbae 100644
--- a/plugins/Live/Live.php
+++ b/plugins/Live/Live.php
@@ -164,7 +164,6 @@ class Live extends \Piwik\Plugin
$jsFiles[] = "plugins/Live/javascripts/visitorProfile.js";
$jsFiles[] = "plugins/Live/javascripts/visitorLog.js";
$jsFiles[] = "plugins/Live/javascripts/rowaction.js";
- $jsFiles[] = "plugins/Live/angularjs/live-widget-refresh/live-widget-refresh.directive.js";
}
public function getClientSideTranslationKeys(&$translationKeys)
diff --git a/plugins/Live/ProfileSummary/Summary.php b/plugins/Live/ProfileSummary/Summary.php
index 9f864f3bd4..c08cec750b 100644
--- a/plugins/Live/ProfileSummary/Summary.php
+++ b/plugins/Live/ProfileSummary/Summary.php
@@ -12,7 +12,6 @@ use Piwik\API\Request;
use Piwik\Common;
use Piwik\Piwik;
use Piwik\View;
-use Piwik\Plugins\Goals\API as APIGoals;
/**
* Class Summary
diff --git a/plugins/Live/Reports/GetSimpleLastVisitCount.php b/plugins/Live/Reports/GetSimpleLastVisitCount.php
index 642cf5e354..5ea442d509 100644
--- a/plugins/Live/Reports/GetSimpleLastVisitCount.php
+++ b/plugins/Live/Reports/GetSimpleLastVisitCount.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Live\Reports;
use Piwik\Config;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugins\Live\Controller;
use Piwik\API\Request;
use Piwik\Plugins\Live\Exception\MaxExecutionTimeExceededException;
diff --git a/plugins/Live/Visitor.php b/plugins/Live/Visitor.php
index 388be77727..e0c4192d24 100644
--- a/plugins/Live/Visitor.php
+++ b/plugins/Live/Visitor.php
@@ -12,12 +12,9 @@ use Piwik\Cache;
use Piwik\CacheId;
use Piwik\Config;
use Piwik\DataTable\Filter\ColumnDelete;
-use Piwik\Date;
-use Piwik\Metrics\Formatter;
use Piwik\Plugin;
use Piwik\Piwik;
use Piwik\Plugins\Live\Visualizations\VisitorLog;
-use Piwik\Tracker\GoalManager;
class Visitor implements VisitorInterface
{
diff --git a/plugins/Live/angularjs/live-widget-refresh/live-widget-refresh.directive.js b/plugins/Live/angularjs/live-widget-refresh/live-widget-refresh.directive.js
deleted file mode 100644
index 2d220d7db0..0000000000
--- a/plugins/Live/angularjs/live-widget-refresh/live-widget-refresh.directive.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-live-widget-refresh>
- */
-(function () {
- angular.module('piwikApp').directive('piwikLiveWidgetRefresh', piwikLiveWidgetRefresh);
-
- piwikLiveWidgetRefresh.$inject = ['piwik', '$timeout'];
-
- function piwikLiveWidgetRefresh(piwik, $timeout){
-
- return {
- restrict: 'A',
- scope: {
- liveRefreshAfterMs: '@'
- },
- compile: function (element, attrs) {
-
- return function (scope, element, attrs) {
-
- $timeout(function () {
- var segment = broadcast.getValueFromHash('segment');
- if (!segment) {
- segment = broadcast.getValueFromUrl('segment');
- }
-
- $(element).find('#visitsLive').liveWidget({
- interval: scope.liveRefreshAfterMs,
- onUpdate: function () {
- //updates the numbers of total visits in startbox
- var ajaxRequest = new ajaxHelper();
- ajaxRequest.setFormat('html');
- ajaxRequest.addParams({
- module: 'Live',
- action: 'ajaxTotalVisitors',
- segment: segment
- }, 'GET');
- ajaxRequest.setCallback(function (r) {
- $(element).find("#visitsTotal").replaceWith(r);
- });
- ajaxRequest.send();
- },
- maxRows: 10,
- fadeInSpeed: 600,
- dataUrlParams: {
- module: 'Live',
- action: 'getLastVisitsStart',
- segment: segment
- }
- });
-
- });
- };
- }
- };
- }
-})();
diff --git a/plugins/Live/tests/System/ApiCounterTest.php b/plugins/Live/tests/System/ApiCounterTest.php
index 730187a6e2..5c81d0260e 100644
--- a/plugins/Live/tests/System/ApiCounterTest.php
+++ b/plugins/Live/tests/System/ApiCounterTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Live\tests\System;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugins\Goals\API as GoalsApi;
use Piwik\Plugins\Live\API;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/Live/vue/dist/Live.umd.js b/plugins/Live/vue/dist/Live.umd.js
new file mode 100644
index 0000000000..2f24116285
--- /dev/null
+++ b/plugins/Live/vue/dist/Live.umd.js
@@ -0,0 +1,225 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome"], factory);
+ else if(typeof exports === 'object')
+ exports["Live"] = factory(require("CoreHome"));
+ else
+ root["Live"] = factory(root["CoreHome"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/Live/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "LiveWidgetRefresh", function() { return /* reexport */ LiveWidgetRefresh; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// CONCATENATED MODULE: ./plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+var _window = window,
+ $ = _window.$;
+/* harmony default export */ var LiveWidgetRefresh = ({
+ mounted: function mounted(el, binding) {
+ setTimeout(function () {
+ var segment = external_CoreHome_["MatomoUrl"].parsed.value.segment; // eslint-disable-next-line @typescript-eslint/no-explicit-any
+
+ $(el).find('#visitsLive').liveWidget({
+ interval: binding.value.liveRefreshAfterMs,
+ onUpdate: function onUpdate() {
+ // updates the numbers of total visits in startbox
+ external_CoreHome_["AjaxHelper"].fetch({
+ module: 'Live',
+ action: 'ajaxTotalVisitors',
+ segment: segment
+ }, {
+ format: 'html'
+ }).then(function (r) {
+ $(el).find('#visitsTotal').replaceWith(r);
+ });
+ },
+ maxRows: 10,
+ fadeInSpeed: 600,
+ dataUrlParams: {
+ module: 'Live',
+ action: 'getLastVisitsStart',
+ segment: segment
+ }
+ });
+ });
+ }
+});
+// CONCATENATED MODULE: ./plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+function piwikLiveWidgetRefresh() {
+ return {
+ restrict: 'A',
+ scope: {
+ liveRefreshAfterMs: '@'
+ },
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ link: function link(scope, element) {
+ LiveWidgetRefresh.mounted(element[0], {
+ instance: null,
+ value: {
+ liveRefreshAfterMs: parseInt(scope.liveRefreshAfterMs, 10)
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ });
+ }
+ };
+}
+
+piwikLiveWidgetRefresh.$inject = ['piwik', '$timeout'];
+window.angular.module('piwikApp').directive('piwikLiveWidgetRefresh', piwikLiveWidgetRefresh);
+// CONCATENATED MODULE: ./plugins/Live/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=Live.umd.js.map \ No newline at end of file
diff --git a/plugins/Live/vue/dist/Live.umd.min.js b/plugins/Live/vue/dist/Live.umd.min.js
new file mode 100644
index 0000000000..de0f12955e
--- /dev/null
+++ b/plugins/Live/vue/dist/Live.umd.min.js
@@ -0,0 +1,9 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["Live"]=t(require("CoreHome")):e["Live"]=t(e["CoreHome"])})("undefined"!==typeof self?self:this,(function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Live/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"LiveWidgetRefresh",(function(){return l})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var o=n("19dc"),u=window,f=u.$,l={mounted:function(e,t){setTimeout((function(){var n=o["MatomoUrl"].parsed.value.segment;f(e).find("#visitsLive").liveWidget({interval:t.value.liveRefreshAfterMs,onUpdate:function(){o["AjaxHelper"].fetch({module:"Live",action:"ajaxTotalVisitors",segment:n},{format:"html"}).then((function(t){f(e).find("#visitsTotal").replaceWith(t)}))},maxRows:10,fadeInSpeed:600,dataUrlParams:{module:"Live",action:"getLastVisitsStart",segment:n}})}))}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function s(){return{restrict:"A",scope:{liveRefreshAfterMs:"@"},link:function(e,t){l.mounted(t[0],{instance:null,value:{liveRefreshAfterMs:parseInt(e.liveRefreshAfterMs,10)},oldValue:null,modifiers:{},dir:{}})}}}s.$inject=["piwik","$timeout"],window.angular.module("piwikApp").directive("piwikLiveWidgetRefresh",s)}})}));
+//# sourceMappingURL=Live.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Live/vue/dist/umd.metadata.json b/plugins/Live/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..9ecfcc0456
--- /dev/null
+++ b/plugins/Live/vue/dist/umd.metadata.json
@@ -0,0 +1,5 @@
+{
+ "dependsOn": [
+ "CoreHome"
+ ]
+} \ No newline at end of file
diff --git a/plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.adapter.ts b/plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.adapter.ts
new file mode 100644
index 0000000000..9e13fd94a6
--- /dev/null
+++ b/plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.adapter.ts
@@ -0,0 +1,33 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import LiveWidgetRefresh from './LiveWidgetRefresh';
+
+function piwikLiveWidgetRefresh() {
+ return {
+ restrict: 'A',
+ scope: {
+ liveRefreshAfterMs: '@',
+ },
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ link(scope: any, element: JQuery) {
+ LiveWidgetRefresh.mounted(element[0], {
+ instance: null,
+ value: {
+ liveRefreshAfterMs: parseInt(scope.liveRefreshAfterMs, 10),
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ });
+ },
+ };
+}
+
+piwikLiveWidgetRefresh.$inject = ['piwik', '$timeout'];
+
+window.angular.module('piwikApp').directive('piwikLiveWidgetRefresh', piwikLiveWidgetRefresh);
diff --git a/plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.ts b/plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.ts
new file mode 100644
index 0000000000..35d6b57239
--- /dev/null
+++ b/plugins/Live/vue/src/LiveWidget/LiveWidgetRefresh.ts
@@ -0,0 +1,50 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { MatomoUrl, AjaxHelper } from 'CoreHome';
+import { DirectiveBinding } from 'vue';
+
+interface LiveWidgetRefreshBinding {
+ liveRefreshAfterMs: number;
+}
+
+const { $ } = window;
+
+export default {
+ mounted(el: HTMLElement, binding: DirectiveBinding<LiveWidgetRefreshBinding>): void {
+ setTimeout(() => {
+ const segment = MatomoUrl.parsed.value.segment as string;
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ ($(el).find('#visitsLive') as any).liveWidget({
+ interval: binding.value.liveRefreshAfterMs,
+ onUpdate: () => {
+ // updates the numbers of total visits in startbox
+ AjaxHelper.fetch(
+ {
+ module: 'Live',
+ action: 'ajaxTotalVisitors',
+ segment,
+ },
+ {
+ format: 'html',
+ },
+ ).then((r) => {
+ $(el).find('#visitsTotal').replaceWith(r);
+ });
+ },
+ maxRows: 10,
+ fadeInSpeed: 600,
+ dataUrlParams: {
+ module: 'Live',
+ action: 'getLastVisitsStart',
+ segment,
+ },
+ });
+ });
+ },
+};
diff --git a/plugins/Live/vue/src/index.ts b/plugins/Live/vue/src/index.ts
new file mode 100644
index 0000000000..179e998c6d
--- /dev/null
+++ b/plugins/Live/vue/src/index.ts
@@ -0,0 +1,10 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './LiveWidget/LiveWidgetRefresh.adapter';
+
+export { default as LiveWidgetRefresh } from './LiveWidget/LiveWidgetRefresh';
diff --git a/plugins/LogViewer b/plugins/LogViewer
-Subproject 7ff68a3c71d4720c2816d701a0939f2bd5eee78
+Subproject 33ce153d1f476c086653e7673e52875af3a25b4
diff --git a/plugins/Login/Commands/UnblockBlockedIps.php b/plugins/Login/Commands/UnblockBlockedIps.php
index d736f2fb99..de781b4ea3 100644
--- a/plugins/Login/Commands/UnblockBlockedIps.php
+++ b/plugins/Login/Commands/UnblockBlockedIps.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Login\Commands;
use Piwik\API\Request;
use Piwik\Piwik;
use Piwik\Plugin\ConsoleCommand;
-use Piwik\Plugins\Login\API;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/Login/Controller.php b/plugins/Login/Controller.php
index b13f3f8231..fff60e74d7 100644
--- a/plugins/Login/Controller.php
+++ b/plugins/Login/Controller.php
@@ -9,18 +9,14 @@
namespace Piwik\Plugins\Login;
use Exception;
-use Piwik\Access;
-use Piwik\Auth\Password;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Date;
use Piwik\Log;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Plugins\Login\Security\BruteForceDetection;
use Piwik\Plugins\UsersManager\Model AS UsersModel;
-use Piwik\Plugins\UsersManager\UserUpdater;
use Piwik\QuickForm2;
use Piwik\Session;
use Piwik\Url;
diff --git a/plugins/Login/Security/BruteForceDetection.php b/plugins/Login/Security/BruteForceDetection.php
index ab94491d78..8ada5e9204 100644
--- a/plugins/Login/Security/BruteForceDetection.php
+++ b/plugins/Login/Security/BruteForceDetection.php
@@ -12,12 +12,10 @@ use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Option;
use Piwik\Plugins\Login\Emails\SuspiciousLoginAttemptsInLastHourEmail;
use Piwik\Plugins\Login\Model;
use Piwik\Plugins\Login\SystemSettings;
use Piwik\Updater;
-use Piwik\Version;
use Psr\Log\LoggerInterface;
class BruteForceDetection {
diff --git a/plugins/Login/SessionInitializer.php b/plugins/Login/SessionInitializer.php
index 64d24d177a..03fee42603 100644
--- a/plugins/Login/SessionInitializer.php
+++ b/plugins/Login/SessionInitializer.php
@@ -13,8 +13,6 @@ use Piwik\Auth as AuthInterface;
use Piwik\AuthResult;
use Piwik\Config;
use Piwik\Cookie;
-use Piwik\Db;
-use Piwik\Log;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\API as UsersManagerAPI;
use Piwik\ProxyHttp;
diff --git a/plugins/Login/tests/Integration/LoginTest.php b/plugins/Login/tests/Integration/LoginTest.php
index 24d9c31306..39f2cc3e76 100644
--- a/plugins/Login/tests/Integration/LoginTest.php
+++ b/plugins/Login/tests/Integration/LoginTest.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\Login\tests\Integration;
use Piwik\AuthResult;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
use Piwik\DbHelper;
-use Piwik\NoAccessException;
use Piwik\Plugins\Login\Auth;
use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\UserUpdater;
diff --git a/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php b/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php
index 419f8ec0d3..45c6d9877d 100644
--- a/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php
+++ b/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php
@@ -8,12 +8,9 @@
namespace Piwik\Plugins\Login\tests\Integration\Security;
-use Piwik\Common;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Mail;
use Piwik\Piwik;
-use Piwik\Plugins\Login\Dao\BruteForceDetectionDao;
use Piwik\Plugins\Login\Emails\SuspiciousLoginAttemptsInLastHourEmail;
use Piwik\Plugins\Login\Security\BruteForceDetection;
use Piwik\Plugins\Login\SystemSettings;
diff --git a/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_noentries.png b/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_noentries.png
index 71fdde407f..1f0b84b090 100644
--- a/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_noentries.png
+++ b/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_noentries.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1a3a14f44995dcc03d4853344e183dae826eaf7b0cb6508e235323d6a2c846a0
-size 50032
+oid sha256:47b698f988ed27aa73e26ccc1036a2e19b12d21ef491c052be52944745c84279
+size 50753
diff --git a/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_withentries.png b/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_withentries.png
index 1d538ec8c2..175f65bf48 100644
--- a/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_withentries.png
+++ b/plugins/Login/tests/UI/expected-screenshots/Login_bruteforcelog_withentries.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ef818716e505eb33817233173a5919d10088337060691d42415a8bc22a0f2522
-size 67412
+oid sha256:0f63bd20d066b619e26f486525bf565cb03a263432f864179d71cb249521d5a5
+size 68011
diff --git a/plugins/LoginLdap b/plugins/LoginLdap
-Subproject 92279d6ee2f1135ec1e4140055e5cd546e95fb6
+Subproject 5be4222ed3622a8a4fa49dd4a626fe8ee67b584
diff --git a/plugins/Marketplace/Commands/SetLicenseKey.php b/plugins/Marketplace/Commands/SetLicenseKey.php
index 7af3389f6d..2b22cc7daa 100644
--- a/plugins/Marketplace/Commands/SetLicenseKey.php
+++ b/plugins/Marketplace/Commands/SetLicenseKey.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Marketplace\Commands;
use Piwik\Plugin\ConsoleCommand;
-use Piwik\Plugins\Marketplace\LicenseKey;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/Marketplace/Marketplace.php b/plugins/Marketplace/Marketplace.php
index a07ef9b1d0..e043742518 100644
--- a/plugins/Marketplace/Marketplace.php
+++ b/plugins/Marketplace/Marketplace.php
@@ -9,10 +9,7 @@
namespace Piwik\Plugins\Marketplace;
use Piwik\Container\StaticContainer;
-use Piwik\Piwik;
use Piwik\Plugin;
-use Piwik\Plugins\Marketplace\Widgets\GetNewPlugins;
-use Piwik\Plugins\Marketplace\Widgets\GetPremiumFeatures;
use Piwik\SettingsPiwik;
use Piwik\Widget\WidgetsList;
@@ -60,7 +57,6 @@ class Marketplace extends \Piwik\Plugin
$jsFiles[] = "node_modules/iframe-resizer/js/iframeResizer.min.js";
$jsFiles[] = "plugins/Marketplace/angularjs/plugins/plugin-name.directive.js";
- $jsFiles[] = "plugins/Marketplace/angularjs/licensekey/licensekey.controller.js";
$jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.controller.js";
$jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.directive.js";
}
@@ -69,6 +65,20 @@ class Marketplace extends \Piwik\Plugin
{
$translationKeys[] = 'Marketplace_LicenseKeyActivatedSuccess';
$translationKeys[] = 'Marketplace_LicenseKeyDeletedSuccess';
+ $translationKeys[] = 'Marketplace_PaidPluginsNoLicenseKeyIntro';
+ $translationKeys[] = 'Marketplace_PaidPluginsWithLicenseKeyIntro';
+ $translationKeys[] = 'Marketplace_RemoveLicenseKey';
+ $translationKeys[] = 'Marketplace_ViewSubscriptions';
+ $translationKeys[] = 'Marketplace_InstallPurchasedPlugins';
+ $translationKeys[] = 'Marketplace_InstallAllPurchasedPlugins';
+ $translationKeys[] = 'Marketplace_InstallThesePlugins';
+ $translationKeys[] = 'Marketplace_InstallAllPurchasedPluginsAction';
+ $translationKeys[] = 'Marketplace_ConfirmRemoveLicense';
+ $translationKeys[] = 'Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess';
+ $translationKeys[] = 'Marketplace_LicenseKeyIsValidShort';
+ $translationKeys[] = 'Marketplace_LicenseKey';
+ $translationKeys[] = 'CoreUpdater_UpdateTitle';
+ $translationKeys[] = 'Marketplace_ActivateLicenseKey';
}
/**
diff --git a/plugins/Marketplace/Widgets/GetPremiumFeatures.php b/plugins/Marketplace/Widgets/GetPremiumFeatures.php
index 7569797e05..35a35766fb 100644
--- a/plugins/Marketplace/Widgets/GetPremiumFeatures.php
+++ b/plugins/Marketplace/Widgets/GetPremiumFeatures.php
@@ -8,9 +8,7 @@
*/
namespace Piwik\Plugins\Marketplace\Widgets;
-use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugin;
use Piwik\Plugins\Marketplace\Api\Client;
use Piwik\Plugins\Marketplace\Input\PurchaseType;
use Piwik\Plugins\Marketplace\Input\Sort;
diff --git a/plugins/Marketplace/Widgets/Marketplace.php b/plugins/Marketplace/Widgets/Marketplace.php
index 678ae31ee8..b662be0322 100644
--- a/plugins/Marketplace/Widgets/Marketplace.php
+++ b/plugins/Marketplace/Widgets/Marketplace.php
@@ -8,11 +8,7 @@
*/
namespace Piwik\Plugins\Marketplace\Widgets;
-use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Marketplace\Api\Client;
-use Piwik\Plugins\Marketplace\Input\PurchaseType;
-use Piwik\Plugins\Marketplace\Input\Sort;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
diff --git a/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js b/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js
deleted file mode 100644
index 6a19522c0d..0000000000
--- a/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('PiwikMarketplaceLicenseController', PiwikMarketplaceLicenseController);
-
- PiwikMarketplaceLicenseController.$inject = ['piwik', 'piwikApi'];
-
- function PiwikMarketplaceLicenseController(piwik, piwikApi) {
-
- this.licenseKey = '';
- this.enableUpdate = false;
- this.isUpdating = false;
-
- var self = this;
-
- function updateLicenseKey(action, licenseKey, onSuccessMessage)
- {
-
- piwikApi.withTokenInUrl();
- piwikApi.post({
- module: 'API',
- method: 'Marketplace.' + action,
- format: 'JSON'
- }, {licenseKey: licenseKey}).then(function (response) {
- self.isUpdating = false;
-
- if (response && response.value) {
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(onSuccessMessage, {context: 'success'});
-
- piwik.helper.redirect();
- }
- }, function () {
- self.isUpdating = false;
- });
- }
-
- this.updatedLicenseKey = function () {
- this.enableUpdate = !!this.licenseKey;
- };
-
- this.updateLicense = function () {
- this.enableUpdate = false;
- this.isUpdating = true;
-
- updateLicenseKey('saveLicenseKey', this.licenseKey, _pk_translate('Marketplace_LicenseKeyActivatedSuccess'));
- };
-
- this.removeLicense = function () {
- piwik.helper.modalConfirm('#confirmRemoveLicense', {yes: function () {
- self.enableUpdate = false;
- self.isUpdating = true;
- updateLicenseKey('deleteLicenseKey', '', _pk_translate('Marketplace_LicenseKeyDeletedSuccess'));
- }});
- };
-
- }
-})(); \ No newline at end of file
diff --git a/plugins/Marketplace/templates/licenseform.twig b/plugins/Marketplace/templates/licenseform.twig
index 9e5b9ab596..5c4f41a6ca 100644
--- a/plugins/Marketplace/templates/licenseform.twig
+++ b/plugins/Marketplace/templates/licenseform.twig
@@ -1,75 +1,10 @@
-{% set defaultLicenseKeyFields %}
- <div piwik-field uicontrol="text" name="license_key"
- class="valign licenseKeyText"
- full-width="true"
- ng-model="licenseController.licenseKey"
- ng-change="licenseController.updatedLicenseKey()"
- placeholder="{% if isValidConsumer %}{{ 'Marketplace_LicenseKeyIsValidShort'|translate }}{% else %}{{ 'Marketplace_LicenseKey'|translate|e('html_attr') }}{% endif %}">
- </div>
- <div piwik-save-button
- class="valign"
- onconfirm="licenseController.updateLicense()"
- data-disabled="!licenseController.enableUpdate"
- value="{% if hasLicenseKey %}{{ 'CoreUpdater_UpdateTitle'|translate|e('html_attr') }}{% else %}{{ 'Marketplace_ActivateLicenseKey'|translate|e('html_attr') }}{% endif %}"
- id="submit_license_key"></div>
-{% endset %}
-
-<div class="marketplace-max-width" ng-controller="PiwikMarketplaceLicenseController as licenseController">
- <div class="marketplace-paid-intro">
- {% if isValidConsumer %}
- {% if isSuperUser %}
- {{ 'Marketplace_PaidPluginsWithLicenseKeyIntro'|translate('')|raw }}
- <br/>
-
- <div class="licenseToolbar valign-wrapper">
- {{ defaultLicenseKeyFields|raw }}
-
- <div piwik-save-button
- class="valign"
- id="remove_license_key"
- onconfirm="licenseController.removeLicense()"
- value="{{ 'Marketplace_RemoveLicenseKey'|translate|e('html_attr') }}"
- ></div>
-
- <a href="{{ linkTo({'action': 'subscriptionOverview'}) }}" class="btn valign">
- {{ 'Marketplace_ViewSubscriptions'|translate }}
- </a>
-
- {% if isAutoUpdatePossible and isPluginsAdminEnabled and paidPluginsToInstallAtOnce|length %}
- <a href="javascript:;" class="btn installAllPaidPlugins valign">
- {{ 'Marketplace_InstallPurchasedPlugins'|translate }}
- </a>
- {% include '@Marketplace/paid-plugins-install-list.twig' %}
- {% endif %}
-
- </div>
-
- <div piwik-activity-indicator loading="licenseController.isUpdating"></div>
- {% endif %}
-
- {% else %}
- {% if isSuperUser %}
- {{ 'Marketplace_PaidPluginsNoLicenseKeyIntro'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/recommends/premium-plugins/'>", "</a>")|raw }}
-
- <br/>
-
- <div class="licenseToolbar valign-wrapper">
- {{ defaultLicenseKeyFields|raw }}
- </div>
-
- <div piwik-activity-indicator loading="licenseController.isUpdating"></div>
-
- {% else %}
- {{ 'Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/recommends/premium-plugins/'>", "</a>")|raw }}
- {% endif %}
-
- {% endif %}
- </div>
-</div>
-
-
-<div class="ui-confirm" id="confirmRemoveLicense">
- <h2>{{ 'Marketplace_ConfirmRemoveLicense'|translate }}</h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
-</div>
+<div
+ vue-entry="Marketplace.LicenseKey"
+ is-valid-consumer="{{ isValidConsumer|default(false)|json_encode|e('html_attr') }}"
+ is-super-user="{{ isSuperUser|default(false)|json_encode|e('html_attr') }}"
+ is-auto-update-possible="{{ isAutoUpdatePossible|default(false)|json_encode|e('html_attr') }}"
+ is-plugins-admin-enabled="{{ isPluginsAdminEnabled|default(false)|json_encode|e('html_attr') }}"
+ has-license-key="{{ hasLicenseKey|default(false)|json_encode|e('html_attr') }}"
+ paid-plugins-to-install-at-once="{{ paidPluginsToInstallAtOnce|default([])|json_encode|e('html_attr') }}"
+ install-nonce="{{ installNonce|default(null)|json_encode|e('html_attr') }}"
+></div>
diff --git a/plugins/Marketplace/templates/paid-plugins-install-list.twig b/plugins/Marketplace/templates/paid-plugins-install-list.twig
deleted file mode 100644
index 6c2feb4754..0000000000
--- a/plugins/Marketplace/templates/paid-plugins-install-list.twig
+++ /dev/null
@@ -1,18 +0,0 @@
-<div class="ui-confirm" id="installAllPaidPluginsAtOnce">
- <h2>{{ 'Marketplace_InstallAllPurchasedPlugins'|translate }}</h2>
- <p>
- {{ 'Marketplace_InstallThesePlugins'|translate }}
- <br /><br />
- </p>
- <ul>
- {% for pluginName in paidPluginsToInstallAtOnce %}
- <li>{{ pluginName }}</li>
- {% endfor %}
- </ul>
-
- <p>
- <input role="install" type="button" data-href="{{ linkTo({'action': 'installAllPaidPlugins', 'nonce': installNonce}) }}"
- value="{{ 'Marketplace_InstallAllPurchasedPluginsAction'|translate(paidPluginsToInstallAtOnce|length) }}">
- <input role="cancel" type="button" value="{{ 'General_Cancel'|translate }}"/>
- </p>
-</div>
diff --git a/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
index 73ed18059f..a3f49c3349 100644
--- a/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
+++ b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
@@ -17,7 +17,6 @@ use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Twig;
use Piwik\View;
-use Twig\Environment;
/**
* @group Plugins
diff --git a/plugins/Marketplace/vue/dist/Marketplace.umd.js b/plugins/Marketplace/vue/dist/Marketplace.umd.js
new file mode 100644
index 0000000000..10b2c36c49
--- /dev/null
+++ b/plugins/Marketplace/vue/dist/Marketplace.umd.js
@@ -0,0 +1,489 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
+ else if(typeof exports === 'object')
+ exports["Marketplace"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["Marketplace"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/Marketplace/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "LicenseKey", function() { return /* reexport */ LicenseKey; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=template&id=391f4838
+
+var _hoisted_1 = {
+ class: "marketplace-max-width"
+};
+var _hoisted_2 = {
+ class: "marketplace-paid-intro"
+};
+var _hoisted_3 = {
+ key: 0
+};
+var _hoisted_4 = {
+ key: 0
+};
+
+var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_6 = {
+ class: "licenseToolbar valign-wrapper"
+};
+var _hoisted_7 = ["href"];
+var _hoisted_8 = {
+ key: 0
+};
+var _hoisted_9 = {
+ href: "javascript:;",
+ class: "btn installAllPaidPlugins valign"
+};
+var _hoisted_10 = {
+ class: "ui-confirm",
+ id: "installAllPaidPluginsAtOnce"
+};
+
+var _hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_13 = ["data-href", "value"];
+var _hoisted_14 = ["value"];
+var _hoisted_15 = {
+ key: 1
+};
+var _hoisted_16 = {
+ key: 0
+};
+var _hoisted_17 = ["innerHTML"];
+
+var _hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_19 = {
+ class: "licenseToolbar valign-wrapper"
+};
+var _hoisted_20 = {
+ key: 1
+};
+var _hoisted_21 = ["innerHTML"];
+var _hoisted_22 = {
+ class: "ui-confirm",
+ id: "confirmRemoveLicense",
+ ref: "confirmRemoveLicense"
+};
+var _hoisted_23 = ["value"];
+var _hoisted_24 = ["value"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_DefaultLicenseKeyFields = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("DefaultLicenseKeyFields");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [_ctx.isValidConsumer ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_3, [_ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_PaidPluginsWithLicenseKeyIntro', '')) + " ", 1), _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DefaultLicenseKeyFields, {
+ "model-value": _ctx.licenseKey,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ _ctx.licenseKey = $event;
+
+ _ctx.updatedLicenseKey();
+ }),
+ onConfirm: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.updateLicense();
+ }),
+ "has-license-key": _ctx.hasLicenseKey,
+ "is-valid-consumer": _ctx.isValidConsumer,
+ "enable-update": _ctx.enableUpdate
+ }, null, 8, ["model-value", "has-license-key", "is-valid-consumer", "enable-update"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "valign",
+ id: "remove_license_key",
+ onConfirm: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.removeLicense();
+ }),
+ value: _ctx.translate('Marketplace_RemoveLicenseKey')
+ }, null, 8, ["value"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "btn valign",
+ href: _ctx.subscriptionOverviewLink
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_ViewSubscriptions')), 9, _hoisted_7), _ctx.showInstallAllPaidPlugins ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallPurchasedPlugins')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallAllPurchasedPlugins')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallThesePlugins')) + " ", 1), _hoisted_11, _hoisted_12]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.paidPluginsToInstallAtOnce, function (pluginName) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
+ key: pluginName
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(pluginName), 1);
+ }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "install",
+ type: "button",
+ "data-href": _ctx.installAllPaidPluginsLink,
+ value: _ctx.translate('Marketplace_InstallAllPurchasedPluginsAction', _ctx.paidPluginsToInstallAtOnce.length)
+ }, null, 8, _hoisted_13), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "cancel",
+ type: "button",
+ value: _ctx.translate('General_Cancel')
+ }, null, 8, _hoisted_14)])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isUpdating
+ }, null, 8, ["loading"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_15, [_ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.noLicenseKeyIntroText)
+ }, null, 8, _hoisted_17), _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DefaultLicenseKeyFields, {
+ "model-value": _ctx.licenseKey,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ _ctx.licenseKey = $event;
+
+ _ctx.updatedLicenseKey();
+ }),
+ onConfirm: _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.updateLicense();
+ }),
+ "has-license-key": _ctx.hasLicenseKey,
+ "is-valid-consumer": _ctx.isValidConsumer,
+ "enable-update": _ctx.enableUpdate
+ }, null, 8, ["model-value", "has-license-key", "is-valid-consumer", "enable-update"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isUpdating
+ }, null, 8, ["loading"])])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.noLicenseKeyIntroNoSuperUserAccessText)
+ }, null, 8, _hoisted_21)]))]))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_22, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_ConfirmRemoveLicense')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "yes",
+ type: "button",
+ value: _ctx.translate('General_Yes')
+ }, null, 8, _hoisted_23), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "no",
+ type: "button",
+ value: _ctx.translate('General_No')
+ }, null, 8, _hoisted_24)], 512)]);
+}
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=template&id=391f4838
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue?vue&type=template&id=26188382
+
+var DefaultLicenseKeyFieldsvue_type_template_id_26188382_hoisted_1 = {
+ class: "valign licenseKeyText"
+};
+function DefaultLicenseKeyFieldsvue_type_template_id_26188382_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DefaultLicenseKeyFieldsvue_type_template_id_26188382_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "license_key",
+ "full-width": true,
+ "model-value": _ctx.modelValue,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.$emit('update:modelValue', $event);
+ }),
+ placeholder: _ctx.licenseKeyPlaceholder
+ }, null, 8, ["model-value", "placeholder"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "valign",
+ onConfirm: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.$emit('confirm');
+ }),
+ disabled: !_ctx.enableUpdate,
+ value: _ctx.saveButtonText,
+ id: "submit_license_key"
+ }, null, 8, ["disabled", "value"])], 64);
+}
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue?vue&type=template&id=26188382
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var DefaultLicenseKeyFieldsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ modelValue: String,
+ isValidConsumer: Boolean,
+ hasLicenseKey: Boolean,
+ enableUpdate: Boolean
+ },
+ emits: ['update:modelValue', 'confirm'],
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ computed: {
+ licenseKeyPlaceholder: function licenseKeyPlaceholder() {
+ return this.isValidConsumer ? Object(external_CoreHome_["translate"])('Marketplace_LicenseKeyIsValidShort') : Object(external_CoreHome_["translate"])('Marketplace_LicenseKey');
+ },
+ saveButtonText: function saveButtonText() {
+ return this.hasLicenseKey ? Object(external_CoreHome_["translate"])('CoreUpdater_UpdateTitle') : Object(external_CoreHome_["translate"])('Marketplace_ActivateLicenseKey');
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue
+
+
+
+DefaultLicenseKeyFieldsvue_type_script_lang_ts.render = DefaultLicenseKeyFieldsvue_type_template_id_26188382_render
+
+/* harmony default export */ var DefaultLicenseKeyFields = (DefaultLicenseKeyFieldsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var LicenseKeyvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isValidConsumer: Boolean,
+ isSuperUser: Boolean,
+ isAutoUpdatePossible: Boolean,
+ isPluginsAdminEnabled: Boolean,
+ hasLicenseKey: Boolean,
+ paidPluginsToInstallAtOnce: {
+ type: Array,
+ required: true
+ },
+ installNonce: {
+ type: String,
+ required: true
+ }
+ },
+ components: {
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"],
+ DefaultLicenseKeyFields: DefaultLicenseKeyFields
+ },
+ data: function data() {
+ return {
+ licenseKey: '',
+ enableUpdate: false,
+ isUpdating: false
+ };
+ },
+ methods: {
+ updateLicenseKey: function updateLicenseKey(action, licenseKey, onSuccessMessage) {
+ var _this = this;
+
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'API',
+ method: "Marketplace.".concat(action),
+ format: 'JSON'
+ }, {
+ licenseKey: this.licenseKey
+ }, {
+ withTokenInUrl: true
+ }).then(function (response) {
+ _this.isUpdating = false;
+
+ if (response && response.value) {
+ external_CoreHome_["NotificationsStore"].show({
+ message: onSuccessMessage,
+ context: 'success',
+ type: 'transient'
+ });
+ external_CoreHome_["Matomo"].helper.redirect();
+ }
+ }, function () {
+ _this.isUpdating = false;
+ });
+ },
+ removeLicense: function removeLicense() {
+ var _this2 = this;
+
+ external_CoreHome_["Matomo"].helper.modalConfirm(this.$refs.confirmRemoveLicense, {
+ yes: function yes() {
+ _this2.enableUpdate = false;
+ _this2.isUpdating = true;
+
+ _this2.updateLicenseKey('deleteLicenseKey', '', Object(external_CoreHome_["translate"])('Marketplace_LicenseKeyDeletedSuccess'));
+ }
+ });
+ },
+ updatedLicenseKey: function updatedLicenseKey() {
+ this.enableUpdate = !!this.licenseKey;
+ },
+ updateLicense: function updateLicense() {
+ this.enableUpdate = false;
+ this.isUpdating = true;
+ this.updateLicenseKey('saveLicenseKey', this.licenseKey, Object(external_CoreHome_["translate"])('Marketplace_LicenseKeyActivatedSuccess'));
+ }
+ },
+ computed: {
+ subscriptionOverviewLink: function subscriptionOverviewLink() {
+ return "?".concat(external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ action: 'subscriptionOverview'
+ })));
+ },
+ noLicenseKeyIntroText: function noLicenseKeyIntroText() {
+ return Object(external_CoreHome_["translate"])('Marketplace_PaidPluginsNoLicenseKeyIntro', '<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">', '</a>');
+ },
+ noLicenseKeyIntroNoSuperUserAccessText: function noLicenseKeyIntroNoSuperUserAccessText() {
+ return Object(external_CoreHome_["translate"])('Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess', '<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">', '</a>');
+ },
+ installAllPaidPluginsLink: function installAllPaidPluginsLink() {
+ return "?".concat(external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ action: 'installAllPaidPlugins',
+ nonce: this.installNonce
+ })));
+ },
+ showInstallAllPaidPlugins: function showInstallAllPaidPlugins() {
+ return this.isAutoUpdatePossible && this.isPluginsAdminEnabled && this.paidPluginsToInstallAtOnce.length;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue
+
+
+
+LicenseKeyvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var LicenseKey = (LicenseKeyvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=Marketplace.umd.js.map \ No newline at end of file
diff --git a/plugins/Marketplace/vue/dist/Marketplace.umd.min.js b/plugins/Marketplace/vue/dist/Marketplace.umd.min.js
new file mode 100644
index 0000000000..52c95a96e3
--- /dev/null
+++ b/plugins/Marketplace/vue/dist/Marketplace.umd.min.js
@@ -0,0 +1,8 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["Marketplace"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Marketplace"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(l){if(t[l])return t[l].exports;var a=t[l]={i:l,l:!1,exports:{}};return e[l].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,l){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:l})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var l=Object.create(null);if(n.r(l),Object.defineProperty(l,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(l,a,function(t){return e[t]}.bind(null,a));return l},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Marketplace/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"LicenseKey",(function(){return I})),"undefined"!==typeof window){var l=window.document.currentScript,a=l&&l.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var i=n("8bbf"),o={class:"marketplace-max-width"},r={class:"marketplace-paid-intro"},c={key:0},s={key:0},u=Object(i["createElementVNode"])("br",null,null,-1),d={class:"licenseToolbar valign-wrapper"},p=["href"],m={key:0},b={href:"javascript:;",class:"btn installAllPaidPlugins valign"},f={class:"ui-confirm",id:"installAllPaidPluginsAtOnce"},v=Object(i["createElementVNode"])("br",null,null,-1),O=Object(i["createElementVNode"])("br",null,null,-1),y=["data-href","value"],j=["value"],g={key:1},h={key:0},k=["innerHTML"],V=Object(i["createElementVNode"])("br",null,null,-1),P={class:"licenseToolbar valign-wrapper"},L={key:1},N=["innerHTML"],K={class:"ui-confirm",id:"confirmRemoveLicense",ref:"confirmRemoveLicense"},B=["value"],E=["value"];function A(e,t,n,l,a,A){var M=Object(i["resolveComponent"])("DefaultLicenseKeyFields"),S=Object(i["resolveComponent"])("SaveButton"),U=Object(i["resolveComponent"])("ActivityIndicator");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",o,[Object(i["createElementVNode"])("div",r,[e.isValidConsumer?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",c,[e.isSuperUser?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",s,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("Marketplace_PaidPluginsWithLicenseKeyIntro",""))+" ",1),u,Object(i["createElementVNode"])("div",d,[Object(i["createVNode"])(M,{"model-value":e.licenseKey,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.licenseKey=t,e.updatedLicenseKey()}),onConfirm:t[1]||(t[1]=function(t){return e.updateLicense()}),"has-license-key":e.hasLicenseKey,"is-valid-consumer":e.isValidConsumer,"enable-update":e.enableUpdate},null,8,["model-value","has-license-key","is-valid-consumer","enable-update"]),Object(i["createVNode"])(S,{class:"valign",id:"remove_license_key",onConfirm:t[2]||(t[2]=function(t){return e.removeLicense()}),value:e.translate("Marketplace_RemoveLicenseKey")},null,8,["value"]),Object(i["createElementVNode"])("a",{class:"btn valign",href:e.subscriptionOverviewLink},Object(i["toDisplayString"])(e.translate("Marketplace_ViewSubscriptions")),9,p),e.showInstallAllPaidPlugins?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",m,[Object(i["createElementVNode"])("a",b,Object(i["toDisplayString"])(e.translate("Marketplace_InstallPurchasedPlugins")),1),Object(i["createElementVNode"])("div",f,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("Marketplace_InstallAllPurchasedPlugins")),1),Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("Marketplace_InstallThesePlugins"))+" ",1),v,O]),Object(i["createElementVNode"])("ul",null,[(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.paidPluginsToInstallAtOnce,(function(e){return Object(i["openBlock"])(),Object(i["createElementBlock"])("li",{key:e},Object(i["toDisplayString"])(e),1)})),128))]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("input",{role:"install",type:"button","data-href":e.installAllPaidPluginsLink,value:e.translate("Marketplace_InstallAllPurchasedPluginsAction",e.paidPluginsToInstallAtOnce.length)},null,8,y),Object(i["createElementVNode"])("input",{role:"cancel",type:"button",value:e.translate("General_Cancel")},null,8,j)])])])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(U,{loading:e.isUpdating},null,8,["loading"])])):Object(i["createCommentVNode"])("",!0)])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",g,[e.isSuperUser?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",h,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.noLicenseKeyIntroText)},null,8,k),V,Object(i["createElementVNode"])("div",P,[Object(i["createVNode"])(M,{"model-value":e.licenseKey,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.licenseKey=t,e.updatedLicenseKey()}),onConfirm:t[4]||(t[4]=function(t){return e.updateLicense()}),"has-license-key":e.hasLicenseKey,"is-valid-consumer":e.isValidConsumer,"enable-update":e.enableUpdate},null,8,["model-value","has-license-key","is-valid-consumer","enable-update"])]),Object(i["createVNode"])(U,{loading:e.isUpdating},null,8,["loading"])])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.noLicenseKeyIntroNoSuperUserAccessText)},null,8,N)]))]))]),Object(i["createElementVNode"])("div",K,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("Marketplace_ConfirmRemoveLicense")),1),Object(i["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,B),Object(i["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,E)],512)])}var M=n("19dc"),S=n("a5a2"),U={class:"valign licenseKeyText"};function _(e,t,n,l,a,o){var r=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton");return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("div",U,[Object(i["createVNode"])(r,{uicontrol:"text",name:"license_key","full-width":!0,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t)}),placeholder:e.licenseKeyPlaceholder},null,8,["model-value","placeholder"])]),Object(i["createVNode"])(c,{class:"valign",onConfirm:t[1]||(t[1]=function(t){return e.$emit("confirm")}),disabled:!e.enableUpdate,value:e.saveButtonText,id:"submit_license_key"},null,8,["disabled","value"])],64)}var C=Object(i["defineComponent"])({props:{modelValue:String,isValidConsumer:Boolean,hasLicenseKey:Boolean,enableUpdate:Boolean},emits:["update:modelValue","confirm"],components:{Field:S["Field"],SaveButton:S["SaveButton"]},computed:{licenseKeyPlaceholder:function(){return this.isValidConsumer?Object(M["translate"])("Marketplace_LicenseKeyIsValidShort"):Object(M["translate"])("Marketplace_LicenseKey")},saveButtonText:function(){return this.hasLicenseKey?Object(M["translate"])("CoreUpdater_UpdateTitle"):Object(M["translate"])("Marketplace_ActivateLicenseKey")}}});C.render=_;var x=C,T=Object(i["defineComponent"])({props:{isValidConsumer:Boolean,isSuperUser:Boolean,isAutoUpdatePossible:Boolean,isPluginsAdminEnabled:Boolean,hasLicenseKey:Boolean,paidPluginsToInstallAtOnce:{type:Array,required:!0},installNonce:{type:String,required:!0}},components:{SaveButton:S["SaveButton"],ActivityIndicator:M["ActivityIndicator"],DefaultLicenseKeyFields:x},data:function(){return{licenseKey:"",enableUpdate:!1,isUpdating:!1}},methods:{updateLicenseKey:function(e,t,n){var l=this;M["AjaxHelper"].post({module:"API",method:"Marketplace.".concat(e),format:"JSON"},{licenseKey:this.licenseKey},{withTokenInUrl:!0}).then((function(e){l.isUpdating=!1,e&&e.value&&(M["NotificationsStore"].show({message:n,context:"success",type:"transient"}),M["Matomo"].helper.redirect())}),(function(){l.isUpdating=!1}))},removeLicense:function(){var e=this;M["Matomo"].helper.modalConfirm(this.$refs.confirmRemoveLicense,{yes:function(){e.enableUpdate=!1,e.isUpdating=!0,e.updateLicenseKey("deleteLicenseKey","",Object(M["translate"])("Marketplace_LicenseKeyDeletedSuccess"))}})},updatedLicenseKey:function(){this.enableUpdate=!!this.licenseKey},updateLicense:function(){this.enableUpdate=!1,this.isUpdating=!0,this.updateLicenseKey("saveLicenseKey",this.licenseKey,Object(M["translate"])("Marketplace_LicenseKeyActivatedSuccess"))}},computed:{subscriptionOverviewLink:function(){return"?".concat(M["MatomoUrl"].stringify(Object.assign(Object.assign({},M["MatomoUrl"].urlParsed.value),{},{action:"subscriptionOverview"})))},noLicenseKeyIntroText:function(){return Object(M["translate"])("Marketplace_PaidPluginsNoLicenseKeyIntro",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',"</a>")},noLicenseKeyIntroNoSuperUserAccessText:function(){return Object(M["translate"])("Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',"</a>")},installAllPaidPluginsLink:function(){return"?".concat(M["MatomoUrl"].stringify(Object.assign(Object.assign({},M["MatomoUrl"].urlParsed.value),{},{action:"installAllPaidPlugins",nonce:this.installNonce})))},showInstallAllPaidPlugins:function(){return this.isAutoUpdatePossible&&this.isPluginsAdminEnabled&&this.paidPluginsToInstallAtOnce.length}}});T.render=A;var I=T;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */}})}));
+//# sourceMappingURL=Marketplace.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Marketplace/vue/dist/umd.metadata.json b/plugins/Marketplace/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/Marketplace/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue b/plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue
new file mode 100644
index 0000000000..6ac991a41f
--- /dev/null
+++ b/plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue
@@ -0,0 +1,57 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="valign licenseKeyText">
+ <Field
+ uicontrol="text"
+ name="license_key"
+ :full-width="true"
+ :model-value="modelValue"
+ @update:model-value="$emit('update:modelValue', $event)"
+ :placeholder="licenseKeyPlaceholder"
+ ></Field>
+ </div>
+ <SaveButton
+ class="valign"
+ @confirm="$emit('confirm')"
+ :disabled="!enableUpdate"
+ :value="saveButtonText"
+ id="submit_license_key"
+ />
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { translate } from 'CoreHome';
+import { Field, SaveButton } from 'CorePluginsAdmin';
+
+export default defineComponent({
+ props: {
+ modelValue: String,
+ isValidConsumer: Boolean,
+ hasLicenseKey: Boolean,
+ enableUpdate: Boolean,
+ },
+ emits: ['update:modelValue', 'confirm'],
+ components: {
+ Field,
+ SaveButton,
+ },
+ computed: {
+ licenseKeyPlaceholder() {
+ return this.isValidConsumer
+ ? translate('Marketplace_LicenseKeyIsValidShort')
+ : translate('Marketplace_LicenseKey');
+ },
+ saveButtonText() {
+ return this.hasLicenseKey
+ ? translate('CoreUpdater_UpdateTitle')
+ : translate('Marketplace_ActivateLicenseKey');
+ },
+ },
+});
+</script>
diff --git a/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue b/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue
new file mode 100644
index 0000000000..637b248e2b
--- /dev/null
+++ b/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue
@@ -0,0 +1,244 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="marketplace-max-width">
+ <div class="marketplace-paid-intro">
+ <div v-if="isValidConsumer">
+ <div v-if="isSuperUser">
+ {{ translate('Marketplace_PaidPluginsWithLicenseKeyIntro', '') }}
+ <br />
+ <div class="licenseToolbar valign-wrapper">
+ <DefaultLicenseKeyFields
+ :model-value="licenseKey"
+ @update:model-value="licenseKey = $event; updatedLicenseKey()"
+ @confirm="updateLicense()"
+ :has-license-key="hasLicenseKey"
+ :is-valid-consumer="isValidConsumer"
+ :enable-update="enableUpdate"
+ />
+ <SaveButton
+ class="valign"
+ id="remove_license_key"
+ @confirm="removeLicense()"
+ :value="translate('Marketplace_RemoveLicenseKey')"
+ />
+ <a
+ class="btn valign"
+ :href="subscriptionOverviewLink"
+ >
+ {{ translate('Marketplace_ViewSubscriptions') }}
+ </a>
+ <div v-if="showInstallAllPaidPlugins">
+ <a
+ href="javascript:;"
+ class="btn installAllPaidPlugins valign"
+ >
+ {{ translate('Marketplace_InstallPurchasedPlugins') }}
+ </a>
+ <div
+ class="ui-confirm"
+ id="installAllPaidPluginsAtOnce"
+ >
+ <h2>{{ translate('Marketplace_InstallAllPurchasedPlugins') }}</h2>
+ <p>
+ {{ translate('Marketplace_InstallThesePlugins') }}
+ <br /><br />
+ </p>
+ <ul>
+ <li v-for="pluginName in paidPluginsToInstallAtOnce" :key="pluginName">
+ {{ pluginName }}
+ </li>
+ </ul>
+ <p>
+ <input
+ role="install"
+ type="button"
+ :data-href="installAllPaidPluginsLink"
+ :value="translate(
+ 'Marketplace_InstallAllPurchasedPluginsAction',
+ paidPluginsToInstallAtOnce.length,
+ )"
+ />
+ <input
+ role="cancel"
+ type="button"
+ :value="translate('General_Cancel')"
+ />
+ </p>
+ </div>
+ </div>
+ </div>
+ <ActivityIndicator :loading="isUpdating" />
+ </div>
+ </div>
+ <div v-else>
+ <div v-if="isSuperUser">
+ <span v-html="$sanitize(noLicenseKeyIntroText)"></span>
+ <br />
+ <div class="licenseToolbar valign-wrapper">
+ <DefaultLicenseKeyFields
+ :model-value="licenseKey"
+ @update:model-value="licenseKey = $event; updatedLicenseKey()"
+ @confirm="updateLicense()"
+ :has-license-key="hasLicenseKey"
+ :is-valid-consumer="isValidConsumer"
+ :enable-update="enableUpdate"
+ />
+ </div>
+ <ActivityIndicator :loading="isUpdating" />
+ </div>
+ <div v-else>
+ <span v-html="$sanitize(noLicenseKeyIntroNoSuperUserAccessText)"></span>
+ </div>
+ </div>
+ </div>
+
+ <div class="ui-confirm" id="confirmRemoveLicense" ref="confirmRemoveLicense">
+ <h2>{{ translate('Marketplace_ConfirmRemoveLicense') }}</h2>
+ <input role="yes" type="button" :value="translate('General_Yes')"/>
+ <input role="no" type="button" :value="translate('General_No')"/>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ translate,
+ AjaxHelper,
+ Matomo,
+ ActivityIndicator,
+ MatomoUrl,
+ NotificationsStore,
+} from 'CoreHome';
+import { SaveButton } from 'CorePluginsAdmin';
+import DefaultLicenseKeyFields from './DefaultLicenseKeyFields.vue';
+
+interface LicenseKeyState {
+ licenseKey: string;
+ enableUpdate: boolean;
+ isUpdating: boolean;
+}
+
+export default defineComponent({
+ props: {
+ isValidConsumer: Boolean,
+ isSuperUser: Boolean,
+ isAutoUpdatePossible: Boolean,
+ isPluginsAdminEnabled: Boolean,
+ hasLicenseKey: Boolean,
+ paidPluginsToInstallAtOnce: {
+ type: Array,
+ required: true,
+ },
+ installNonce: {
+ type: String,
+ required: true,
+ },
+ },
+ components: {
+ SaveButton,
+ ActivityIndicator,
+ DefaultLicenseKeyFields,
+ },
+ data(): LicenseKeyState {
+ return {
+ licenseKey: '',
+ enableUpdate: false,
+ isUpdating: false,
+ };
+ },
+ methods: {
+ updateLicenseKey(action: string, licenseKey: string, onSuccessMessage: string) {
+ AjaxHelper.post(
+ {
+ module: 'API',
+ method: `Marketplace.${action}`,
+ format: 'JSON',
+ },
+ {
+ licenseKey: this.licenseKey,
+ },
+ { withTokenInUrl: true },
+ ).then((response) => {
+ this.isUpdating = false;
+
+ if (response && response.value) {
+ NotificationsStore.show({
+ message: onSuccessMessage,
+ context: 'success',
+ type: 'transient',
+ });
+ Matomo.helper.redirect();
+ }
+ }, () => {
+ this.isUpdating = false;
+ });
+ },
+ removeLicense() {
+ Matomo.helper.modalConfirm(this.$refs.confirmRemoveLicense as HTMLElement, {
+ yes: () => {
+ this.enableUpdate = false;
+ this.isUpdating = true;
+ this.updateLicenseKey(
+ 'deleteLicenseKey',
+ '',
+ translate('Marketplace_LicenseKeyDeletedSuccess'),
+ );
+ },
+ });
+ },
+ updatedLicenseKey() {
+ this.enableUpdate = !!this.licenseKey;
+ },
+ updateLicense() {
+ this.enableUpdate = false;
+ this.isUpdating = true;
+
+ this.updateLicenseKey(
+ 'saveLicenseKey',
+ this.licenseKey,
+ translate('Marketplace_LicenseKeyActivatedSuccess'),
+ );
+ },
+ },
+ computed: {
+ subscriptionOverviewLink() {
+ return `?${MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ action: 'subscriptionOverview',
+ })}`;
+ },
+ noLicenseKeyIntroText() {
+ return translate(
+ 'Marketplace_PaidPluginsNoLicenseKeyIntro',
+ '<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',
+ '</a>',
+ );
+ },
+ noLicenseKeyIntroNoSuperUserAccessText() {
+ return translate(
+ 'Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess',
+ '<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',
+ '</a>',
+ );
+ },
+ installAllPaidPluginsLink() {
+ return `?${MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ action: 'installAllPaidPlugins',
+ nonce: this.installNonce,
+ })}`;
+ },
+ showInstallAllPaidPlugins() {
+ return this.isAutoUpdatePossible
+ && this.isPluginsAdminEnabled
+ && this.paidPluginsToInstallAtOnce.length;
+ },
+ },
+});
+</script>
diff --git a/plugins/Marketplace/vue/src/index.ts b/plugins/Marketplace/vue/src/index.ts
new file mode 100644
index 0000000000..0eb27f81ef
--- /dev/null
+++ b/plugins/Marketplace/vue/src/index.ts
@@ -0,0 +1,8 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+export { default as LicenseKey } from './LicenseKey/LicenseKey.vue';
diff --git a/plugins/MobileMessaging/API.php b/plugins/MobileMessaging/API.php
index 808b8f370a..b1ecb07102 100644
--- a/plugins/MobileMessaging/API.php
+++ b/plugins/MobileMessaging/API.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\MobileMessaging;
use Piwik\Common;
-use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\MobileMessaging\SMSProvider;
diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php
index 3dc8f3b72d..240ab55fb9 100644
--- a/plugins/MobileMessaging/MobileMessaging.php
+++ b/plugins/MobileMessaging/MobileMessaging.php
@@ -12,7 +12,6 @@ use Piwik\Option;
use Piwik\Period;
use Piwik\Piwik;
use Piwik\Plugins\API\API as APIPlugins;
-use Piwik\Plugins\MobileMessaging\API as APIMobileMessaging;
use Piwik\Plugins\MobileMessaging\ReportRenderer\ReportRendererException;
use Piwik\Plugins\MobileMessaging\ReportRenderer\Sms;
use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
diff --git a/plugins/MobileMessaging/SMSProvider.php b/plugins/MobileMessaging/SMSProvider.php
index fda7dcc2ec..48294bb123 100644
--- a/plugins/MobileMessaging/SMSProvider.php
+++ b/plugins/MobileMessaging/SMSProvider.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\MobileMessaging;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Plugin;
use Piwik\Piwik;
diff --git a/plugins/Monolog/tests/Integration/LogTest.php b/plugins/Monolog/tests/Integration/LogTest.php
index 6353a0ed06..4bc2e72f75 100644
--- a/plugins/Monolog/tests/Integration/LogTest.php
+++ b/plugins/Monolog/tests/Integration/LogTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Monolog\tests\Integration;
use Exception;
use Piwik\Application\Environment;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Db;
use Piwik\Log;
@@ -28,7 +27,7 @@ class LogTest extends IntegrationTestCase
const STRING_MESSAGE_FORMAT = '[%tag%] %message%';
const STRING_MESSAGE_FORMAT_SPRINTF = "[%s] [%s] %s";
- public static $expectedExceptionOutput = '[Monolog] [%s] LogTest.php(130): dummy error message
+ public static $expectedExceptionOutput = '[Monolog] [%s] LogTest.php(129): dummy error message
dummy backtrace [Query: , CLI mode: 1]';
public static $expectedErrorOutput = '[Monolog] [%s] dummyerrorfile.php(145): dummy error message
diff --git a/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php b/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php
index eb427bf01c..b5efb73d7d 100644
--- a/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php
+++ b/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php
@@ -11,9 +11,7 @@ namespace Piwik\Plugins\Monolog\tests\Unit\Processor;
use PHPUnit\Runner\Version;
use Piwik\Access;
use Piwik\Common;
-use Piwik\Db;
use Piwik\Log;
-use Piwik\Piwik;
use Piwik\Plugins\Monolog\Processor\ExceptionToTextProcessor;
/**
@@ -72,7 +70,7 @@ class ExceptionToTextProcessorTest extends \PHPUnit\Framework\TestCase
$result = $processor($record);
$expected = array(
- 'message' => __FILE__ . "(65): [message and stack trace] [Query: , CLI mode: 1]",
+ 'message' => __FILE__ . "(63): [message and stack trace] [Query: , CLI mode: 1]",
'context' => array(
'exception' => $exception,
),
diff --git a/plugins/Morpheus/Controller.php b/plugins/Morpheus/Controller.php
index 74eee29d3f..92717e6042 100644
--- a/plugins/Morpheus/Controller.php
+++ b/plugins/Morpheus/Controller.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Morpheus;
use Piwik\Development;
use Piwik\Piwik;
-use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
{
diff --git a/plugins/Morpheus/javascripts/piwikHelper.js b/plugins/Morpheus/javascripts/piwikHelper.js
index dfcdb12b84..165a24d7b6 100644
--- a/plugins/Morpheus/javascripts/piwikHelper.js
+++ b/plugins/Morpheus/javascripts/piwikHelper.js
@@ -13,6 +13,8 @@ function _pk_translate(translationStringId, values) {
if (typeof values != 'undefined' && values && values.length) {
values.unshift(translation);
return sprintf.apply(null, values);
+ } else {
+ translation = translation.replaceAll('%%', '%');
}
return translation;
@@ -152,20 +154,28 @@ window.piwikHelper = {
// initial call for 'body' later in this file
compileVueEntryComponents: function (selector) {
+ function toCamelCase(arg) {
+ return arg[0] + arg.substring(1)
+ .replace(/-[a-z]/g, function (s) { return s[1].toUpperCase(); });
+ }
+
function toKebabCase(arg) {
- return arg.substring(0, 1).toLowerCase() + arg.substring(1)
- .replace(/[A-Z]/g, function (s) { return '-' + s.toLowerCase(); });
+ return arg[0].toLowerCase() + arg.substring(1)
+ .replace(/[A-Z]/g, function (s) { return '-' + s[0].toLowerCase(); });
}
- $('[vue-entry]', selector).each(function () {
+ $('[vue-entry]', selector).add($(selector).filter('[vue-entry]')).each(function () {
var entry = $(this).attr('vue-entry');
+ var componentsToRegister = ($(this).attr('vue-components') || '').split(/\s+/).filter(function (s) {
+ return !!s.length;
+ });
var parts = entry.split('.');
if (parts.length !== 2) {
throw new Error('Expects vue-entry to have format Plugin.Component, where Component is exported Vue component. Got: ' + entry);
}
- var createVNode = Vue.createVNode;
+ var useExternalPluginComponent = CoreHome.useExternalPluginComponent;
var createVueApp = CoreHome.createVueApp;
var plugin = window[parts[0]];
if (!plugin) {
@@ -177,12 +187,17 @@ window.piwikHelper = {
throw new Error('Unknown component in vue-entry: ' + entry);
}
+ var paramsStr = '';
+
var componentParams = {};
$.each(this.attributes, function () {
if (this.name === 'vue-entry') {
return;
}
+ var camelName = toCamelCase(this.name);
+ paramsStr += ':' + this.name + '=' + JSON.stringify(camelName) + ' ';
+
var value = this.value;
try {
value = JSON.parse(this.value);
@@ -190,14 +205,33 @@ window.piwikHelper = {
// pass
}
- componentParams[toKebabCase(this.name)] = value;
+ componentParams[camelName] = value;
});
+ // NOTE: we could just do createVueApp(component, componentParams), but Vue will not allow
+ // slots to be in the vue-entry element this way. So instead, we create a quick
+ // template that references the root component and wraps the vue-entry component's html.
+ // this allows using slots in twig.
var app = createVueApp({
- render: function () {
- return createVNode(component, componentParams);
- },
+ template: '<root ' + paramsStr + '>' + this.innerHTML + '</root>',
+ data: function () {
+ return componentParams;
+ }
});
+ app.component('root', component);
+
+ componentsToRegister.forEach(function (componentRef) {
+ var parts = componentRef.split('.');
+ var pluginName = parts[0];
+ var componentName = parts[1];
+
+ var component = useExternalPluginComponent(pluginName, componentName);
+
+ // the component is made available via kebab case, since casing is lost in HTML,
+ // and tag names will appear all lower case when vue processes them
+ app.component(toKebabCase(componentName), component);
+ });
+
app.mount(this);
this.addEventListener('matomoVueDestroy', function () {
@@ -347,7 +381,7 @@ window.piwikHelper = {
// skip this button if it's part of another modal, the current modal can launch
// (which is true if there are more than one parent elements contained in domElem,
// w/ css class ui-confirm)
- const uiConfirm = $button.parents('.ui-confirm,[ui-confirm]').filter(function () {
+ var uiConfirm = $button.parents('.ui-confirm,[ui-confirm]').filter(function () {
return domElem[0] === this || $.contains(domElem[0], this);
});
if (uiConfirm.length > 1) {
@@ -381,7 +415,6 @@ window.piwikHelper = {
})
}
-
$footer.append(button);
});
diff --git a/plugins/Morpheus/plugin.json b/plugins/Morpheus/plugin.json
index 61f16450bb..0ca3f628c6 100644
--- a/plugins/Morpheus/plugin.json
+++ b/plugins/Morpheus/plugin.json
@@ -1,6 +1,6 @@
{
"name": "Morpheus",
- "description": "Morpheus is the default theme of Matomo 3 designed to help you focus on your analytics. In Greek mythology, Morpheus is the God of dreams. In the Matrix movie, Morpheus is the leader of the rebel forces who fight to awaken humans from a dreamlike reality called The Matrix. ",
+ "description": "Morpheus is the default theme of Matomo designed to help you focus on your analytics. In Greek mythology, Morpheus is the God of dreams. In the Matrix movie, Morpheus is the leader of the rebel forces who fight to awaken humans from a dreamlike reality called The Matrix. ",
"theme": true,
"stylesheet": "stylesheets/main.less"
-} \ No newline at end of file
+}
diff --git a/plugins/MultiSites/Controller.php b/plugins/MultiSites/Controller.php
index 715c59a732..bc66edd022 100644
--- a/plugins/MultiSites/Controller.php
+++ b/plugins/MultiSites/Controller.php
@@ -11,9 +11,6 @@ namespace Piwik\Plugins\MultiSites;
use Piwik\Common;
use Piwik\Config;
use Piwik\Date;
-use Piwik\Period;
-use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\Piwik;
use Piwik\Translation\Translator;
use Piwik\View;
diff --git a/plugins/MultiSites/Dashboard.php b/plugins/MultiSites/Dashboard.php
index 1a64f26edf..614a7c7e92 100644
--- a/plugins/MultiSites/Dashboard.php
+++ b/plugins/MultiSites/Dashboard.php
@@ -11,15 +11,10 @@ namespace Piwik\Plugins\MultiSites;
use Piwik\API\DataTablePostProcessor;
use Piwik\API\Request;
use Piwik\API\ResponseBuilder;
-use Piwik\Config;
-use Piwik\Metrics\Formatter;
use Piwik\NumberFormatter;
-use Piwik\Period;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\DataTable\Row\DataTableSummaryRow;
use Piwik\Site;
-use Piwik\View;
/**
* Fetches and formats the response of `MultiSites.getAll` in a way that it can be used by the All Websites AngularJS
diff --git a/plugins/MultiSites/MultiSites.php b/plugins/MultiSites/MultiSites.php
index 27bf465763..7b54b59178 100644
--- a/plugins/MultiSites/MultiSites.php
+++ b/plugins/MultiSites/MultiSites.php
@@ -19,7 +19,6 @@ class MultiSites extends \Piwik\Plugin
{
return array(
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations',
'API.getPagesComparisonsDisabledFor' => 'getPagesComparisonsDisabledFor',
@@ -80,17 +79,8 @@ class MultiSites extends \Piwik\Plugin
$translations[] = 'MultiSites_EvolutionComparisonYear';
}
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard-model.service.js";
- $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard.controller.js";
- $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard.directive.js";
- $jsFiles[] = "plugins/MultiSites/angularjs/site/site.controller.js";
- $jsFiles[] = "plugins/MultiSites/angularjs/site/site.directive.js";
- }
-
public function getStylesheetFiles(&$stylesheets)
{
- $stylesheets[] = "plugins/MultiSites/angularjs/dashboard/dashboard.directive.less";
+ $stylesheets[] = "plugins/MultiSites/vue/src/Dashboard/Dashboard.less";
}
}
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard-model.service.js b/plugins/MultiSites/angularjs/dashboard/dashboard-model.service.js
deleted file mode 100644
index 32c2f404ca..0000000000
--- a/plugins/MultiSites/angularjs/dashboard/dashboard-model.service.js
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- * Model for Multisites Dashboard aka All Websites Dashboard.
- */
-(function () {
- angular.module('piwikApp').factory('multisitesDashboardModel', multisitesDashboardModel);
-
- multisitesDashboardModel.$inject = ['piwikApi', '$filter', '$timeout'];
-
- function multisitesDashboardModel(piwikApi, $filter, $timeout) {
-
- var refreshPromise = null;
-
- // those sites are going to be displayed
- var model = {
- sites : [],
- isLoading : false,
- pageSize : 25,
- currentPage : 0,
- totalVisits : '?',
- totalPageviews : '?',
- totalActions : '?',
- totalRevenue : '?',
- searchTerm : '',
- lastVisits : '?',
- lastVisitsDate : '?',
- numberOfSites : 0,
- loadingMessage: _pk_translate('MultiSites_LoadingWebsites'),
- updateWebsitesList: updateWebsitesList,
- getNumberOfFilteredSites: getNumberOfFilteredSites,
- getNumberOfPages: getNumberOfPages,
- getPaginationLowerBound: getPaginationLowerBound,
- getPaginationUpperBound: getPaginationUpperBound,
- previousPage: previousPage,
- nextPage: nextPage,
- searchSite: searchSite,
- sortBy: sortBy,
- reverse: true,
- sortColumn: 'nb_visits',
- fetchAllSites: fetchAllSites,
- refreshInterval: 0
- };
-
- return model;
-
- function cancelRefereshInterval()
- {
- if (refreshPromise) {
- $timeout.cancel(refreshPromise);
- refreshPromise = null;
- };
- }
-
- function onError () {
- model.errorLoadingSites = true;
- model.sites = [];
- }
-
- function updateWebsitesList(report) {
- if (!report) {
- onError();
- return;
- }
-
- var allSites = report.sites;
- angular.forEach(allSites, function (site, index) {
-
- if (site.hasOwnProperty('ratio') && site.ratio != 1) {
- var percent = NumberFormatter.formatPercent(Math.round((site.ratio * 100)));
- var metricName = null;
- var previousTotal = 0;
- var currentTotal = 0;
- var evolution = 0;
- var previousTotalAdjusted = 0;
- if (model.sortColumn == 'nb_visits' || model.sortColumn == 'visits_evolution') {
- previousTotal = NumberFormatter.formatNumber(site.previous_nb_visits);
- currentTotal = NumberFormatter.formatNumber(site.nb_visits);
- evolution = NumberFormatter.formatPercent(site.visits_evolution);
- metricName = _pk_translate("General_ColumnNbVisits");
- previousTotalAdjusted = NumberFormatter.formatNumber(Math.round(site.previous_nb_visits * site.ratio));
- }
- if (model.sortColumn == 'pageviews_evolution') {
- previousTotal = site.previous_Actions_nb_pageviews;
- currentTotal = site.nb_pageviews;
- evolution = NumberFormatter.formatPercent(site.pageviews_evolution);
- metricName = _pk_translate("General_ColumnPageviews");
- previousTotalAdjusted = NumberFormatter.formatNumber(Math.round(site.previous_Actions_nb_pageviews * site.ratio));
- }
- if (model.sortColumn == 'revenue_evolution') {
- previousTotal = NumberFormatter.formatCurrency(site.previous_Goal_revenue, site.currencySymbol);
- currentTotal = NumberFormatter.formatCurrency(site.revenue, site.currencySymbol);
- evolution = NumberFormatter.formatPercent(site.revenue_evolution);
- metricName = _pk_translate("General_ColumnRevenue");
- previousTotalAdjusted = NumberFormatter.formatCurrency(Math.round(site.previous_Goal_revenue * site.ratio), site.currencySymbol);
- }
-
- if (metricName) {
- site.tooltip = _pk_translate("MultiSites_EvolutionComparisonIncomplete", [percent]) + "\n";
- site.tooltip += _pk_translate("MultiSites_EvolutionComparisonProportional", [percent, previousTotalAdjusted, metricName, previousTotal]) + "\n";
-
- switch (site.periodName) {
- case 'day':
- site.tooltip += _pk_translate("MultiSites_EvolutionComparisonDay", [currentTotal, metricName, previousTotalAdjusted, site.previousRange, evolution]);
- break;
- case 'week':
- site.tooltip += _pk_translate("MultiSites_EvolutionComparisonWeek", [currentTotal, metricName, previousTotalAdjusted, site.previousRange, evolution]);
- break;
- case 'month':
- site.tooltip += _pk_translate("MultiSites_EvolutionComparisonMonth", [currentTotal, metricName, previousTotalAdjusted, site.previousRange, evolution]);
- break;
- case 'year':
- site.tooltip += _pk_translate("MultiSites_EvolutionComparisonYear", [currentTotal, metricName, previousTotalAdjusted, site.previousRange, evolution]);
- break;
- }
- }
-
- }
- });
-
- model.totalVisits = report.totals.nb_visits;
- model.totalPageviews = report.totals.nb_pageviews;
- model.totalActions = report.totals.nb_actions;
- model.totalRevenue = report.totals.revenue;
- model.lastVisits = report.totals.nb_visits_lastdate;
- model.sites = allSites;
- model.numberOfSites = report.numSites;
- model.lastVisitsDate = report.lastDate;
- }
-
- function getNumberOfFilteredSites () {
- return model.numberOfSites;
- }
-
- function getNumberOfPages() {
- return Math.ceil(getNumberOfFilteredSites() / model.pageSize - 1);
- }
-
- function getCurrentPagingOffset() {
- return Math.ceil(model.currentPage * model.pageSize);
- }
-
- function getPaginationLowerBound() {
- return getCurrentPagingOffset() + 1;
- }
-
- function getPaginationUpperBound() {
- var end = getCurrentPagingOffset() + parseInt(model.pageSize, 10);
- var max = getNumberOfFilteredSites();
- if (end > max) {
- end = max;
- }
- return parseInt(end, 10);
- }
-
- function sortBy(metric) {
- if (model.sortColumn == metric) {
- model.reverse = !model.reverse;
- }
-
- model.sortColumn = metric;
- fetchAllSites();
- }
-
- function previousPage() {
- model.currentPage = model.currentPage - 1;
- fetchAllSites();
- }
-
- function nextPage() {
- model.currentPage = model.currentPage + 1;
- fetchAllSites();
- }
-
- function searchSite (term) {
- model.searchTerm = term;
- model.currentPage = 0;
- fetchAllSites();
- }
-
- function fetchAllSites() {
-
- if (model.isLoading) {
- piwikApi.abort();
- cancelRefereshInterval();
- }
-
- model.isLoading = true;
- model.errorLoadingSites = false;
-
- var params = {
- module: 'MultiSites',
- action: 'getAllWithGroups',
- hideMetricsDoc: '1',
- filter_sort_order: 'asc',
- filter_limit: model.pageSize,
- filter_offset: getCurrentPagingOffset(),
- showColumns: 'label,nb_visits,nb_pageviews,visits_evolution,visits_evolution_trend,pageviews_evolution,pageviews_evolution_trend,revenue_evolution,revenue_evolution_trend,nb_actions,revenue'
- };
-
- if (model.searchTerm) {
- params.pattern = model.searchTerm;
- }
-
- if (model.sortColumn) {
- params.filter_sort_column = model.sortColumn;
- }
-
- if (model.reverse) {
- params.filter_sort_order = 'desc';
- }
-
- return piwikApi.fetch(params).then(function (response) {
- updateWebsitesList(response);
- }, onError).finally(function () {
- model.isLoading = false;
-
- if (model.refreshInterval && model.refreshInterval > 0) {
- cancelRefereshInterval();
-
- refreshPromise = $timeout(function () {
- refreshPromise = null;
- fetchAllSites(model.refreshInterval);
- }, model.refreshInterval * 1000);
- }
- });
- }
- }
-})();
diff --git a/plugins/MultiSites/angularjs/site/site.controller.js b/plugins/MultiSites/angularjs/site/site.controller.js
deleted file mode 100644
index 9237ec25a3..0000000000
--- a/plugins/MultiSites/angularjs/site/site.controller.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('MultiSitesSiteController', MultiSitesSiteController);
-
- MultiSitesSiteController.$inject = ['$scope', 'piwik'];
-
- function MultiSitesSiteController($scope, piwik){
-
- $scope.period = piwik.period;
- $scope.date = piwik.broadcast.getValueFromUrl('date');
- $scope.dashboardUrl = dashboardUrl;
- $scope.sparklineImage = sparklineImage;
- $scope.website.label = piwik.helper.htmlDecode($scope.website.label);
-
- this.getWebsite = function () {
- return $scope.website;
- };
-
- function tokenParam() {
- var token_auth = piwik.broadcast.getValueFromUrl('token_auth');
- return token_auth.length ? '&token_auth=' + token_auth : '';
- }
-
- function dashboardUrl(website){
- return 'index.php?module=CoreHome&action=index&date=' + $scope.date + '&period=' + $scope.period + '&idSite=' + website.idsite + tokenParam();
- }
-
- function sparklineImage(website){
- var metric = $scope.metric;
-
- switch ($scope.evolutionMetric) {
- case 'visits_evolution':
- metric = 'nb_visits';
- break;
- case 'pageviews_evolution':
- metric = 'nb_pageviews';
- break;
- case 'revenue_evolution':
- metric = 'revenue';
- break;
- }
-
- return 'index.php?module=MultiSites&action=getEvolutionGraph&period=' + $scope.period + '&date=' + $scope.dateSparkline + '&evolutionBy=' + metric + '&columns=' + metric + '&idSite=' + website.idsite + '&idsite=' + website.idsite + '&viewDataTable=sparkline' + tokenParam() + '&colors=' + encodeURIComponent(JSON.stringify(piwik.getSparklineColors()));
- }
- }
-})();
diff --git a/plugins/MultiSites/angularjs/site/site.directive.html b/plugins/MultiSites/angularjs/site/site.directive.html
deleted file mode 100644
index a013bae07e..0000000000
--- a/plugins/MultiSites/angularjs/site/site.directive.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<tr ng-class="{'groupedWebsite': website.group, 'website': !website.group, 'group': website.isGroup}">
- <td ng-if="!website.isGroup" class="multisites-label label">
- <a title="View reports" ng-href="{{ dashboardUrl(website) }}" class="value truncated-text-line">{{ website.label }}</a>
-
- <span>
- <a rel="noreferrer noopener" target="_blank" title="{{ 'General_GoTo'|translate:website.main_url }}" ng-href="{{ website.main_url }}">
- <span class="icon icon-outlink"></span></a>
- </span>
- </td>
- <td ng-if="website.isGroup" class="multisites-label label">
- <span class="value">{{ website.label }}</span>
- </td>
- <td class="multisites-column">
- <span class="value">{{ website.nb_visits }}</span>
- </td>
- <td class="multisites-column">
- <span class="value">{{ website.nb_pageviews }}</span>
- </td>
- <td ng-if="displayRevenueColumn" class="multisites-column">
- <span class="value">{{ website.revenue }}</span>
- </td>
-
- <td ng-if="period != 'range'" class="multisites-evolution" title="{{ website.tooltip }}">
- <div class="visits value" ng-if="!website.isGroup">
- <span ng-show="website[evolutionMetric+'_trend'] == 1"><img class="multisites_icon" src="plugins/MultiSites/images/arrow_up.png" alt="" /> <span style="color: green;">{{ website[evolutionMetric] }}</span></span>
- <span ng-show="website[evolutionMetric+'_trend'] == 0"><img class="multisites_icon" src="plugins/MultiSites/images/stop.png" alt="" /> <span>{{ website[evolutionMetric] }}</span></span>
- <span ng-show="website[evolutionMetric+'_trend'] == -1"><img class="multisites_icon" src="plugins/MultiSites/images/arrow_down.png" alt="" /> <span style="color: red;">{{ website[evolutionMetric] }}</span></span>
- </div>
- </td>
-
- <td ng-if="showSparklines" style="width:180px;">
- <div ng-if="!website.isGroup" class="sparkline" style="width: 100px; margin: auto;">
- <a rel="noreferrer noopener" target="_blank" ng-href="{{ dashboardUrl(website) }}"
- title="{{ 'General_GoTo'|translate:('Dashboard_DashboardOf'|translate:website.label) }}">
- <img alt="" ng-src="{{ sparklineImage(website) }}" width="100" height="25" />
- </a>
- </div>
- </td>
-</tr>
-
diff --git a/plugins/MultiSites/angularjs/site/site.directive.js b/plugins/MultiSites/angularjs/site/site.directive.js
deleted file mode 100644
index 77fd683185..0000000000
--- a/plugins/MultiSites/angularjs/site/site.directive.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Renders a single website row, for instance to be used within the MultiSites Dashboard.
- *
- * Usage:
- * <div piwik-multisites-site>
- * website="{label: 'Name', main_url: 'http://...', idsite: '...'}"
- * evolution-metric="visits_evolution"
- * show-sparklines="true"
- * date-sparkline="2014-01-01,2014-02-02"
- * display-revenue-column="true"
- * </div>
- */
-(function () {
- angular.module('piwikApp').directive('piwikMultisitesSite', piwikMultisitesSite);
-
- piwikMultisitesSite.$inject = ['piwik'];
-
- function piwikMultisitesSite(piwik){
-
- return {
- restrict: 'AC',
- replace: true,
- scope: {
- website: '=',
- evolutionMetric: '=',
- showSparklines: '=',
- dateSparkline: '=',
- displayRevenueColumn: '=',
- metric: '='
- },
- templateUrl: 'plugins/MultiSites/angularjs/site/site.directive.html?cb=' + piwik.cacheBuster,
- controller: 'MultiSitesSiteController'
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites.png b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites.png
index 5fa5c07d42..4664788cdd 100644
--- a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites.png
+++ b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:10628683cd359569c35511396c326065e971e93693e6b8a3a747d2b7deb9d1bb
-size 282157
+oid sha256:5ae87d5a3294e50aad3d9901c35134cdc6875e4ddd826c661656be29a4523790
+size 281871
diff --git a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_changed_sort_order.png b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_changed_sort_order.png
index c6d2572126..d76e603796 100644
--- a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_changed_sort_order.png
+++ b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_changed_sort_order.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4c40a6f0595736de832b0f5443c5cc6ba962a0dbf8da686ef3ca60f513763c5d
-size 56157
+oid sha256:0433d72ccf6e4d9adcc3889d5de2d971371b7d2751e5e18cd8c18be88babd576
+size 56026
diff --git a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_page_1.png b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_page_1.png
index b58f3c9426..e554392cf2 100644
--- a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_page_1.png
+++ b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_page_1.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8b3f3dcc869143f0cde259da590f424f2c2383b592518112938ac7db9527633b
-size 73017
+oid sha256:ebb8da5af6638c76f19f30ab9b5b8883d5c82a228d80897ec19ad75b1f5340d3
+size 72797
diff --git a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_range.png b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_range.png
index c735b5fe75..23ef1613c8 100644
--- a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_range.png
+++ b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_range.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ca5cdfdbcc53b91c26c0d2a5fadd06857dedbd0b4dc608b865c5aa62a7b0d2ff
-size 245998
+oid sha256:635c97270639541031b26d277eb5f90e3ed6cba2089b7fb4dd93758ba1753c53
+size 245690
diff --git a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_search.png b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_search.png
index 031adb7170..9773098ffd 100644
--- a/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_search.png
+++ b/plugins/MultiSites/tests/UI/expected-screenshots/MultiSitesTest_all_websites_search.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c1d370fdaff480f0b81da0f8fd994dffce5cb1bb7b4ba37076b1b888c3c46705
-size 56187
+oid sha256:658d929e130416681ac6c0062a632516f4f0dd5b9047d8e9ba1488ef5dfc7fa3
+size 56062
diff --git a/plugins/MultiSites/vue/dist/MultiSites.umd.js b/plugins/MultiSites/vue/dist/MultiSites.umd.js
new file mode 100644
index 0000000000..abc2461684
--- /dev/null
+++ b/plugins/MultiSites/vue/dist/MultiSites.umd.js
@@ -0,0 +1,1140 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", ], factory);
+ else if(typeof exports === 'object')
+ exports["MultiSites"] = factory(require("CoreHome"), require("vue"));
+ else
+ root["MultiSites"] = factory(root["CoreHome"], root["Vue"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/MultiSites/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "MultisitesSite", function() { return /* reexport */ MultisitesSite; });
+__webpack_require__.d(__webpack_exports__, "DashboadStore", function() { return /* reexport */ Dashboard_store; });
+__webpack_require__.d(__webpack_exports__, "Dashboard", function() { return /* reexport */ Dashboard; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue?vue&type=template&id=96049642
+
+var _hoisted_1 = {
+ key: 0,
+ class: "multisites-label label"
+};
+var _hoisted_2 = ["href"];
+var _hoisted_3 = ["href", "title"];
+
+var _hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon icon-outlink"
+}, null, -1);
+
+var _hoisted_5 = [_hoisted_4];
+var _hoisted_6 = {
+ key: 1,
+ class: "multisites-label label"
+};
+var _hoisted_7 = {
+ class: "value"
+};
+var _hoisted_8 = {
+ class: "multisites-column"
+};
+var _hoisted_9 = {
+ class: "value"
+};
+var _hoisted_10 = {
+ class: "multisites-column"
+};
+var _hoisted_11 = {
+ class: "value"
+};
+var _hoisted_12 = {
+ key: 2,
+ class: "multisites-column"
+};
+var _hoisted_13 = {
+ class: "value"
+};
+var _hoisted_14 = ["title"];
+var _hoisted_15 = {
+ key: 0,
+ class: "visits value"
+};
+
+var _hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ class: "multisites_icon",
+ src: "plugins/MultiSites/images/arrow_up.png",
+ alt: ""
+}, null, -1);
+
+var _hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])();
+
+var _hoisted_18 = {
+ style: {
+ "color": "green"
+ }
+};
+
+var _hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ class: "multisites_icon",
+ src: "plugins/MultiSites/images/stop.png",
+ alt: ""
+}, null, -1);
+
+var _hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])();
+
+var _hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ class: "multisites_icon",
+ src: "plugins/MultiSites/images/arrow_down.png",
+ alt: ""
+}, null, -1);
+
+var _hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])();
+
+var _hoisted_23 = {
+ style: {
+ "color": "red"
+ }
+};
+var _hoisted_24 = {
+ key: 4,
+ style: {
+ "width": "180px"
+ }
+};
+var _hoisted_25 = {
+ key: 0,
+ class: "sparkline",
+ style: {
+ "width": "100px",
+ "margin": "auto"
+ }
+};
+var _hoisted_26 = ["href", "title"];
+var _hoisted_27 = ["src"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ 'groupedWebsite': _ctx.website.group,
+ 'website': !_ctx.website.group,
+ 'group': _ctx.website.isGroup
+ })
+ }, [!_ctx.website.isGroup ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ title: "View reports",
+ class: "value truncated-text-line",
+ href: _ctx.dashboardUrl(_ctx.website)
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.websiteLabel), 9, _hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ rel: "noreferrer noopener",
+ target: "_blank",
+ href: _ctx.website.main_url,
+ title: _ctx.translate('General_GoTo', _ctx.website.main_url)
+ }, _hoisted_5, 8, _hoisted_3)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.website.isGroup ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.websiteLabel), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.website.nb_visits), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.website.nb_pageviews), 1)]), _ctx.displayRevenueColumn ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.website.revenue), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.period !== 'range' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", {
+ key: 3,
+ class: "multisites-evolution",
+ title: _ctx.website.tooltip
+ }, [!_ctx.website.isGroup ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_16, _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.website[_ctx.evolutionMetric]), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.website["".concat(_ctx.evolutionMetric, "_trend")] === 1]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_19, _hoisted_20, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.website[_ctx.evolutionMetric]), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.website["".concat(_ctx.evolutionMetric, "_trend")] === 0]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_21, _hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_23, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.website[_ctx.evolutionMetric]), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.website["".concat(_ctx.evolutionMetric, "_trend")] === -1]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 8, _hoisted_14)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.showSparklines ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_24, [!_ctx.website.isGroup ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ rel: "noreferrer noopener",
+ target: "_blank",
+ href: _ctx.dashboardUrl(_ctx.website),
+ title: _ctx.translate('General_GoTo', _ctx.translate('Dashboard_DashboardOf', _ctx.websiteLabel))
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ alt: "",
+ width: "100",
+ height: "25",
+ src: _ctx.sparklineImage(_ctx.website)
+ }, null, 8, _hoisted_27)], 8, _hoisted_26)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2);
+}
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue?vue&type=template&id=96049642
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue?vue&type=script&lang=ts
+
+
+/* harmony default export */ var MultisitesSitevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ website: {
+ type: Object,
+ required: true
+ },
+ evolutionMetric: {
+ type: String,
+ required: true
+ },
+ showSparklines: Boolean,
+ dateSparkline: String,
+ displayRevenueColumn: Boolean,
+ metric: String
+ },
+ methods: {
+ dashboardUrl: function dashboardUrl(website) {
+ return "index.php?module=CoreHome&action=index&date=".concat(this.date, "&period=").concat(this.period) + "&idSite=".concat(website.idsite).concat(this.tokenParam);
+ },
+ sparklineImage: function sparklineImage(website) {
+ var metric = this.metric;
+
+ switch (this.evolutionMetric) {
+ case 'visits_evolution':
+ metric = 'nb_visits';
+ break;
+
+ case 'pageviews_evolution':
+ metric = 'nb_pageviews';
+ break;
+
+ case 'revenue_evolution':
+ metric = 'revenue';
+ break;
+
+ default:
+ break;
+ }
+
+ return "index.php?module=MultiSites&action=getEvolutionGraph&period=".concat(this.period, "&date=") + "".concat(this.dateSparkline, "&evolutionBy=").concat(metric, "&columns=").concat(metric, "&idSite=").concat(website.idsite) + "&idsite=".concat(website.idsite, "&viewDataTable=sparkline").concat(this.tokenParam, "&colors=") + "".concat(encodeURIComponent(JSON.stringify(external_CoreHome_["Matomo"].getSparklineColors())));
+ }
+ },
+ computed: {
+ tokenParam: function tokenParam() {
+ var token_auth = external_CoreHome_["MatomoUrl"].urlParsed.value.token_auth;
+ return token_auth ? "&token_auth=".concat(token_auth) : '';
+ },
+ period: function period() {
+ return external_CoreHome_["Matomo"].period;
+ },
+ date: function date() {
+ return external_CoreHome_["MatomoUrl"].urlParsed.value.date;
+ },
+ websiteLabel: function websiteLabel() {
+ return external_CoreHome_["Matomo"].helper.htmlDecode(this.website.label);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue
+
+
+
+MultisitesSitevue_type_script_lang_ts.render = render
+
+/* harmony default export */ var MultisitesSite = (MultisitesSitevue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var MultisitesSite_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: MultisitesSite,
+ scope: {
+ website: {
+ angularJsBind: '='
+ },
+ evolutionMetric: {
+ angularJsBind: '='
+ },
+ showSparklines: {
+ angularJsBind: '='
+ },
+ dateSparkline: {
+ angularJsBind: '='
+ },
+ displayRevenueColumn: {
+ angularJsBind: '='
+ },
+ metric: {
+ angularJsBind: '='
+ }
+ },
+ directiveName: 'piwikMultisitesSite'
+}));
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MultiSites/vue/src/Dashboard/Dashboard.vue?vue&type=template&id=3809d5a2
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_1 = {
+ class: "card-title"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_2 = ["innerHTML", "title"];
+var Dashboardvue_type_template_id_3809d5a2_hoisted_3 = {
+ id: "mt",
+ class: "dataTable card-table",
+ cellspacing: "0"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_4 = {
+ class: "heading"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_5 = {
+ class: "heading"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_6 = {
+ class: "heading"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_7 = {
+ class: "heading"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_8 = ["colspan"];
+var Dashboardvue_type_template_id_3809d5a2_hoisted_9 = ["value"];
+var Dashboardvue_type_template_id_3809d5a2_hoisted_10 = {
+ value: "visits_evolution"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_11 = {
+ value: "pageviews_evolution"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_12 = {
+ key: 0,
+ value: "revenue_evolution"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_13 = {
+ key: 0
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_14 = {
+ colspan: "7",
+ class: "allWebsitesLoading"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_15 = {
+ key: 1
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_16 = {
+ key: 0
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_17 = {
+ colspan: "7"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_18 = {
+ class: "notification system notification-error"
+};
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_21 = {
+ rel: "noreferrer noopener",
+ target: "_blank",
+ href: "https://matomo.org/faq/troubleshooting/faq_19489/"
+};
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" – ");
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_23 = {
+ rel: "noreferrer noopener",
+ target: "_blank",
+ href: "https://forum.matomo.org/"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_24 = ["href"];
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(". ");
+
+var Dashboardvue_type_template_id_3809d5a2_hoisted_26 = {
+ colspan: "8",
+ class: "paging"
+};
+var Dashboardvue_type_template_id_3809d5a2_hoisted_27 = {
+ class: "row"
+};
+var _hoisted_28 = {
+ class: "col s3 add_new_site"
+};
+var _hoisted_29 = ["href"];
+
+var _hoisted_30 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-add"
+}, null, -1);
+
+var _hoisted_31 = {
+ class: "col s6"
+};
+var _hoisted_32 = {
+ style: {
+ "cursor": "pointer"
+ }
+};
+var _hoisted_33 = {
+ class: "dataTablePages"
+};
+var _hoisted_34 = {
+ id: "counter"
+};
+var _hoisted_35 = {
+ style: {
+ "cursor": "pointer"
+ },
+ class: "pointer"
+};
+
+var _hoisted_36 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: "col s3"
+}, " ", -1);
+
+var _hoisted_37 = {
+ row_id: "last"
+};
+var _hoisted_38 = {
+ colspan: "8",
+ class: "site_search"
+};
+var _hoisted_39 = {
+ class: "row"
+};
+var _hoisted_40 = {
+ class: "input-field col s12"
+};
+var _hoisted_41 = ["placeholder"];
+var _hoisted_42 = ["title"];
+function Dashboardvue_type_template_id_3809d5a2_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _this = this;
+
+ var _component_EnrichedHeadline = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("EnrichedHeadline");
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ var _component_MultisitesSite = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("MultisitesSite");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", Dashboardvue_type_template_id_3809d5a2_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_EnrichedHeadline, {
+ "help-url": "https://matomo.org/docs/manage-websites/#all-websites-dashboard",
+ "feature-name": _ctx.translate('General_AllWebsitesDashboard')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_AllWebsitesDashboard')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "smallTitle",
+ innerHTML: _ctx.$sanitize(_this.smallTitleContent),
+ title: _ctx.smallTitleTooltip
+ }, null, 8, Dashboardvue_type_template_id_3809d5a2_hoisted_2)];
+ }),
+ _: 1
+ }, 8, ["feature-name"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("table", Dashboardvue_type_template_id_3809d5a2_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", {
+ id: "names",
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["label", {
+ columnSorted: 'label' === _ctx.sortColumn
+ }]),
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.sortBy('label');
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", Dashboardvue_type_template_id_3809d5a2_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Website')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["arrow", {
+ multisites_asc: !_ctx.reverse && 'label' === _ctx.sortColumn,
+ multisites_desc: _ctx.reverse && 'label' === _ctx.sortColumn
+ }]),
+ style: {
+ "margin-left": "3.5px"
+ }
+ }, null, 2)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", {
+ id: "visits",
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["multisites-column", {
+ columnSorted: 'nb_visits' === _ctx.sortColumn
+ }]),
+ onClick: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.sortBy('nb_visits');
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["arrow", {
+ multisites_asc: !_ctx.reverse && 'nb_visits' === _ctx.sortColumn,
+ multisites_desc: _ctx.reverse && 'nb_visits' === _ctx.sortColumn
+ }]),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", Dashboardvue_type_template_id_3809d5a2_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnNbVisits')), 1)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", {
+ id: "pageviews",
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["multisites-column", {
+ columnSorted: 'nb_pageviews' === _ctx.sortColumn
+ }]),
+ onClick: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.sortBy('nb_pageviews');
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["arrow", {
+ multisites_asc: !_ctx.reverse && 'nb_pageviews' === _ctx.sortColumn,
+ multisites_desc: _ctx.reverse && 'nb_pageviews' === _ctx.sortColumn
+ }]),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", Dashboardvue_type_template_id_3809d5a2_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnPageviews')), 1)], 2), _ctx.displayRevenueColumn ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", {
+ key: 0,
+ id: "revenue",
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["multisites-column", {
+ columnSorted: 'revenue' === _ctx.sortColumn
+ }]),
+ onClick: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.sortBy('revenue');
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["arrow", {
+ multisites_asc: !_ctx.reverse && 'revenue' === _ctx.sortColumn,
+ multisites_desc: _ctx.reverse && 'revenue' === _ctx.sortColumn
+ }]),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", Dashboardvue_type_template_id_3809d5a2_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnRevenue')), 1)], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", {
+ id: "evolution",
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ columnSorted: _ctx.evolutionSelector === _ctx.sortColumn
+ }),
+ colspan: _ctx.showSparklines ? 2 : 1
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["arrow", {
+ multisites_asc: !_ctx.reverse && _ctx.evolutionSelector === _ctx.sortColumn,
+ multisites_desc: _ctx.reverse && _ctx.evolutionSelector === _ctx.sortColumn
+ }]),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "evolution",
+ onClick: _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.sortBy(_ctx.evolutionSelector);
+ }),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MultiSites_Evolution')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", {
+ class: "selector browser-default",
+ id: "evolution_selector",
+ value: _ctx.evolutionSelector,
+ onChange: _cache[5] || (_cache[5] = function ($event) {
+ _ctx.evolutionSelector = $event.target.value;
+
+ _ctx.sortBy(_ctx.evolutionSelector);
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("option", Dashboardvue_type_template_id_3809d5a2_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnNbVisits')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("option", Dashboardvue_type_template_id_3809d5a2_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnPageviews')), 1), _ctx.displayRevenueColumn ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("option", Dashboardvue_type_template_id_3809d5a2_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnRevenue')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 40, Dashboardvue_type_template_id_3809d5a2_hoisted_9)], 10, Dashboardvue_type_template_id_3809d5a2_hoisted_8)])]), _ctx.isLoading ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tbody", Dashboardvue_type_template_id_3809d5a2_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Dashboardvue_type_template_id_3809d5a2_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ "loading-message": _ctx.loadingMessage,
+ loading: _ctx.isLoading
+ }, null, 8, ["loading-message", "loading"])])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.isLoading ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tbody", Dashboardvue_type_template_id_3809d5a2_hoisted_15, [_ctx.errorLoadingSites ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", Dashboardvue_type_template_id_3809d5a2_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Dashboardvue_type_template_id_3809d5a2_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Dashboardvue_type_template_id_3809d5a2_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequest', '', '')) + " ", 1), Dashboardvue_type_template_id_3809d5a2_hoisted_19, Dashboardvue_type_template_id_3809d5a2_hoisted_20, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_NeedMoreHelp')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", Dashboardvue_type_template_id_3809d5a2_hoisted_21, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Faq')), 1), Dashboardvue_type_template_id_3809d5a2_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", Dashboardvue_type_template_id_3809d5a2_hoisted_23, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_CommunityHelp')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, " – ", 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.areAdsForProfessionalServicesEnabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ rel: "noreferrer noopener",
+ target: "_blank",
+ href: _ctx.professionalHelpUrl
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_ProfessionalHelp')), 9, Dashboardvue_type_template_id_3809d5a2_hoisted_24), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.areAdsForProfessionalServicesEnabled]]), Dashboardvue_type_template_id_3809d5a2_hoisted_25])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.sites, function (website) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_MultisitesSite, {
+ key: website.idsite,
+ website: website,
+ "evolution-metric": _ctx.evolutionSelector,
+ "date-sparkline": _ctx.dateSparkline,
+ "show-sparklines": _ctx.showSparklines,
+ metric: _ctx.sortColumn,
+ "display-revenue-column": _ctx.displayRevenueColumn
+ }, null, 8, ["website", "evolution-metric", "date-sparkline", "show-sparklines", "metric", "display-revenue-column"]);
+ }), 128))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tfoot", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", Dashboardvue_type_template_id_3809d5a2_hoisted_26, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Dashboardvue_type_template_id_3809d5a2_hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_28, [_ctx.hasSuperUserAccess ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", {
+ key: 0,
+ href: _ctx.addSiteUrl
+ }, [_hoisted_30, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AddSite')), 1)], 8, _hoisted_29)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ id: "prev",
+ class: "previous dataTablePrevious",
+ onClick: _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.previousPage();
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_32, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.currentPage === 0)]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_34, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Pagination', _ctx.paginationLowerBound, _ctx.paginationUpperBound, _ctx.numberOfFilteredSites)), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ id: "next",
+ class: "next dataTableNext",
+ onClick: _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.nextPage();
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_35, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.currentPage >= _ctx.numberOfPages)]])]), _hoisted_36])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", _hoisted_37, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_38, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_39, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "text",
+ onKeydown: _cache[8] || (_cache[8] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withKeys"])(function ($event) {
+ return _ctx.searchSite(_ctx.searchTerm);
+ }, ["enter"])),
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
+ return _ctx.searchTerm = $event;
+ }),
+ placeholder: _ctx.translate('Actions_SubmenuSitesearch')
+ }, null, 40, _hoisted_41), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-search search_ico",
+ onClick: _cache[10] || (_cache[10] = function ($event) {
+ return _ctx.searchSite(_ctx.searchTerm);
+ }),
+ title: _ctx.translate('General_ClickToSearch')
+ }, null, 8, _hoisted_42)])])])])])])]);
+}
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/Dashboard/Dashboard.vue?vue&type=template&id=3809d5a2
+
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/Dashboard/Dashboard.store.ts
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+var _window = window,
+ NumberFormatter = _window.NumberFormatter;
+
+var Dashboard_store_DashboardStore = /*#__PURE__*/function () {
+ function DashboardStore() {
+ var _this = this;
+
+ _classCallCheck(this, DashboardStore);
+
+ _defineProperty(this, "privateState", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["reactive"])({
+ sites: [],
+ isLoading: false,
+ pageSize: 25,
+ currentPage: 0,
+ totalVisits: '?',
+ totalPageviews: '?',
+ totalActions: '?',
+ totalRevenue: '?',
+ searchTerm: '',
+ lastVisits: '?',
+ lastVisitsDate: '?',
+ numberOfSites: 0,
+ loadingMessage: Object(external_CoreHome_["translate"])('MultiSites_LoadingWebsites'),
+ reverse: true,
+ sortColumn: 'nb_visits',
+ refreshInterval: 0,
+ errorLoadingSites: false
+ }));
+
+ _defineProperty(this, "refreshTimeout", null);
+
+ _defineProperty(this, "fetchAbort", null);
+
+ _defineProperty(this, "state", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.privateState);
+ }));
+
+ _defineProperty(this, "numberOfFilteredSites", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.numberOfSites;
+ }));
+
+ _defineProperty(this, "numberOfPages", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return Math.ceil(_this.numberOfFilteredSites.value / _this.state.value.pageSize - 1);
+ }));
+
+ _defineProperty(this, "currentPagingOffset", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return Math.ceil(_this.state.value.currentPage * _this.state.value.pageSize);
+ }));
+
+ _defineProperty(this, "paginationLowerBound", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.currentPagingOffset.value + 1;
+ }));
+
+ _defineProperty(this, "paginationUpperBound", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var end = _this.currentPagingOffset.value + _this.state.value.pageSize;
+ var max = _this.numberOfFilteredSites.value;
+
+ if (end > max) {
+ end = max;
+ }
+
+ return end;
+ }));
+ }
+
+ _createClass(DashboardStore, [{
+ key: "cancelRefereshInterval",
+ value: function cancelRefereshInterval() {
+ if (this.refreshTimeout) {
+ clearTimeout(this.refreshTimeout);
+ this.refreshTimeout = null;
+ }
+ }
+ }, {
+ key: "updateWebsitesList",
+ value: function updateWebsitesList(report) {
+ var _this2 = this;
+
+ if (!report) {
+ this.onError();
+ return;
+ }
+
+ var allSites = report.sites;
+ allSites.forEach(function (site) {
+ if (site.ratio !== 1 && site.ratio !== '1') {
+ var percent = NumberFormatter.formatPercent(Math.round(parseInt(site.ratio, 10) * 100));
+ var metricName = null;
+ var previousTotal = '0';
+ var currentTotal = '0';
+ var evolution = '0';
+ var previousTotalAdjusted = '0';
+
+ if (_this2.state.value.sortColumn === 'nb_visits' || _this2.state.value.sortColumn === 'visits_evolution') {
+ previousTotal = NumberFormatter.formatNumber(site.previous_nb_visits);
+ currentTotal = NumberFormatter.formatNumber(site.nb_visits);
+ evolution = NumberFormatter.formatPercent(site.visits_evolution);
+ metricName = Object(external_CoreHome_["translate"])('General_ColumnNbVisits');
+ previousTotalAdjusted = NumberFormatter.formatNumber(Math.round(parseInt(site.previous_nb_visits, 10) * parseInt(site.ratio, 10)));
+ }
+
+ if (_this2.state.value.sortColumn === 'pageviews_evolution') {
+ previousTotal = "".concat(site.previous_Actions_nb_pageviews);
+ currentTotal = "".concat(site.nb_pageviews);
+ evolution = NumberFormatter.formatPercent(site.pageviews_evolution);
+ metricName = Object(external_CoreHome_["translate"])('General_ColumnPageviews');
+ previousTotalAdjusted = NumberFormatter.formatNumber(Math.round(parseInt(site.previous_Actions_nb_pageviews, 10) * parseInt(site.ratio, 10)));
+ }
+
+ if (_this2.state.value.sortColumn === 'revenue_evolution') {
+ previousTotal = NumberFormatter.formatCurrency(site.previous_Goal_revenue, site.currencySymbol);
+ currentTotal = NumberFormatter.formatCurrency(site.revenue, site.currencySymbol);
+ evolution = NumberFormatter.formatPercent(site.revenue_evolution);
+ metricName = Object(external_CoreHome_["translate"])('General_ColumnRevenue');
+ previousTotalAdjusted = NumberFormatter.formatCurrency(Math.round(parseInt(site.previous_Goal_revenue, 10) * parseInt(site.ratio, 10)), site.currencySymbol);
+ }
+
+ if (metricName) {
+ site.tooltip = "".concat(Object(external_CoreHome_["translate"])('MultiSites_EvolutionComparisonIncomplete', [percent]), "\n");
+ site.tooltip += "".concat(Object(external_CoreHome_["translate"])('MultiSites_EvolutionComparisonProportional', [percent, "".concat(previousTotalAdjusted), metricName, "".concat(previousTotal)]), "\n");
+
+ switch (site.periodName) {
+ case 'day':
+ site.tooltip += Object(external_CoreHome_["translate"])('MultiSites_EvolutionComparisonDay', ["".concat(currentTotal), metricName, "".concat(previousTotalAdjusted), site.previousRange, "".concat(evolution)]);
+ break;
+
+ case 'week':
+ site.tooltip += Object(external_CoreHome_["translate"])('MultiSites_EvolutionComparisonWeek', ["".concat(currentTotal), metricName, "".concat(previousTotalAdjusted), site.previousRange, "".concat(evolution)]);
+ break;
+
+ case 'month':
+ site.tooltip += Object(external_CoreHome_["translate"])('MultiSites_EvolutionComparisonMonth', ["".concat(currentTotal), metricName, "".concat(previousTotalAdjusted), site.previousRange, "".concat(evolution)]);
+ break;
+
+ case 'year':
+ site.tooltip += Object(external_CoreHome_["translate"])('MultiSites_EvolutionComparisonYear', ["".concat(currentTotal), metricName, "".concat(previousTotalAdjusted), site.previousRange, "".concat(evolution)]);
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ });
+ this.privateState.totalVisits = report.totals.nb_visits;
+ this.privateState.totalPageviews = report.totals.nb_pageviews;
+ this.privateState.totalActions = report.totals.nb_actions;
+ this.privateState.totalRevenue = report.totals.revenue;
+ this.privateState.lastVisits = report.totals.nb_visits_lastdate;
+ this.privateState.sites = allSites;
+ this.privateState.numberOfSites = report.numSites;
+ this.privateState.lastVisitsDate = report.lastDate;
+ }
+ }, {
+ key: "sortBy",
+ value: function sortBy(metric) {
+ if (this.state.value.sortColumn === metric) {
+ this.privateState.reverse = !this.state.value.reverse;
+ }
+
+ this.privateState.sortColumn = metric;
+ this.fetchAllSites();
+ }
+ }, {
+ key: "previousPage",
+ value: function previousPage() {
+ this.privateState.currentPage = this.state.value.currentPage - 1;
+ this.fetchAllSites();
+ }
+ }, {
+ key: "nextPage",
+ value: function nextPage() {
+ this.privateState.currentPage = this.state.value.currentPage + 1;
+ this.fetchAllSites();
+ }
+ }, {
+ key: "searchSite",
+ value: function searchSite(term) {
+ this.privateState.searchTerm = term;
+ this.privateState.currentPage = 0;
+ this.fetchAllSites();
+ }
+ }, {
+ key: "fetchAllSites",
+ value: function fetchAllSites() {
+ var _this3 = this;
+
+ if (this.fetchAbort) {
+ this.fetchAbort.abort();
+ this.fetchAbort = null;
+ this.cancelRefereshInterval();
+ }
+
+ this.privateState.isLoading = true;
+ this.privateState.errorLoadingSites = false;
+ var params = {
+ module: 'MultiSites',
+ action: 'getAllWithGroups',
+ hideMetricsDoc: '1',
+ filter_sort_order: 'asc',
+ filter_limit: this.state.value.pageSize,
+ filter_offset: this.currentPagingOffset.value,
+ showColumns: ['label', 'nb_visits', 'nb_pageviews', 'visits_evolution', 'visits_evolution_trend', 'pageviews_evolution', 'pageviews_evolution_trend', 'revenue_evolution', 'revenue_evolution_trend', 'nb_actions,revenue'].join(',')
+ };
+
+ if (this.privateState.searchTerm) {
+ params.pattern = this.privateState.searchTerm;
+ }
+
+ if (this.privateState.sortColumn) {
+ params.filter_sort_column = this.privateState.sortColumn;
+ }
+
+ if (this.privateState.reverse) {
+ params.filter_sort_order = 'desc';
+ }
+
+ this.fetchAbort = new AbortController();
+ return external_CoreHome_["AjaxHelper"].fetch(params, {
+ abortController: this.fetchAbort
+ }).then(function (response) {
+ _this3.updateWebsitesList(response);
+ }).catch(function () {
+ _this3.onError();
+ }).finally(function () {
+ _this3.privateState.isLoading = false;
+ _this3.fetchAbort = null;
+
+ if (_this3.state.value.refreshInterval && _this3.state.value.refreshInterval > 0) {
+ _this3.cancelRefereshInterval();
+
+ _this3.refreshTimeout = setTimeout(function () {
+ _this3.refreshTimeout = null;
+
+ _this3.fetchAllSites();
+ }, _this3.state.value.refreshInterval * 1000);
+ }
+ });
+ }
+ }, {
+ key: "onError",
+ value: function onError() {
+ this.privateState.errorLoadingSites = true;
+ this.privateState.sites = [];
+ }
+ }, {
+ key: "setRefreshInterval",
+ value: function setRefreshInterval(interval) {
+ this.privateState.refreshInterval = interval;
+ }
+ }, {
+ key: "setPageSize",
+ value: function setPageSize(pageSize) {
+ this.privateState.pageSize = pageSize;
+ }
+ }]);
+
+ return DashboardStore;
+}();
+
+/* harmony default export */ var Dashboard_store = (new Dashboard_store_DashboardStore());
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MultiSites/vue/src/Dashboard/Dashboard.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var Dashboardvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ displayRevenueColumn: Boolean,
+ showSparklines: Boolean,
+ dateSparkline: String,
+ pageSize: Number,
+ autoRefreshTodayReport: Number
+ },
+ components: {
+ EnrichedHeadline: external_CoreHome_["EnrichedHeadline"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"],
+ MultisitesSite: MultisitesSite
+ },
+ data: function data() {
+ return {
+ evolutionSelector: 'visits_evolution',
+ searchTerm: ''
+ };
+ },
+ created: function created() {
+ if (this.pageSize) {
+ Dashboard_store.setPageSize(this.pageSize);
+ }
+
+ this.refresh(this.autoRefreshTodayReport);
+ },
+ methods: {
+ refresh: function refresh(interval) {
+ Dashboard_store.setRefreshInterval(interval);
+ Dashboard_store.fetchAllSites();
+ },
+ sortBy: function sortBy(column) {
+ Dashboard_store.sortBy(column);
+ },
+ previousPage: function previousPage() {
+ Dashboard_store.previousPage();
+ },
+ nextPage: function nextPage() {
+ Dashboard_store.nextPage();
+ },
+ searchSite: function searchSite() {
+ Dashboard_store.searchSite(this.searchTerm);
+ }
+ },
+ computed: {
+ hasSuperUserAccess: function hasSuperUserAccess() {
+ return external_CoreHome_["Matomo"].hasSuperUserAccess;
+ },
+ date: function date() {
+ return external_CoreHome_["MatomoUrl"].urlParsed.value.date;
+ },
+ idSite: function idSite() {
+ return external_CoreHome_["MatomoUrl"].urlParsed.value.idSite;
+ },
+ url: function url() {
+ return external_CoreHome_["Matomo"].piwik_url;
+ },
+ period: function period() {
+ return external_CoreHome_["Matomo"].period;
+ },
+ areAdsForProfessionalServicesEnabled: function areAdsForProfessionalServicesEnabled() {
+ return external_CoreHome_["Matomo"].config && external_CoreHome_["Matomo"].config.are_ads_enabled;
+ },
+ sortColumn: function sortColumn() {
+ return Dashboard_store.state.value.sortColumn;
+ },
+ reverse: function reverse() {
+ return Dashboard_store.state.value.reverse;
+ },
+ smallTitleContent: function smallTitleContent() {
+ var state = Dashboard_store.state.value;
+ return Object(external_CoreHome_["translate"])('General_TotalVisitsPageviewsActionsRevenue', "<strong>".concat(state.totalVisits, "</strong>"), "<strong>".concat(state.totalPageviews, "</strong>"), "<strong>".concat(state.totalActions, "</strong>"), "<strong>".concat(state.totalRevenue, "</strong>"));
+ },
+ smallTitleTooltip: function smallTitleTooltip() {
+ var state = Dashboard_store.state.value;
+ return Object(external_CoreHome_["translate"])('General_EvolutionSummaryGeneric', Object(external_CoreHome_["translate"])('General_NVisits', "".concat(state.totalVisits)), this.date, "".concat(state.lastVisits), state.lastVisitsDate, Object(external_CoreHome_["getFormattedEvolution"])(state.totalVisits, state.lastVisits));
+ },
+ loadingMessage: function loadingMessage() {
+ return Dashboard_store.state.value.loadingMessage;
+ },
+ isLoading: function isLoading() {
+ return Dashboard_store.state.value.isLoading;
+ },
+ errorLoadingSites: function errorLoadingSites() {
+ return Dashboard_store.state.value.errorLoadingSites;
+ },
+ sites: function sites() {
+ return Dashboard_store.state.value.sites;
+ },
+ numberOfPages: function numberOfPages() {
+ return Dashboard_store.numberOfPages.value;
+ },
+ currentPage: function currentPage() {
+ return Dashboard_store.state.value.currentPage;
+ },
+ paginationLowerBound: function paginationLowerBound() {
+ return Dashboard_store.paginationLowerBound.value;
+ },
+ paginationUpperBound: function paginationUpperBound() {
+ return Dashboard_store.paginationUpperBound.value;
+ },
+ numberOfFilteredSites: function numberOfFilteredSites() {
+ return Dashboard_store.numberOfFilteredSites.value;
+ },
+ professionalHelpUrl: function professionalHelpUrl() {
+ return 'https://matomo.org/support-plans/?pk_campaign=Help&pk_medium=AjaxError&pk_content=' + 'MultiSites&pk_source=Matomo_App';
+ },
+ addSiteUrl: function addSiteUrl() {
+ return "index.php?module=SitesManager&action=index&showaddsite=1&period=".concat(this.period, "&") + "date=".concat(this.date, "&idSite=").concat(this.idSite);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/Dashboard/Dashboard.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/Dashboard/Dashboard.vue
+
+
+
+Dashboardvue_type_script_lang_ts.render = Dashboardvue_type_template_id_3809d5a2_render
+
+/* harmony default export */ var Dashboard = (Dashboardvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/Dashboard/Dashboard.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var Dashboard_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: Dashboard,
+ scope: {
+ displayRevenueColumn: {
+ angularJsBind: '@',
+ transform: external_CoreHome_["transformAngularJsBoolAttr"]
+ },
+ showSparklines: {
+ angularJsBind: '@',
+ transform: external_CoreHome_["transformAngularJsBoolAttr"]
+ },
+ dateSparkline: {
+ angularJsBind: '@'
+ },
+ pageSize: {
+ angularJsBind: '@',
+ transform: external_CoreHome_["transformAngularJsIntAttr"]
+ },
+ autoRefreshTodayReport: {
+ angularJsBind: '@',
+ transform: external_CoreHome_["transformAngularJsIntAttr"]
+ }
+ },
+ directiveName: 'piwikMultisitesDashboard'
+}));
+// CONCATENATED MODULE: ./plugins/MultiSites/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=MultiSites.umd.js.map \ No newline at end of file
diff --git a/plugins/MultiSites/vue/dist/MultiSites.umd.min.js b/plugins/MultiSites/vue/dist/MultiSites.umd.min.js
new file mode 100644
index 0000000000..9a9e970fa8
--- /dev/null
+++ b/plugins/MultiSites/vue/dist/MultiSites.umd.min.js
@@ -0,0 +1,20 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["MultiSites"]=t(require("CoreHome"),require("vue")):e["MultiSites"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/MultiSites/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"MultisitesSite",(function(){return x})),n.d(t,"DashboadStore",(function(){return Te})),n.d(t,"Dashboard",(function(){return De})),"undefined"!==typeof window){var r=window.document.currentScript,a=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var o=n("19dc"),i=n("8bbf"),s={key:0,class:"multisites-label label"},l=["href"],c=["href","title"],u=Object(i["createElementVNode"])("span",{class:"icon icon-outlink"},null,-1),d=[u],b={key:1,class:"multisites-label label"},m={class:"value"},p={class:"multisites-column"},v={class:"value"},f={class:"multisites-column"},h={class:"value"},g={key:2,class:"multisites-column"},O={class:"value"},j=["title"],S={key:0,class:"visits value"},_=Object(i["createElementVNode"])("img",{class:"multisites_icon",src:"plugins/MultiSites/images/arrow_up.png",alt:""},null,-1),y=Object(i["createTextVNode"])(),w={style:{color:"green"}},k=Object(i["createElementVNode"])("img",{class:"multisites_icon",src:"plugins/MultiSites/images/stop.png",alt:""},null,-1),V=Object(i["createTextVNode"])(),N=Object(i["createElementVNode"])("img",{class:"multisites_icon",src:"plugins/MultiSites/images/arrow_down.png",alt:""},null,-1),E=Object(i["createTextVNode"])(),C={style:{color:"red"}},B={key:4,style:{width:"180px"}},M={key:0,class:"sparkline",style:{width:"100px",margin:"auto"}},P=["href","title"],T=["src"];function A(e,t,n,r,a,o){return Object(i["openBlock"])(),Object(i["createElementBlock"])("tr",{class:Object(i["normalizeClass"])({groupedWebsite:e.website.group,website:!e.website.group,group:e.website.isGroup})},[e.website.isGroup?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("td",s,[Object(i["createElementVNode"])("a",{title:"View reports",class:"value truncated-text-line",href:e.dashboardUrl(e.website)},Object(i["toDisplayString"])(e.websiteLabel),9,l),Object(i["createElementVNode"])("span",null,[Object(i["createElementVNode"])("a",{rel:"noreferrer noopener",target:"_blank",href:e.website.main_url,title:e.translate("General_GoTo",e.website.main_url)},d,8,c)])])),e.website.isGroup?(Object(i["openBlock"])(),Object(i["createElementBlock"])("td",b,[Object(i["createElementVNode"])("span",m,Object(i["toDisplayString"])(e.websiteLabel),1)])):Object(i["createCommentVNode"])("",!0),Object(i["createElementVNode"])("td",p,[Object(i["createElementVNode"])("span",v,Object(i["toDisplayString"])(e.website.nb_visits),1)]),Object(i["createElementVNode"])("td",f,[Object(i["createElementVNode"])("span",h,Object(i["toDisplayString"])(e.website.nb_pageviews),1)]),e.displayRevenueColumn?(Object(i["openBlock"])(),Object(i["createElementBlock"])("td",g,[Object(i["createElementVNode"])("span",O,Object(i["toDisplayString"])(e.website.revenue),1)])):Object(i["createCommentVNode"])("",!0),"range"!==e.period?(Object(i["openBlock"])(),Object(i["createElementBlock"])("td",{key:3,class:"multisites-evolution",title:e.website.tooltip},[e.website.isGroup?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",S,[Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,[_,y,Object(i["createElementVNode"])("span",w,Object(i["toDisplayString"])(e.website[e.evolutionMetric]),1)],512),[[i["vShow"],1===e.website["".concat(e.evolutionMetric,"_trend")]]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,[k,V,Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.website[e.evolutionMetric]),1)],512),[[i["vShow"],0===e.website["".concat(e.evolutionMetric,"_trend")]]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,[N,E,Object(i["createElementVNode"])("span",C,Object(i["toDisplayString"])(e.website[e.evolutionMetric]),1)],512),[[i["vShow"],-1===e.website["".concat(e.evolutionMetric,"_trend")]]])]))],8,j)):Object(i["createCommentVNode"])("",!0),e.showSparklines?(Object(i["openBlock"])(),Object(i["createElementBlock"])("td",B,[e.website.isGroup?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",M,[Object(i["createElementVNode"])("a",{rel:"noreferrer noopener",target:"_blank",href:e.dashboardUrl(e.website),title:e.translate("General_GoTo",e.translate("Dashboard_DashboardOf",e.websiteLabel))},[Object(i["createElementVNode"])("img",{alt:"",width:"100",height:"25",src:e.sparklineImage(e.website)},null,8,T)],8,P)]))])):Object(i["createCommentVNode"])("",!0)],2)}var D=Object(i["defineComponent"])({props:{website:{type:Object,required:!0},evolutionMetric:{type:String,required:!0},showSparklines:Boolean,dateSparkline:String,displayRevenueColumn:Boolean,metric:String},methods:{dashboardUrl:function(e){return"index.php?module=CoreHome&action=index&date=".concat(this.date,"&period=").concat(this.period)+"&idSite=".concat(e.idsite).concat(this.tokenParam)},sparklineImage:function(e){var t=this.metric;switch(this.evolutionMetric){case"visits_evolution":t="nb_visits";break;case"pageviews_evolution":t="nb_pageviews";break;case"revenue_evolution":t="revenue";break;default:break}return"index.php?module=MultiSites&action=getEvolutionGraph&period=".concat(this.period,"&date=")+"".concat(this.dateSparkline,"&evolutionBy=").concat(t,"&columns=").concat(t,"&idSite=").concat(e.idsite)+"&idsite=".concat(e.idsite,"&viewDataTable=sparkline").concat(this.tokenParam,"&colors=")+"".concat(encodeURIComponent(JSON.stringify(o["Matomo"].getSparklineColors())))}},computed:{tokenParam:function(){var e=o["MatomoUrl"].urlParsed.value.token_auth;return e?"&token_auth=".concat(e):""},period:function(){return o["Matomo"].period},date:function(){return o["MatomoUrl"].urlParsed.value.date},websiteLabel:function(){return o["Matomo"].helper.htmlDecode(this.website.label)}}});D.render=A;var x=D,G=(Object(o["createAngularJsAdapter"])({component:x,scope:{website:{angularJsBind:"="},evolutionMetric:{angularJsBind:"="},showSparklines:{angularJsBind:"="},dateSparkline:{angularJsBind:"="},displayRevenueColumn:{angularJsBind:"="},metric:{angularJsBind:"="}},directiveName:"piwikMultisitesSite"}),{class:"card-title"}),R=["innerHTML","title"],L={id:"mt",class:"dataTable card-table",cellspacing:"0"},I={class:"heading"},z={class:"heading"},U={class:"heading"},J={class:"heading"},H=["colspan"],F=["value"],q={value:"visits_evolution"},W={value:"pageviews_evolution"},K={key:0,value:"revenue_evolution"},$={key:0},Y={colspan:"7",class:"allWebsitesLoading"},Q={key:1},X={key:0},Z={colspan:"7"},ee={class:"notification system notification-error"},te=Object(i["createElementVNode"])("br",null,null,-1),ne=Object(i["createElementVNode"])("br",null,null,-1),re={rel:"noreferrer noopener",target:"_blank",href:"https://matomo.org/faq/troubleshooting/faq_19489/"},ae=Object(i["createTextVNode"])(" – "),oe={rel:"noreferrer noopener",target:"_blank",href:"https://forum.matomo.org/"},ie=["href"],se=Object(i["createTextVNode"])(". "),le={colspan:"8",class:"paging"},ce={class:"row"},ue={class:"col s3 add_new_site"},de=["href"],be=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),me={class:"col s6"},pe={style:{cursor:"pointer"}},ve={class:"dataTablePages"},fe={id:"counter"},he={style:{cursor:"pointer"},class:"pointer"},ge=Object(i["createElementVNode"])("div",{class:"col s3"}," ",-1),Oe={row_id:"last"},je={colspan:"8",class:"site_search"},Se={class:"row"},_e={class:"input-field col s12"},ye=["placeholder"],we=["title"];
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function ke(e,t,n,r,a,o){var s=this,l=Object(i["resolveComponent"])("EnrichedHeadline"),c=Object(i["resolveComponent"])("ActivityIndicator"),u=Object(i["resolveComponent"])("MultisitesSite");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("h2",G,[Object(i["createVNode"])(l,{"help-url":"https://matomo.org/docs/manage-websites/#all-websites-dashboard","feature-name":e.translate("General_AllWebsitesDashboard")},{default:Object(i["withCtx"])((function(){return[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_AllWebsitesDashboard"))+" ",1),Object(i["createElementVNode"])("span",{class:"smallTitle",innerHTML:e.$sanitize(s.smallTitleContent),title:e.smallTitleTooltip},null,8,R)]})),_:1},8,["feature-name"])]),Object(i["createElementVNode"])("table",L,[Object(i["createElementVNode"])("thead",null,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("th",{id:"names",class:Object(i["normalizeClass"])(["label",{columnSorted:"label"===e.sortColumn}]),onClick:t[0]||(t[0]=function(t){return e.sortBy("label")})},[Object(i["createElementVNode"])("span",I,Object(i["toDisplayString"])(e.translate("General_Website")),1),Object(i["createElementVNode"])("span",{class:Object(i["normalizeClass"])(["arrow",{multisites_asc:!e.reverse&&"label"===e.sortColumn,multisites_desc:e.reverse&&"label"===e.sortColumn}]),style:{"margin-left":"3.5px"}},null,2)],2),Object(i["createElementVNode"])("th",{id:"visits",class:Object(i["normalizeClass"])(["multisites-column",{columnSorted:"nb_visits"===e.sortColumn}]),onClick:t[1]||(t[1]=function(t){return e.sortBy("nb_visits")})},[Object(i["createElementVNode"])("span",{class:Object(i["normalizeClass"])(["arrow",{multisites_asc:!e.reverse&&"nb_visits"===e.sortColumn,multisites_desc:e.reverse&&"nb_visits"===e.sortColumn}]),style:{"margin-right":"3.5px"}},null,2),Object(i["createElementVNode"])("span",z,Object(i["toDisplayString"])(e.translate("General_ColumnNbVisits")),1)],2),Object(i["createElementVNode"])("th",{id:"pageviews",class:Object(i["normalizeClass"])(["multisites-column",{columnSorted:"nb_pageviews"===e.sortColumn}]),onClick:t[2]||(t[2]=function(t){return e.sortBy("nb_pageviews")})},[Object(i["createElementVNode"])("span",{class:Object(i["normalizeClass"])(["arrow",{multisites_asc:!e.reverse&&"nb_pageviews"===e.sortColumn,multisites_desc:e.reverse&&"nb_pageviews"===e.sortColumn}]),style:{"margin-right":"3.5px"}},null,2),Object(i["createElementVNode"])("span",U,Object(i["toDisplayString"])(e.translate("General_ColumnPageviews")),1)],2),e.displayRevenueColumn?(Object(i["openBlock"])(),Object(i["createElementBlock"])("th",{key:0,id:"revenue",class:Object(i["normalizeClass"])(["multisites-column",{columnSorted:"revenue"===e.sortColumn}]),onClick:t[3]||(t[3]=function(t){return e.sortBy("revenue")})},[Object(i["createElementVNode"])("span",{class:Object(i["normalizeClass"])(["arrow",{multisites_asc:!e.reverse&&"revenue"===e.sortColumn,multisites_desc:e.reverse&&"revenue"===e.sortColumn}]),style:{"margin-right":"3.5px"}},null,2),Object(i["createElementVNode"])("span",J,Object(i["toDisplayString"])(e.translate("General_ColumnRevenue")),1)],2)):Object(i["createCommentVNode"])("",!0),Object(i["createElementVNode"])("th",{id:"evolution",class:Object(i["normalizeClass"])({columnSorted:e.evolutionSelector===e.sortColumn}),colspan:e.showSparklines?2:1},[Object(i["createElementVNode"])("span",{class:Object(i["normalizeClass"])(["arrow",{multisites_asc:!e.reverse&&e.evolutionSelector===e.sortColumn,multisites_desc:e.reverse&&e.evolutionSelector===e.sortColumn}]),style:{"margin-right":"3.5px"}},null,2),Object(i["createElementVNode"])("span",{class:"evolution",onClick:t[4]||(t[4]=function(t){return e.sortBy(e.evolutionSelector)}),style:{"margin-right":"3.5px"}},Object(i["toDisplayString"])(e.translate("MultiSites_Evolution")),1),Object(i["createElementVNode"])("select",{class:"selector browser-default",id:"evolution_selector",value:e.evolutionSelector,onChange:t[5]||(t[5]=function(t){e.evolutionSelector=t.target.value,e.sortBy(e.evolutionSelector)})},[Object(i["createElementVNode"])("option",q,Object(i["toDisplayString"])(e.translate("General_ColumnNbVisits")),1),Object(i["createElementVNode"])("option",W,Object(i["toDisplayString"])(e.translate("General_ColumnPageviews")),1),e.displayRevenueColumn?(Object(i["openBlock"])(),Object(i["createElementBlock"])("option",K,Object(i["toDisplayString"])(e.translate("General_ColumnRevenue")),1)):Object(i["createCommentVNode"])("",!0)],40,F)],10,H)])]),e.isLoading?(Object(i["openBlock"])(),Object(i["createElementBlock"])("tbody",$,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("td",Y,[Object(i["createVNode"])(c,{"loading-message":e.loadingMessage,loading:e.isLoading},null,8,["loading-message","loading"])])])])):Object(i["createCommentVNode"])("",!0),e.isLoading?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("tbody",Q,[e.errorLoadingSites?(Object(i["openBlock"])(),Object(i["createElementBlock"])("tr",X,[Object(i["createElementVNode"])("td",Z,[Object(i["createElementVNode"])("div",ee,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),te,ne,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_NeedMoreHelp"))+" ",1),Object(i["createElementVNode"])("a",re,Object(i["toDisplayString"])(e.translate("General_Faq")),1),ae,Object(i["createElementVNode"])("a",oe,Object(i["toDisplayString"])(e.translate("Feedback_CommunityHelp")),1),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null," – ",512),[[i["vShow"],e.areAdsForProfessionalServicesEnabled]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{rel:"noreferrer noopener",target:"_blank",href:e.professionalHelpUrl},Object(i["toDisplayString"])(e.translate("Feedback_ProfessionalHelp")),9,ie),[[i["vShow"],e.areAdsForProfessionalServicesEnabled]]),se])])])):Object(i["createCommentVNode"])("",!0),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.sites,(function(t){return Object(i["openBlock"])(),Object(i["createBlock"])(u,{key:t.idsite,website:t,"evolution-metric":e.evolutionSelector,"date-sparkline":e.dateSparkline,"show-sparklines":e.showSparklines,metric:e.sortColumn,"display-revenue-column":e.displayRevenueColumn},null,8,["website","evolution-metric","date-sparkline","show-sparklines","metric","display-revenue-column"])})),128))])),Object(i["createElementVNode"])("tfoot",null,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("td",le,[Object(i["createElementVNode"])("div",ce,[Object(i["createElementVNode"])("div",ue,[e.hasSuperUserAccess?(Object(i["openBlock"])(),Object(i["createElementBlock"])("a",{key:0,href:e.addSiteUrl},[be,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_AddSite")),1)],8,de)):Object(i["createCommentVNode"])("",!0)]),Object(i["createElementVNode"])("div",me,[Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{id:"prev",class:"previous dataTablePrevious",onClick:t[6]||(t[6]=function(t){return e.previousPage()})},[Object(i["createElementVNode"])("span",pe,"« "+Object(i["toDisplayString"])(e.translate("General_Previous")),1)],512),[[i["vShow"],!(0===e.currentPage)]]),Object(i["createElementVNode"])("span",ve,[Object(i["createElementVNode"])("span",fe,Object(i["toDisplayString"])(e.translate("General_Pagination",e.paginationLowerBound,e.paginationUpperBound,e.numberOfFilteredSites)),1)]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{id:"next",class:"next dataTableNext",onClick:t[7]||(t[7]=function(t){return e.nextPage()})},[Object(i["createElementVNode"])("span",he,Object(i["toDisplayString"])(e.translate("General_Next"))+" »",1)],512),[[i["vShow"],!(e.currentPage>=e.numberOfPages)]])]),ge])])]),Object(i["createElementVNode"])("tr",Oe,[Object(i["createElementVNode"])("td",je,[Object(i["createElementVNode"])("div",Se,[Object(i["createElementVNode"])("div",_e,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text",onKeydown:t[8]||(t[8]=Object(i["withKeys"])((function(t){return e.searchSite(e.searchTerm)}),["enter"])),"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.searchTerm=t}),placeholder:e.translate("Actions_SubmenuSitesearch")},null,40,ye),[[i["vModelText"],e.searchTerm]]),Object(i["createElementVNode"])("span",{class:"icon-search search_ico",onClick:t[10]||(t[10]=function(t){return e.searchSite(e.searchTerm)}),title:e.translate("General_ClickToSearch")},null,8,we)])])])])])])])}function Ve(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ne(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Ee(e,t,n){return t&&Ne(e.prototype,t),n&&Ne(e,n),e}function Ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var Be=window,Me=Be.NumberFormatter,Pe=function(){function e(){var t=this;Ve(this,e),Ce(this,"privateState",Object(i["reactive"])({sites:[],isLoading:!1,pageSize:25,currentPage:0,totalVisits:"?",totalPageviews:"?",totalActions:"?",totalRevenue:"?",searchTerm:"",lastVisits:"?",lastVisitsDate:"?",numberOfSites:0,loadingMessage:Object(o["translate"])("MultiSites_LoadingWebsites"),reverse:!0,sortColumn:"nb_visits",refreshInterval:0,errorLoadingSites:!1})),Ce(this,"refreshTimeout",null),Ce(this,"fetchAbort",null),Ce(this,"state",Object(i["computed"])((function(){return Object(i["readonly"])(t.privateState)}))),Ce(this,"numberOfFilteredSites",Object(i["computed"])((function(){return t.state.value.numberOfSites}))),Ce(this,"numberOfPages",Object(i["computed"])((function(){return Math.ceil(t.numberOfFilteredSites.value/t.state.value.pageSize-1)}))),Ce(this,"currentPagingOffset",Object(i["computed"])((function(){return Math.ceil(t.state.value.currentPage*t.state.value.pageSize)}))),Ce(this,"paginationLowerBound",Object(i["computed"])((function(){return t.currentPagingOffset.value+1}))),Ce(this,"paginationUpperBound",Object(i["computed"])((function(){var e=t.currentPagingOffset.value+t.state.value.pageSize,n=t.numberOfFilteredSites.value;return e>n&&(e=n),e})))}return Ee(e,[{key:"cancelRefereshInterval",value:function(){this.refreshTimeout&&(clearTimeout(this.refreshTimeout),this.refreshTimeout=null)}},{key:"updateWebsitesList",value:function(e){var t=this;if(e){var n=e.sites;n.forEach((function(e){if(1!==e.ratio&&"1"!==e.ratio){var n=Me.formatPercent(Math.round(100*parseInt(e.ratio,10))),r=null,a="0",i="0",s="0",l="0";if("nb_visits"!==t.state.value.sortColumn&&"visits_evolution"!==t.state.value.sortColumn||(a=Me.formatNumber(e.previous_nb_visits),i=Me.formatNumber(e.nb_visits),s=Me.formatPercent(e.visits_evolution),r=Object(o["translate"])("General_ColumnNbVisits"),l=Me.formatNumber(Math.round(parseInt(e.previous_nb_visits,10)*parseInt(e.ratio,10)))),"pageviews_evolution"===t.state.value.sortColumn&&(a="".concat(e.previous_Actions_nb_pageviews),i="".concat(e.nb_pageviews),s=Me.formatPercent(e.pageviews_evolution),r=Object(o["translate"])("General_ColumnPageviews"),l=Me.formatNumber(Math.round(parseInt(e.previous_Actions_nb_pageviews,10)*parseInt(e.ratio,10)))),"revenue_evolution"===t.state.value.sortColumn&&(a=Me.formatCurrency(e.previous_Goal_revenue,e.currencySymbol),i=Me.formatCurrency(e.revenue,e.currencySymbol),s=Me.formatPercent(e.revenue_evolution),r=Object(o["translate"])("General_ColumnRevenue"),l=Me.formatCurrency(Math.round(parseInt(e.previous_Goal_revenue,10)*parseInt(e.ratio,10)),e.currencySymbol)),r)switch(e.tooltip="".concat(Object(o["translate"])("MultiSites_EvolutionComparisonIncomplete",[n]),"\n"),e.tooltip+="".concat(Object(o["translate"])("MultiSites_EvolutionComparisonProportional",[n,"".concat(l),r,"".concat(a)]),"\n"),e.periodName){case"day":e.tooltip+=Object(o["translate"])("MultiSites_EvolutionComparisonDay",["".concat(i),r,"".concat(l),e.previousRange,"".concat(s)]);break;case"week":e.tooltip+=Object(o["translate"])("MultiSites_EvolutionComparisonWeek",["".concat(i),r,"".concat(l),e.previousRange,"".concat(s)]);break;case"month":e.tooltip+=Object(o["translate"])("MultiSites_EvolutionComparisonMonth",["".concat(i),r,"".concat(l),e.previousRange,"".concat(s)]);break;case"year":e.tooltip+=Object(o["translate"])("MultiSites_EvolutionComparisonYear",["".concat(i),r,"".concat(l),e.previousRange,"".concat(s)]);break;default:break}}})),this.privateState.totalVisits=e.totals.nb_visits,this.privateState.totalPageviews=e.totals.nb_pageviews,this.privateState.totalActions=e.totals.nb_actions,this.privateState.totalRevenue=e.totals.revenue,this.privateState.lastVisits=e.totals.nb_visits_lastdate,this.privateState.sites=n,this.privateState.numberOfSites=e.numSites,this.privateState.lastVisitsDate=e.lastDate}else this.onError()}},{key:"sortBy",value:function(e){this.state.value.sortColumn===e&&(this.privateState.reverse=!this.state.value.reverse),this.privateState.sortColumn=e,this.fetchAllSites()}},{key:"previousPage",value:function(){this.privateState.currentPage=this.state.value.currentPage-1,this.fetchAllSites()}},{key:"nextPage",value:function(){this.privateState.currentPage=this.state.value.currentPage+1,this.fetchAllSites()}},{key:"searchSite",value:function(e){this.privateState.searchTerm=e,this.privateState.currentPage=0,this.fetchAllSites()}},{key:"fetchAllSites",value:function(){var e=this;this.fetchAbort&&(this.fetchAbort.abort(),this.fetchAbort=null,this.cancelRefereshInterval()),this.privateState.isLoading=!0,this.privateState.errorLoadingSites=!1;var t={module:"MultiSites",action:"getAllWithGroups",hideMetricsDoc:"1",filter_sort_order:"asc",filter_limit:this.state.value.pageSize,filter_offset:this.currentPagingOffset.value,showColumns:["label","nb_visits","nb_pageviews","visits_evolution","visits_evolution_trend","pageviews_evolution","pageviews_evolution_trend","revenue_evolution","revenue_evolution_trend","nb_actions,revenue"].join(",")};return this.privateState.searchTerm&&(t.pattern=this.privateState.searchTerm),this.privateState.sortColumn&&(t.filter_sort_column=this.privateState.sortColumn),this.privateState.reverse&&(t.filter_sort_order="desc"),this.fetchAbort=new AbortController,o["AjaxHelper"].fetch(t,{abortController:this.fetchAbort}).then((function(t){e.updateWebsitesList(t)})).catch((function(){e.onError()})).finally((function(){e.privateState.isLoading=!1,e.fetchAbort=null,e.state.value.refreshInterval&&e.state.value.refreshInterval>0&&(e.cancelRefereshInterval(),e.refreshTimeout=setTimeout((function(){e.refreshTimeout=null,e.fetchAllSites()}),1e3*e.state.value.refreshInterval))}))}},{key:"onError",value:function(){this.privateState.errorLoadingSites=!0,this.privateState.sites=[]}},{key:"setRefreshInterval",value:function(e){this.privateState.refreshInterval=e}},{key:"setPageSize",value:function(e){this.privateState.pageSize=e}}]),e}(),Te=new Pe,Ae=Object(i["defineComponent"])({props:{displayRevenueColumn:Boolean,showSparklines:Boolean,dateSparkline:String,pageSize:Number,autoRefreshTodayReport:Number},components:{EnrichedHeadline:o["EnrichedHeadline"],ActivityIndicator:o["ActivityIndicator"],MultisitesSite:x},data:function(){return{evolutionSelector:"visits_evolution",searchTerm:""}},created:function(){this.pageSize&&Te.setPageSize(this.pageSize),this.refresh(this.autoRefreshTodayReport)},methods:{refresh:function(e){Te.setRefreshInterval(e),Te.fetchAllSites()},sortBy:function(e){Te.sortBy(e)},previousPage:function(){Te.previousPage()},nextPage:function(){Te.nextPage()},searchSite:function(){Te.searchSite(this.searchTerm)}},computed:{hasSuperUserAccess:function(){return o["Matomo"].hasSuperUserAccess},date:function(){return o["MatomoUrl"].urlParsed.value.date},idSite:function(){return o["MatomoUrl"].urlParsed.value.idSite},url:function(){return o["Matomo"].piwik_url},period:function(){return o["Matomo"].period},areAdsForProfessionalServicesEnabled:function(){return o["Matomo"].config&&o["Matomo"].config.are_ads_enabled},sortColumn:function(){return Te.state.value.sortColumn},reverse:function(){return Te.state.value.reverse},smallTitleContent:function(){var e=Te.state.value;return Object(o["translate"])("General_TotalVisitsPageviewsActionsRevenue","<strong>".concat(e.totalVisits,"</strong>"),"<strong>".concat(e.totalPageviews,"</strong>"),"<strong>".concat(e.totalActions,"</strong>"),"<strong>".concat(e.totalRevenue,"</strong>"))},smallTitleTooltip:function(){var e=Te.state.value;return Object(o["translate"])("General_EvolutionSummaryGeneric",Object(o["translate"])("General_NVisits","".concat(e.totalVisits)),this.date,"".concat(e.lastVisits),e.lastVisitsDate,Object(o["getFormattedEvolution"])(e.totalVisits,e.lastVisits))},loadingMessage:function(){return Te.state.value.loadingMessage},isLoading:function(){return Te.state.value.isLoading},errorLoadingSites:function(){return Te.state.value.errorLoadingSites},sites:function(){return Te.state.value.sites},numberOfPages:function(){return Te.numberOfPages.value},currentPage:function(){return Te.state.value.currentPage},paginationLowerBound:function(){return Te.paginationLowerBound.value},paginationUpperBound:function(){return Te.paginationUpperBound.value},numberOfFilteredSites:function(){return Te.numberOfFilteredSites.value},professionalHelpUrl:function(){return"https://matomo.org/support-plans/?pk_campaign=Help&pk_medium=AjaxError&pk_content=MultiSites&pk_source=Matomo_App"},addSiteUrl:function(){return"index.php?module=SitesManager&action=index&showaddsite=1&period=".concat(this.period,"&")+"date=".concat(this.date,"&idSite=").concat(this.idSite)}}});Ae.render=ke;var De=Ae;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(o["createAngularJsAdapter"])({component:De,scope:{displayRevenueColumn:{angularJsBind:"@",transform:o["transformAngularJsBoolAttr"]},showSparklines:{angularJsBind:"@",transform:o["transformAngularJsBoolAttr"]},dateSparkline:{angularJsBind:"@"},pageSize:{angularJsBind:"@",transform:o["transformAngularJsIntAttr"]},autoRefreshTodayReport:{angularJsBind:"@",transform:o["transformAngularJsIntAttr"]}},directiveName:"piwikMultisitesDashboard"})}})}));
+//# sourceMappingURL=MultiSites.umd.min.js.map \ No newline at end of file
diff --git a/plugins/MultiSites/vue/dist/umd.metadata.json b/plugins/MultiSites/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..9ecfcc0456
--- /dev/null
+++ b/plugins/MultiSites/vue/dist/umd.metadata.json
@@ -0,0 +1,5 @@
+{
+ "dependsOn": [
+ "CoreHome"
+ ]
+} \ No newline at end of file
diff --git a/plugins/MultiSites/vue/src/Dashboard/Dashboard.adapter.ts b/plugins/MultiSites/vue/src/Dashboard/Dashboard.adapter.ts
new file mode 100644
index 0000000000..5db60f3d24
--- /dev/null
+++ b/plugins/MultiSites/vue/src/Dashboard/Dashboard.adapter.ts
@@ -0,0 +1,39 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import {
+ createAngularJsAdapter,
+ transformAngularJsBoolAttr,
+ transformAngularJsIntAttr,
+} from 'CoreHome';
+import Dashboard from './Dashboard.vue';
+
+export default createAngularJsAdapter({
+ component: Dashboard,
+ scope: {
+ displayRevenueColumn: {
+ angularJsBind: '@',
+ transform: transformAngularJsBoolAttr,
+ },
+ showSparklines: {
+ angularJsBind: '@',
+ transform: transformAngularJsBoolAttr,
+ },
+ dateSparkline: {
+ angularJsBind: '@',
+ },
+ pageSize: {
+ angularJsBind: '@',
+ transform: transformAngularJsIntAttr,
+ },
+ autoRefreshTodayReport: {
+ angularJsBind: '@',
+ transform: transformAngularJsIntAttr,
+ },
+ },
+ directiveName: 'piwikMultisitesDashboard',
+});
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard.directive.less b/plugins/MultiSites/vue/src/Dashboard/Dashboard.less
index 37d05ce83a..9f9a5f80e4 100644
--- a/plugins/MultiSites/angularjs/dashboard/dashboard.directive.less
+++ b/plugins/MultiSites/vue/src/Dashboard/Dashboard.less
@@ -289,4 +289,8 @@
tfoot td {
border-bottom: 0;
}
+
+ .dataTablePages {
+ margin: 10px 13.5px;
+ }
}
diff --git a/plugins/MultiSites/vue/src/Dashboard/Dashboard.store.ts b/plugins/MultiSites/vue/src/Dashboard/Dashboard.store.ts
new file mode 100644
index 0000000000..2b9080a00c
--- /dev/null
+++ b/plugins/MultiSites/vue/src/Dashboard/Dashboard.store.ts
@@ -0,0 +1,359 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import {
+ reactive,
+ computed,
+ readonly,
+} from 'vue';
+import {
+ AjaxHelper,
+ translate,
+ Site,
+} from 'CoreHome';
+
+interface SiteWithMetrics extends Site {
+ label: string;
+ nb_actions: string|number;
+ nb_pageviews: string|number;
+ nb_visits: string|number;
+ pageviews_evolution: string;
+ revenue: string;
+ revenue_evolution: string;
+ visits_evolution: string;
+ ratio?: number|string;
+ previous_nb_visits?: string|number;
+ previous_Actions_nb_pageviews?: string|number;
+ previous_Goal_revenue?: string|number;
+ currencySymbol: string;
+ periodName: string;
+ previousRange: string;
+ tooltip?: string;
+}
+
+interface SiteTotals {
+ nb_actions: string|number;
+ nb_pageviews: string|number;
+ nb_visits: string|number;
+ nb_visits_lastdate: string|number;
+ revenue: string|number;
+}
+
+interface DashboardStoreState {
+ sites: SiteWithMetrics[];
+ isLoading: boolean;
+ pageSize: number;
+ currentPage: number;
+ totalVisits: string|number;
+ totalPageviews: string|number;
+ totalActions: string|number;
+ totalRevenue: string|number;
+ searchTerm: string;
+ lastVisits: string|number;
+ lastVisitsDate: string;
+ numberOfSites: number;
+ loadingMessage: string;
+ reverse: boolean;
+ sortColumn: string;
+ refreshInterval?: number;
+ errorLoadingSites: boolean;
+}
+
+interface GetAllWithGroupsResponse {
+ lastDate: string;
+ numSites: number;
+ sites: SiteWithMetrics[];
+ totals: SiteTotals;
+}
+
+const { NumberFormatter } = window;
+
+class DashboardStore {
+ private privateState = reactive<DashboardStoreState>({
+ sites: [],
+ isLoading: false,
+ pageSize: 25,
+ currentPage: 0,
+ totalVisits: '?',
+ totalPageviews: '?',
+ totalActions: '?',
+ totalRevenue: '?',
+ searchTerm: '',
+ lastVisits: '?',
+ lastVisitsDate: '?',
+ numberOfSites: 0,
+ loadingMessage: translate('MultiSites_LoadingWebsites'),
+ reverse: true,
+ sortColumn: 'nb_visits',
+ refreshInterval: 0,
+ errorLoadingSites: false,
+ });
+
+ private refreshTimeout: ReturnType<typeof setTimeout>|null = null;
+
+ private fetchAbort: AbortController|null = null;
+
+ readonly state = computed(() => readonly(this.privateState));
+
+ readonly numberOfFilteredSites = computed(() => this.state.value.numberOfSites);
+
+ readonly numberOfPages = computed(
+ () => Math.ceil(this.numberOfFilteredSites.value / this.state.value.pageSize - 1),
+ );
+
+ readonly currentPagingOffset = computed(
+ () => Math.ceil(this.state.value.currentPage * this.state.value.pageSize),
+ );
+
+ readonly paginationLowerBound = computed(() => this.currentPagingOffset.value + 1);
+
+ readonly paginationUpperBound = computed(() => {
+ let end = this.currentPagingOffset.value + this.state.value.pageSize;
+ const max = this.numberOfFilteredSites.value;
+
+ if (end > max) {
+ end = max;
+ }
+
+ return end;
+ });
+
+ cancelRefereshInterval(): void {
+ if (this.refreshTimeout) {
+ clearTimeout(this.refreshTimeout);
+ this.refreshTimeout = null;
+ }
+ }
+
+ updateWebsitesList(report: GetAllWithGroupsResponse): void {
+ if (!report) {
+ this.onError();
+ return;
+ }
+
+ const allSites = report.sites;
+ allSites.forEach((site) => {
+ if (site.ratio !== 1 && site.ratio !== '1') {
+ const percent = NumberFormatter.formatPercent(
+ Math.round(parseInt(site.ratio! as string, 10) * 100),
+ );
+
+ let metricName = null;
+ let previousTotal = '0';
+ let currentTotal = '0';
+ let evolution = '0';
+ let previousTotalAdjusted = '0';
+
+ if (this.state.value.sortColumn === 'nb_visits'
+ || this.state.value.sortColumn === 'visits_evolution'
+ ) {
+ previousTotal = NumberFormatter.formatNumber(site.previous_nb_visits);
+ currentTotal = NumberFormatter.formatNumber(site.nb_visits);
+ evolution = NumberFormatter.formatPercent(site.visits_evolution);
+ metricName = translate('General_ColumnNbVisits');
+ previousTotalAdjusted = NumberFormatter.formatNumber(
+ Math.round(parseInt(site.previous_nb_visits as string, 10)
+ * parseInt(site.ratio as string, 10)),
+ );
+ }
+
+ if (this.state.value.sortColumn === 'pageviews_evolution') {
+ previousTotal = `${site.previous_Actions_nb_pageviews}`;
+ currentTotal = `${site.nb_pageviews}`;
+ evolution = NumberFormatter.formatPercent(site.pageviews_evolution);
+ metricName = translate('General_ColumnPageviews');
+ previousTotalAdjusted = NumberFormatter.formatNumber(
+ Math.round(parseInt(site.previous_Actions_nb_pageviews as string, 10)
+ * parseInt(site.ratio as string, 10)),
+ );
+ }
+
+ if (this.state.value.sortColumn === 'revenue_evolution') {
+ previousTotal = NumberFormatter.formatCurrency(
+ site.previous_Goal_revenue,
+ site.currencySymbol,
+ );
+ currentTotal = NumberFormatter.formatCurrency(site.revenue, site.currencySymbol);
+ evolution = NumberFormatter.formatPercent(site.revenue_evolution);
+ metricName = translate('General_ColumnRevenue');
+ previousTotalAdjusted = NumberFormatter.formatCurrency(
+ Math.round(parseInt(site.previous_Goal_revenue as string, 10)
+ * parseInt(site.ratio as string, 10)),
+ site.currencySymbol,
+ );
+ }
+
+ if (metricName) {
+ site.tooltip = `${translate('MultiSites_EvolutionComparisonIncomplete', [percent])}\n`;
+ site.tooltip += `${translate('MultiSites_EvolutionComparisonProportional', [
+ percent,
+ `${previousTotalAdjusted}`,
+ metricName,
+ `${previousTotal}`,
+ ])}\n`;
+
+ switch (site.periodName) {
+ case 'day':
+ site.tooltip += translate('MultiSites_EvolutionComparisonDay', [
+ `${currentTotal}`,
+ metricName,
+ `${previousTotalAdjusted}`,
+ site.previousRange,
+ `${evolution}`,
+ ]);
+ break;
+
+ case 'week':
+ site.tooltip += translate('MultiSites_EvolutionComparisonWeek', [
+ `${currentTotal}`,
+ metricName,
+ `${previousTotalAdjusted}`,
+ site.previousRange,
+ `${evolution}`,
+ ]);
+ break;
+
+ case 'month':
+ site.tooltip += translate('MultiSites_EvolutionComparisonMonth', [
+ `${currentTotal}`,
+ metricName,
+ `${previousTotalAdjusted}`,
+ site.previousRange,
+ `${evolution}`,
+ ]);
+ break;
+
+ case 'year':
+ site.tooltip += translate('MultiSites_EvolutionComparisonYear', [
+ `${currentTotal}`,
+ metricName,
+ `${previousTotalAdjusted}`,
+ site.previousRange,
+ `${evolution}`,
+ ]);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ });
+ this.privateState.totalVisits = report.totals.nb_visits;
+ this.privateState.totalPageviews = report.totals.nb_pageviews;
+ this.privateState.totalActions = report.totals.nb_actions;
+ this.privateState.totalRevenue = report.totals.revenue;
+ this.privateState.lastVisits = report.totals.nb_visits_lastdate;
+ this.privateState.sites = allSites;
+ this.privateState.numberOfSites = report.numSites;
+ this.privateState.lastVisitsDate = report.lastDate;
+ }
+
+ sortBy(metric: string): void {
+ if (this.state.value.sortColumn === metric) {
+ this.privateState.reverse = !this.state.value.reverse;
+ }
+
+ this.privateState.sortColumn = metric;
+ this.fetchAllSites();
+ }
+
+ previousPage(): void {
+ this.privateState.currentPage = this.state.value.currentPage - 1;
+ this.fetchAllSites();
+ }
+
+ nextPage(): void {
+ this.privateState.currentPage = this.state.value.currentPage + 1;
+ this.fetchAllSites();
+ }
+
+ searchSite(term: string): void {
+ this.privateState.searchTerm = term;
+ this.privateState.currentPage = 0;
+ this.fetchAllSites();
+ }
+
+ fetchAllSites(): Promise<void> {
+ if (this.fetchAbort) {
+ this.fetchAbort.abort();
+ this.fetchAbort = null;
+
+ this.cancelRefereshInterval();
+ }
+
+ this.privateState.isLoading = true;
+ this.privateState.errorLoadingSites = false;
+ const params: QueryParameters = {
+ module: 'MultiSites',
+ action: 'getAllWithGroups',
+ hideMetricsDoc: '1',
+ filter_sort_order: 'asc',
+ filter_limit: this.state.value.pageSize,
+ filter_offset: this.currentPagingOffset.value,
+ showColumns: [
+ 'label',
+ 'nb_visits',
+ 'nb_pageviews',
+ 'visits_evolution',
+ 'visits_evolution_trend',
+ 'pageviews_evolution',
+ 'pageviews_evolution_trend',
+ 'revenue_evolution',
+ 'revenue_evolution_trend',
+ 'nb_actions,revenue',
+ ].join(','),
+ };
+
+ if (this.privateState.searchTerm) {
+ params.pattern = this.privateState.searchTerm;
+ }
+
+ if (this.privateState.sortColumn) {
+ params.filter_sort_column = this.privateState.sortColumn;
+ }
+
+ if (this.privateState.reverse) {
+ params.filter_sort_order = 'desc';
+ }
+
+ this.fetchAbort = new AbortController();
+ return AjaxHelper.fetch<GetAllWithGroupsResponse>(
+ params,
+ { abortController: this.fetchAbort },
+ ).then((response) => {
+ this.updateWebsitesList(response);
+ }).catch(() => {
+ this.onError();
+ }).finally(() => {
+ this.privateState.isLoading = false;
+ this.fetchAbort = null;
+
+ if (this.state.value.refreshInterval && this.state.value.refreshInterval > 0) {
+ this.cancelRefereshInterval();
+ this.refreshTimeout = setTimeout(() => {
+ this.refreshTimeout = null;
+ this.fetchAllSites();
+ }, this.state.value.refreshInterval! * 1000);
+ }
+ });
+ }
+
+ private onError(): void {
+ this.privateState.errorLoadingSites = true;
+ this.privateState.sites = [];
+ }
+
+ setRefreshInterval(interval?: number): void {
+ this.privateState.refreshInterval = interval;
+ }
+
+ setPageSize(pageSize: number): void {
+ this.privateState.pageSize = pageSize;
+ }
+}
+
+export default new DashboardStore();
diff --git a/plugins/MultiSites/vue/src/Dashboard/Dashboard.vue b/plugins/MultiSites/vue/src/Dashboard/Dashboard.vue
new file mode 100644
index 0000000000..00eafbb225
--- /dev/null
+++ b/plugins/MultiSites/vue/src/Dashboard/Dashboard.vue
@@ -0,0 +1,407 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div>
+ <h2 class="card-title">
+ <EnrichedHeadline
+ help-url="https://matomo.org/docs/manage-websites/#all-websites-dashboard"
+ :feature-name="translate('General_AllWebsitesDashboard')"
+ >
+ {{ translate('General_AllWebsitesDashboard') }}
+ <span
+ class="smallTitle"
+ v-html="$sanitize(this.smallTitleContent)"
+ :title="smallTitleTooltip"
+ >
+ </span>
+ </EnrichedHeadline>
+ </h2>
+ <table
+ id="mt"
+ class="dataTable card-table"
+ cellspacing="0"
+ >
+ <thead>
+ <tr>
+ <th
+ id="names"
+ class="label"
+ @click="sortBy('label')"
+ :class="{columnSorted: 'label' === sortColumn}"
+ >
+ <span class="heading">{{ translate('General_Website') }}</span>
+ <span
+ class="arrow"
+ :class="{
+ multisites_asc: !reverse && 'label' === sortColumn,
+ multisites_desc: reverse && 'label' === sortColumn,
+ }"
+ style="margin-left: 3.5px"
+ />
+ </th>
+ <th
+ id="visits"
+ class="multisites-column"
+ @click="sortBy('nb_visits')"
+ :class="{columnSorted: 'nb_visits' === sortColumn}"
+ >
+ <span
+ class="arrow"
+ :class="{
+ multisites_asc: !reverse && 'nb_visits' === sortColumn,
+ multisites_desc: reverse && 'nb_visits' === sortColumn,
+ }"
+ style="margin-right: 3.5px"
+ />
+ <span class="heading">{{ translate('General_ColumnNbVisits') }}</span>
+ </th>
+ <th
+ id="pageviews"
+ class="multisites-column"
+ @click="sortBy('nb_pageviews')"
+ :class="{columnSorted: 'nb_pageviews' === sortColumn}"
+ >
+ <span
+ class="arrow"
+ :class="{
+ multisites_asc: !reverse && 'nb_pageviews' === sortColumn,
+ multisites_desc: reverse && 'nb_pageviews' === sortColumn,
+ }"
+ style="margin-right: 3.5px"
+ />
+ <span class="heading">{{ translate('General_ColumnPageviews') }}</span>
+ </th>
+ <th
+ id="revenue"
+ class="multisites-column"
+ v-if="displayRevenueColumn"
+ @click="sortBy('revenue')"
+ :class="{columnSorted: 'revenue' === sortColumn}"
+ >
+ <span
+ class="arrow"
+ :class="{
+ multisites_asc: !reverse && 'revenue' === sortColumn,
+ multisites_desc: reverse && 'revenue' === sortColumn,
+ }"
+ style="margin-right: 3.5px"
+ />
+ <span class="heading">{{ translate('General_ColumnRevenue') }}</span>
+ </th>
+ <th
+ id="evolution"
+ :class="{columnSorted: evolutionSelector === sortColumn}"
+ :colspan="showSparklines ? 2 : 1"
+ >
+ <span
+ class="arrow"
+ :class="{
+ multisites_asc: !reverse && evolutionSelector === sortColumn,
+ multisites_desc: reverse && evolutionSelector === sortColumn,
+ }"
+ style="margin-right: 3.5px"
+ />
+ <span
+ class="evolution"
+ @click="sortBy(evolutionSelector)"
+ style="margin-right: 3.5px"
+ > {{ translate('MultiSites_Evolution') }}</span>
+ <select
+ class="selector browser-default"
+ id="evolution_selector"
+ :value="evolutionSelector"
+ @change="evolutionSelector = $event.target.value; sortBy(evolutionSelector)"
+ >
+ <option value="visits_evolution">{{ translate('General_ColumnNbVisits') }}</option>
+ <option value="pageviews_evolution">
+ {{ translate('General_ColumnPageviews') }}
+ </option>
+ <option
+ value="revenue_evolution"
+ v-if="displayRevenueColumn"
+ >
+ {{ translate('General_ColumnRevenue') }}
+ </option>
+ </select>
+ </th>
+ </tr>
+ </thead>
+ <tbody v-if="isLoading">
+ <tr>
+ <td
+ colspan="7"
+ class="allWebsitesLoading"
+ >
+ <ActivityIndicator
+ :loading-message="loadingMessage"
+ :loading="isLoading"
+ />
+ </td>
+ </tr>
+ </tbody>
+ <tbody v-if="!isLoading">
+ <tr v-if="errorLoadingSites">
+ <td colspan="7">
+ <div class="notification system notification-error">
+ {{ translate('General_ErrorRequest', '', '') }}
+ <br /><br />
+ {{ translate('General_NeedMoreHelp') }}
+ <a
+ rel="noreferrer noopener"
+ target="_blank"
+ href="https://matomo.org/faq/troubleshooting/faq_19489/"
+ >{{ translate('General_Faq') }}</a>
+ &#x2013;
+ <a
+ rel="noreferrer noopener"
+ target="_blank"
+ href="https://forum.matomo.org/"
+ >{{ translate('Feedback_CommunityHelp') }}</a>
+ <span v-show="areAdsForProfessionalServicesEnabled"> &#x2013; </span>
+ <a
+ rel="noreferrer noopener"
+ target="_blank"
+ :href="professionalHelpUrl"
+ v-show="areAdsForProfessionalServicesEnabled"
+ >{{ translate('Feedback_ProfessionalHelp') }}</a>.
+ </div>
+ </td>
+ </tr>
+ <MultisitesSite
+ v-for="website in sites"
+ :key="website.idsite"
+ :website="website"
+ :evolution-metric="evolutionSelector"
+ :date-sparkline="dateSparkline"
+ :show-sparklines="showSparklines"
+ :metric="sortColumn"
+ :display-revenue-column="displayRevenueColumn"
+ >
+ </MultisitesSite>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td
+ colspan="8"
+ class="paging"
+ >
+ <div class="row">
+ <div class="col s3 add_new_site">
+ <a
+ :href="addSiteUrl"
+ v-if="hasSuperUserAccess"
+ >
+ <span class="icon-add" /> {{ translate('SitesManager_AddSite') }}
+ </a>
+ </div>
+ <div class="col s6">
+ <span
+ id="prev"
+ class="previous dataTablePrevious"
+ @click="previousPage()"
+ v-show="!(currentPage === 0)"
+ >
+ <span style="cursor:pointer;">&#xAB; {{ translate('General_Previous') }}</span>
+ </span>
+ <span class="dataTablePages">
+ <span id="counter">
+ {{ translate(
+ 'General_Pagination',
+ paginationLowerBound,
+ paginationUpperBound,
+ numberOfFilteredSites,
+ ) }}
+ </span>
+ </span>
+ <span
+ id="next"
+ class="next dataTableNext"
+ @click="nextPage()"
+ v-show="!(currentPage >= numberOfPages)"
+ >
+ <span
+ style="cursor:pointer;"
+ class="pointer"
+ >{{ translate('General_Next') }} &#xBB;</span>
+ </span>
+ </div>
+ <div class="col s3">&nbsp;</div>
+ </div>
+ </td>
+ </tr>
+ <tr row_id="last">
+ <td
+ colspan="8"
+ class="site_search"
+ >
+ <div class="row">
+ <div class="input-field col s12">
+ <input
+ type="text"
+ @keydown.enter="searchSite(searchTerm)"
+ v-model="searchTerm"
+ :placeholder="translate('Actions_SubmenuSitesearch')"
+ />
+ <span
+ class="icon-search search_ico"
+ @click="searchSite(searchTerm)"
+ :title="translate('General_ClickToSearch')"
+ />
+ </div>
+ </div>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ translate,
+ Matomo,
+ EnrichedHeadline,
+ ActivityIndicator,
+ MatomoUrl,
+ getFormattedEvolution,
+} from 'CoreHome';
+import MultisitesSite from '../MultisitesSite/MultisitesSite.vue';
+import DashboardStore from './Dashboard.store';
+
+interface DashboardState {
+ evolutionSelector: string;
+ searchTerm: string;
+}
+
+export default defineComponent({
+ props: {
+ displayRevenueColumn: Boolean,
+ showSparklines: Boolean,
+ dateSparkline: String,
+ pageSize: Number,
+ autoRefreshTodayReport: Number,
+ },
+ components: {
+ EnrichedHeadline,
+ ActivityIndicator,
+ MultisitesSite,
+ },
+ data(): DashboardState {
+ return {
+ evolutionSelector: 'visits_evolution',
+ searchTerm: '',
+ };
+ },
+ created() {
+ if (this.pageSize) {
+ DashboardStore.setPageSize(this.pageSize);
+ }
+ this.refresh(this.autoRefreshTodayReport);
+ },
+ methods: {
+ refresh(interval?: number) {
+ DashboardStore.setRefreshInterval(interval);
+ DashboardStore.fetchAllSites();
+ },
+ sortBy(column: string) {
+ DashboardStore.sortBy(column);
+ },
+ previousPage() {
+ DashboardStore.previousPage();
+ },
+ nextPage() {
+ DashboardStore.nextPage();
+ },
+ searchSite() {
+ DashboardStore.searchSite(this.searchTerm);
+ },
+ },
+ computed: {
+ hasSuperUserAccess() {
+ return Matomo.hasSuperUserAccess;
+ },
+ date() {
+ return MatomoUrl.urlParsed.value.date as string;
+ },
+ idSite() {
+ return MatomoUrl.urlParsed.value.idSite as string;
+ },
+ url() {
+ return Matomo.piwik_url;
+ },
+ period() {
+ return Matomo.period;
+ },
+ areAdsForProfessionalServicesEnabled() {
+ return Matomo.config && Matomo.config.are_ads_enabled;
+ },
+ sortColumn() {
+ return DashboardStore.state.value.sortColumn;
+ },
+ reverse() {
+ return DashboardStore.state.value.reverse;
+ },
+ smallTitleContent() {
+ const state = DashboardStore.state.value;
+ return translate(
+ 'General_TotalVisitsPageviewsActionsRevenue',
+ `<strong>${state.totalVisits}</strong>`,
+ `<strong>${state.totalPageviews}</strong>`,
+ `<strong>${state.totalActions}</strong>`,
+ `<strong>${state.totalRevenue}</strong>`,
+ );
+ },
+ smallTitleTooltip() {
+ const state = DashboardStore.state.value;
+ return translate(
+ 'General_EvolutionSummaryGeneric',
+ translate('General_NVisits', `${state.totalVisits}`),
+ this.date,
+ `${state.lastVisits}`,
+ state.lastVisitsDate,
+ getFormattedEvolution(state.totalVisits, state.lastVisits),
+ );
+ },
+ loadingMessage() {
+ return DashboardStore.state.value.loadingMessage;
+ },
+ isLoading() {
+ return DashboardStore.state.value.isLoading;
+ },
+ errorLoadingSites() {
+ return DashboardStore.state.value.errorLoadingSites;
+ },
+ sites() {
+ return DashboardStore.state.value.sites;
+ },
+ numberOfPages() {
+ return DashboardStore.numberOfPages.value;
+ },
+ currentPage() {
+ return DashboardStore.state.value.currentPage;
+ },
+ paginationLowerBound() {
+ return DashboardStore.paginationLowerBound.value;
+ },
+ paginationUpperBound() {
+ return DashboardStore.paginationUpperBound.value;
+ },
+ numberOfFilteredSites() {
+ return DashboardStore.numberOfFilteredSites.value;
+ },
+ professionalHelpUrl() {
+ return 'https://matomo.org/support-plans/?pk_campaign=Help&pk_medium=AjaxError&pk_content='
+ + 'MultiSites&pk_source=Matomo_App';
+ },
+ addSiteUrl() {
+ return `index.php?module=SitesManager&action=index&showaddsite=1&period=${this.period}&`
+ + `date=${this.date}&idSite=${this.idSite}`;
+ },
+ },
+});
+</script>
diff --git a/plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.adapter.ts b/plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.adapter.ts
new file mode 100644
index 0000000000..5b74aee43f
--- /dev/null
+++ b/plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.adapter.ts
@@ -0,0 +1,34 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import MultisitesSite from './MultisitesSite.vue';
+
+export default createAngularJsAdapter({
+ component: MultisitesSite,
+ scope: {
+ website: {
+ angularJsBind: '=',
+ },
+ evolutionMetric: {
+ angularJsBind: '=',
+ },
+ showSparklines: {
+ angularJsBind: '=',
+ },
+ dateSparkline: {
+ angularJsBind: '=',
+ },
+ displayRevenueColumn: {
+ angularJsBind: '=',
+ },
+ metric: {
+ angularJsBind: '=',
+ },
+ },
+ directiveName: 'piwikMultisitesSite',
+});
diff --git a/plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue b/plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue
new file mode 100644
index 0000000000..ff0171e9f1
--- /dev/null
+++ b/plugins/MultiSites/vue/src/MultisitesSite/MultisitesSite.vue
@@ -0,0 +1,172 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <tr
+ :class="{'groupedWebsite': website.group, 'website': !website.group, 'group': website.isGroup}"
+ >
+ <td
+ class="multisites-label label"
+ v-if="!website.isGroup"
+ >
+ <a
+ title="View reports"
+ class="value truncated-text-line"
+ :href="dashboardUrl(website)"
+ >
+ {{ websiteLabel }}
+ </a>
+ <span>
+ <a
+ rel="noreferrer noopener"
+ target="_blank"
+ :href="website.main_url"
+ :title="translate('General_GoTo', website.main_url)"
+ >
+ <span class="icon icon-outlink" /></a>
+ </span>
+ </td>
+ <td
+ class="multisites-label label"
+ v-if="website.isGroup"
+ >
+ <span class="value">{{ websiteLabel }}</span>
+ </td>
+ <td class="multisites-column">
+ <span class="value">{{ website.nb_visits }}</span>
+ </td>
+ <td class="multisites-column">
+ <span class="value">{{ website.nb_pageviews }}</span>
+ </td>
+ <td
+ class="multisites-column"
+ v-if="displayRevenueColumn"
+ >
+ <span class="value">{{ website.revenue }}</span>
+ </td>
+ <td
+ class="multisites-evolution"
+ v-if="period !== 'range'"
+ :title="website.tooltip"
+ >
+ <div
+ class="visits value"
+ v-if="!website.isGroup"
+ >
+ <span v-show="website[`${evolutionMetric}_trend`] === 1">
+ <img
+ class="multisites_icon"
+ src="plugins/MultiSites/images/arrow_up.png"
+ alt
+ /> <span style="color: green;">{{ website[evolutionMetric] }}</span>
+ </span>
+ <span v-show="website[`${evolutionMetric}_trend`] === 0">
+ <img
+ class="multisites_icon"
+ src="plugins/MultiSites/images/stop.png"
+ alt
+ /> <span>{{ website[evolutionMetric] }}</span>
+ </span>
+ <span v-show="website[`${evolutionMetric}_trend`] === -1">
+ <img
+ class="multisites_icon"
+ src="plugins/MultiSites/images/arrow_down.png"
+ alt
+ /> <span style="color: red;">{{ website[evolutionMetric] }}</span>
+ </span>
+ </div>
+ </td>
+ <td
+ style="width:180px;"
+ v-if="showSparklines"
+ >
+ <div
+ class="sparkline"
+ style="width: 100px; margin: auto;"
+ v-if="!website.isGroup"
+ >
+ <a
+ rel="noreferrer noopener"
+ target="_blank"
+ :href="dashboardUrl(website)"
+ :title="translate('General_GoTo', translate('Dashboard_DashboardOf', websiteLabel))"
+ >
+ <img
+ alt
+ width="100"
+ height="25"
+ :src="sparklineImage(website)"
+ />
+ </a>
+ </div>
+ </td>
+ </tr>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { Matomo, MatomoUrl, Site } from 'CoreHome';
+
+export default defineComponent({
+ props: {
+ website: {
+ type: Object,
+ required: true,
+ },
+ evolutionMetric: {
+ type: String,
+ required: true,
+ },
+ showSparklines: Boolean,
+ dateSparkline: String,
+ displayRevenueColumn: Boolean,
+ metric: String,
+ },
+ methods: {
+ dashboardUrl(website: Site) {
+ return `index.php?module=CoreHome&action=index&date=${this.date}&period=${this.period}`
+ + `&idSite=${website.idsite}${this.tokenParam}`;
+ },
+ sparklineImage(website: Site) {
+ let { metric } = this;
+
+ switch (this.evolutionMetric) {
+ case 'visits_evolution':
+ metric = 'nb_visits';
+ break;
+ case 'pageviews_evolution':
+ metric = 'nb_pageviews';
+ break;
+ case 'revenue_evolution':
+ metric = 'revenue';
+ break;
+ default:
+ break;
+ }
+
+ return `index.php?module=MultiSites&action=getEvolutionGraph&period=${this.period}&date=`
+ + `${this.dateSparkline}&evolutionBy=${metric}&columns=${metric}&idSite=${website.idsite}`
+ + `&idsite=${website.idsite}&viewDataTable=sparkline${this.tokenParam}&colors=`
+ + `${encodeURIComponent(JSON.stringify(Matomo.getSparklineColors()))}`;
+ },
+ },
+ computed: {
+ tokenParam() {
+ const token_auth = MatomoUrl.urlParsed.value.token_auth as string;
+ return token_auth ? `&token_auth=${token_auth}` : '';
+ },
+ period() {
+ return Matomo.period;
+ },
+ date() {
+ return MatomoUrl.urlParsed.value.date as string;
+ },
+ websiteLabel() {
+ return Matomo.helper.htmlDecode(this.website.label);
+ },
+ },
+});
+</script>
diff --git a/plugins/MultiSites/vue/src/index.ts b/plugins/MultiSites/vue/src/index.ts
new file mode 100644
index 0000000000..b7042f0ce9
--- /dev/null
+++ b/plugins/MultiSites/vue/src/index.ts
@@ -0,0 +1,13 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './MultisitesSite/MultisitesSite.adapter';
+import './Dashboard/Dashboard.adapter';
+
+export { default as MultisitesSite } from './MultisitesSite/MultisitesSite.vue';
+export { default as DashboadStore } from './Dashboard/Dashboard.store';
+export { default as Dashboard } from './Dashboard/Dashboard.vue';
diff --git a/plugins/Overlay/Controller.php b/plugins/Overlay/Controller.php
index fb950e1fa6..9f6b905472 100644
--- a/plugins/Overlay/Controller.php
+++ b/plugins/Overlay/Controller.php
@@ -14,12 +14,10 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Metrics;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Plugins\SegmentEditor\SegmentFormatter;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\ProxyHttp;
-use Piwik\Segment;
use Piwik\Session;
use Piwik\Tracker\Action;
use Piwik\Tracker\PageUrl;
diff --git a/plugins/Overlay/Overlay.php b/plugins/Overlay/Overlay.php
index 49a389f359..2528e550aa 100644
--- a/plugins/Overlay/Overlay.php
+++ b/plugins/Overlay/Overlay.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\Overlay;
-use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php b/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php
index 86fd5e09ef..9c005dc620 100644
--- a/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php
+++ b/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php
@@ -8,15 +8,9 @@
*/
namespace Piwik\Plugins\PagePerformance\JqplotDataGenerator;
-use Piwik\Archive\DataTableFactory;
-use Piwik\Common;
use Piwik\DataTable;
-use Piwik\Date;
-use Piwik\Metrics;
use Piwik\Period;
-use Piwik\Period\Factory;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
-use Piwik\Url;
/**
* Generates JQPlot JSON data/config for evolution graphs.
diff --git a/plugins/PagePerformance/Reports/Get.php b/plugins/PagePerformance/Reports/Get.php
index 673a294f83..eb8556ae05 100644
--- a/plugins/PagePerformance/Reports/Get.php
+++ b/plugins/PagePerformance/Reports/Get.php
@@ -12,7 +12,6 @@ use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
-use Piwik\Plugins\Installation\View;
use Piwik\Plugins\PagePerformance\Metrics;
use Piwik\Plugins\PagePerformance\Visualizations\JqplotGraph\StackedBarEvolution;
use Piwik\Plugins\PagePerformance\Visualizations\PerformanceColumns;
diff --git a/plugins/PrivacyManager/Controller.php b/plugins/PrivacyManager/Controller.php
index 1c3521163b..d2120f1f2e 100644
--- a/plugins/PrivacyManager/Controller.php
+++ b/plugins/PrivacyManager/Controller.php
@@ -11,12 +11,10 @@ namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
-use Piwik\DataTable\Renderer\Json;
use Piwik\Date;
use Piwik\Db;
use Piwik\Metrics\Formatter;
use Piwik\Nonce;
-use Piwik\Notification;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
diff --git a/plugins/PrivacyManager/Dao/LogDataAnonymizer.php b/plugins/PrivacyManager/Dao/LogDataAnonymizer.php
index 0ddf6c8ef2..23d3f37b61 100644
--- a/plugins/PrivacyManager/Dao/LogDataAnonymizer.php
+++ b/plugins/PrivacyManager/Dao/LogDataAnonymizer.php
@@ -17,7 +17,6 @@ use Piwik\Plugins\PrivacyManager\IPAnonymizer;
use Piwik\Plugins\PrivacyManager\Tracker\RequestProcessor;
use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\Plugins\UserCountry\VisitorGeolocator;
-use Piwik\SettingsPiwik;
use Piwik\Tracker\Model;
use Exception;
diff --git a/plugins/PrivacyManager/ReferrerAnonymizer.php b/plugins/PrivacyManager/ReferrerAnonymizer.php
index c27b6be252..2790994407 100644
--- a/plugins/PrivacyManager/ReferrerAnonymizer.php
+++ b/plugins/PrivacyManager/ReferrerAnonymizer.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig;
class ReferrerAnonymizer
{
diff --git a/plugins/PrivacyManager/SystemSettings.php b/plugins/PrivacyManager/SystemSettings.php
index 611a3d2786..7d0f4e6b9a 100644
--- a/plugins/PrivacyManager/SystemSettings.php
+++ b/plugins/PrivacyManager/SystemSettings.php
@@ -8,10 +8,7 @@
*/
namespace Piwik\Plugins\PrivacyManager;
-use Piwik\Container\StaticContainer;
-use Piwik\Log;
use Piwik\Piwik;
-use Piwik\Plugin\Manager;
use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Settings\FieldConfig;
diff --git a/plugins/PrivacyManager/lang/ca.json b/plugins/PrivacyManager/lang/ca.json
index 549a4cc398..71e392426b 100644
--- a/plugins/PrivacyManager/lang/ca.json
+++ b/plugins/PrivacyManager/lang/ca.json
@@ -1,42 +1,189 @@
{
"PrivacyManager": {
- "AnonymizeIpInlineHelp": "Anonimitzar el(s) últim(s) de la IP de les adreces dels visitants per complir amb la vostra política de privacitat/llei.",
+ "AddUserIdToSearch": "Feu clic per afegir aquest ID d'usuari a la cerca",
+ "AddVisitorIPToSearch": "Feu clic per afegir aquesta IP del visitant a la cerca",
+ "AddVisitorIdToSearch": "Feu clic per afegir aquest ID de visitant a la cerca",
+ "AnonymizeData": "Anonimitzar les dades",
+ "AnonymizeDataConfirm": "Esteu segur que voleu anonimitzar les dades dels llocs web i l'interval de temps seleccionats? Aquesta acció no es pot desfer, les dades es poden suprimir segons se sol·liciti i aquest procés pot trigar molt de temps.",
+ "AnonymizeDataNow": "Anonimitzar les dades anteriors del lloc i l'hora seleccionats",
+ "AnonymizeIp": "Anonimitzar IP",
+ "AnonymizeIpDescription": "Seleccioneu \"Si\" si voleu que Matomo no faci un seguiment d'adreces IP completes.",
+ "AnonymizeIpExtendedHelp": "Quan els usuaris visitin el vostre lloc web, Matomo no utilitzarà l'adreça IP completa (com ara %1$s), sinó que Matomo l'anonimitzarà primer (a %2$s). L'anonimització de l'adreça IP és un dels requisits establerts per les lleis de privadesa d'alguns països com Alemanya.",
+ "AnonymizeIpHelp": "Aquesta acció no es pot desfer. Si s'habilita, per a totes les visites durant aquest període la IP quedarà emmascarada en almenys 2 bytes, per exemple, \"192.168.xxx.xxx\". Si heu configurat la màscara en 3 bytes, es respectarà aquesta configuració i totes les IP seran emmascarades en 3 bytes.",
+ "AnonymizeIpInlineHelp": "Emmascara els darrers bytes de les adreces IP dels visitants per complir amb les lleis/directrius de privadesa locals.",
+ "AnonymizeIpMaskFully": "Emmascarar completament les adreces IP",
"AnonymizeIpMaskLengtDescription": "Seleccioneu quans bytes de l'adreça IP del visitant voleu enmascarar.",
"AnonymizeIpMaskLength": "%1$s byte(s) - p.e. %2$s",
+ "AnonymizeLocation": "Anonimitzar la ubicació",
+ "AnonymizeLocationHelp": "Aquesta acció no es pot desfer. Torna a avaluar la ubicació en funció de la IP anonimitzada (almenys 2 bytes de la IP seran anonimitzats).",
+ "AnonymizeOrderIdNote": "Com que un identificador de comanda es pot creuar amb un altre sistema, normalment una botiga de comerç electrònic, l'identificador de la comanda pot comptar com a informació personal segons el RGPD. Quan activeu aquesta opció, un identificador de comanda es convertirà automàticament en anònim, de manera que no es farà un seguiment de cap informació personal.",
+ "AnonymizeProcessInfo": "Aquesta acció pot trigar molt de temps i, per tant, no s'executarà immediatament. A continuació podreu seguir l'estat actual del procés. Normalment l'anonimització hauria de començar en una hora.",
+ "AnonymizeReferrer": "Anonimitzar el referent",
+ "AnonymizeReferrerExcludeAll": "No enregistreu l'URL de referent, però detecteu igualment el tipus de referent",
+ "AnonymizeReferrerExcludeNone": "No anonimitzeu el referent",
+ "AnonymizeReferrerExcludePath": "Conserveu només el domini d'una URL de referent",
+ "AnonymizeReferrerExcludeQuery": "Elimineu els paràmetres de consulta de l'URL de referent",
+ "AnonymizeReferrerNote": "Matomo emmagatzema des de quina URL (referent) arriba un usuari al vostre lloc. En alguns casos aquesta URL pot contenir informació que es pot considerar informació personal. Si voleu evitar que es faci un seguiment d'aquesta informació podeu restringir la quantitat de dades de referència que Matomo emmagatzemarà quan un visitant entri al vostre lloc web. Com més informació s'elimini de la informació de referència, menys probable és que es registri la informació personal. Com més informació suprimiu del referent, menys clar serà com va arribar un visitant al vostre lloc web.",
+ "AnonymizeRowDataFrom": "Anonimitzar totes les dades en brut a partir de:",
+ "AnonymizeRowDataTo": "Anonimitzar totes les dades en brut fins a:",
+ "AnonymizeSites": "Anonimitzar les dades d'aquest(s) lloc(s)",
+ "AnonymizeUserId": "Substituïr l'identificador d'usuari per un pseudònim",
+ "AnonymizeUserIdHelp": "Quan activeu aquesta opció, l'identificador d'usuari es substituirà per un pseudònim per evitar que s'emmagatzemi i es mostri directament informació d'identificació personal, com ara una adreça de correu electrònic. En termes tècnics: donat el vostre ID d'usuari, Matomo processarà el pseudònim de l'ID d'usuari mitjançant una funció hash salada.<br><br><em>Nota: substituir per un pseudònim no és el mateix que anonimitzar. En termes de RGPD: el pseudònim de l'identificador d'usuari encara compta com a dades personals. L'identificador d'usuari original encara es podria identificar si hi ha certa informació addicional disponible (a la qual només tenen accés Matomo i el seu processador de dades).</em>",
+ "AskingForConsent": "Demanant consentiment",
+ "AwarenessDocumentation": "Conscienciació i documentació",
+ "AwarenessDocumentationDesc1": "Informeu els vostres visitants mitjançant un avís de privadesa clar sempre que recolliu dades personals.",
+ "AwarenessDocumentationDesc2": "Informeu els vostres usuaris a la vostra política de privadesa sobre quines dades recopileu i com s'utilitzen.",
+ "AwarenessDocumentationDesc3": "Feu que el vostre equip sàpiga que utilitzeu Matomo Analytics i %1$squines dades està recopilant la vostra plataforma d'anàlisi%2$s.",
+ "AwarenessDocumentationDesc4": "Documenteu el vostre ús de Matomo al vostre %1$sregistre d'actius d'informació%2$s.",
+ "AwarenessDocumentationIntro": "Informeu els vostres usuaris de manera clara i transparent, i feu que els vostres companys coneguin les dades que es recullen i com s'utilitzen:",
+ "BackgroundColor": "Color de fons",
"ClickHereSettings": "Feu clic aquí per accedir a la configuració de %s.",
- "CurrentDBSize": "Tamany actual de la Base de dades",
+ "ConsentExplanation": "El consentiment significa oferir a les persones opció i control sobre com es tracten les seves dades personals.",
+ "CurrentDBSize": "Mida actual de la base de dades",
"DBPurged": "Base de dades esporgada.",
- "DeleteDataInterval": "Esborrar la informació antiga cada",
- "DeleteDataSettings": "Eliminar el registre de visitants i informes antics",
- "DeleteLogDescription2": "Quan activeu l'eliminació automàtica us heu d'asegurar que tots els informes diaris han estat processats, així no perdeu informació.",
- "DeleteLogsOlderThan": "Eliminar elsb registres anterior a",
- "DeleteMaxRows": "Nombre màxim de files per eliminar en una sola execució:",
+ "DataRetention": "Retenció de dades",
+ "DataRetentionInMatomo": "Retenció de dades per a les dades emmagatzemades a Matomo:",
+ "DataRetentionOverall": "La taxa de retenció de dades global de la vostra política de privadesa és la taxa de retenció de dades en brut. Tingueu en compte que els informes agregats també poden contenir dades personals. Si utilitzeu funcions com l'identificador d'usuari, les variables personalitzades, la dimensió personalitzada o feu un seguiment de les dades personals d'altres maneres, com ara esdeveniments, URL de pàgines o títols de pàgines, etc., la taxa de retenció de dades global de la vostra política de privadesa serà la més alta de les dues.",
+ "DeleteAggregateReportsDetailedInfo": "Quan activeu aquesta configuració se suprimiran tots els informes agregats. Els informes agregats es generen a partir de les dades en brut i representen dades agregades de diverses visites individuals. Per exemple, l'informe \"País\" mostra les xifres agregades per veure quantes visites heu rebut de cada país.",
+ "DeleteBothConfirm": "Esteu a punt d'activar tant la supressió de dades en brut com la supressió de dades d'informes. Això suprimirà permanentment la vostra capacitat de veure dades d'anàlisi antigues. Esteu segur que voleu fer-ho?",
+ "DeleteDataDescription": "Podeu configurar Matomo per eliminar regularment dades en brut antigues i/o informes agregats per mantenir la vostra base de dades petita o per complir les regulacions de privadesa com ara el RGPD.",
+ "DeleteDataInterval": "Suprimeix les dades antigues cada",
+ "DeleteDataSettings": "Suprimeix els registres i els informes antics de visitants",
+ "DeleteLogDescription2": "Quan activeu l'eliminació automàtica del registre heu d'assegurar-vos que s'han processat tots els informes diaris anteriors, de manera que no es perdi cap dada.",
+ "DeleteLogsConfirm": "Esteu a punt d'activar la supressió de dades en brut. Si s'eliminen les dades en brut antigues i els informes encara no s'han creat, no podreu veure les dades històriques d'anàlisi del passat. Esteu segur que voleu fer-ho?",
+ "DeleteLogsOlderThan": "Suprimeix els registres anteriors a",
+ "DeleteMaxRows": "Nombre màxim de files per suprimir en una execució:",
"DeleteMaxRowsNoLimit": "sense límit",
- "DeleteReportsConfirm": "Esteu a punt d'activar l'eliminació de la informació dels informes. Si els informes antics s'eliminen, haure de tornar-los a procesar per veure'ls. Esteu segur que voleu fer això?",
- "DeleteReportsOlderThan": "Elmina els informes anteriors a",
- "DoNotTrack_Description": "La tecnologia de no traquejar permet als usuris donar-se de baixa de les estadístiques pels llocs web que ells no visiten, incloïent els serveis analítiques, les xarxes públicitaries i els xarxes socials.",
- "DoNotTrack_Disable": "Desactiveu el suport de No seguiment",
- "DoNotTrack_Enable": "Activeu el suport per la desactivació del restreig",
- "DoNotTrack_Enabled": "Actualment esteu respectant la privadesa dels vostres usuaris, bravo!",
- "DoNotTrack_SupportDNTPreference": "Suportar la configuració de No Rastreig",
- "EstimatedDBSizeAfterPurge": "Tamany de la base de dades desprès de la purga",
- "EstimatedSpaceSaved": "Tamany estalviat (estimació)",
- "GeolocationAnonymizeIpNote": "Nota: La geocalitazció tindrà els mateixos resultats amb 1 bit anònim. Amb 2 bits o més, la geocalització no serà acurada.",
- "GetPurgeEstimate": "Obtenir l'estimació de la purga",
- "KeepBasicMetrics": "Conserveu les mètriques bàsiques ( visites, pàgines vistes, raó de rebot, conversió d'objectius, conversións ecommerce, etc.)",
- "KeepReportSegments": "Per a les dades conservades anteriorment, també conserveu informes segmentats",
- "LastDelete": "La última eliminació va ser el",
- "LeastDaysInput": "Siusplau especifieu un nombre de díes més gran que %s.",
- "LeastMonthsInput": "Siusplau, especifiqueu un nombre de dies més gran que %s.",
- "MenuPrivacySettings": "Privacitat",
- "NextDelete": "La pròxima eliminació programada el",
- "PurgeNow": "Purga la BD ara",
- "PurgeNowConfirm": "Esteu a punt d'esborrar tota la informació de la vostra base de ades. Esteu segur que voleu continuar?",
- "PurgingData": "Prugant la informació...",
- "ReportsDataSavedEstimate": "Mida de la Base de dades",
- "SaveSettingsBeforePurge": "Heu canviat la configuració d'esborrament. Sisplau, guardeu les vostres preferències abans de començar la purga.",
- "TeaserHeadline": "Preferències de Privacitat",
- "UseAnonymizeIp": "Convertir la IP dels vostres visitants en anònima",
- "UseDeleteReports": "Esobrreu els informes de la base de dades de forma períodica"
+ "DeleteOldAggregatedReports": "Suprimeix les dades d'informes agregats antics",
+ "DeleteOldRawData": "Suprimeix periòdicament les dades en brut antigues",
+ "DeleteOldVisitorLogs": "Suprimeix els registres de visitants antics",
+ "DeleteRawDataInfo": "Les dades en brut contenen tots els detalls sobre cada visita individual i cada acció que van fer els visitants. Quan suprimiu les dades en brut, la informació suprimida ja no estarà disponible al registre de visitants. A més, si més tard decidiu crear un segment, els informes segmentats no estaran disponibles durant el període de temps que s'ha suprimit, ja que tots els informes agregats es generen a partir d'aquestes dades en brut.",
+ "DeleteReportsConfirm": "Esteu a punt d'activar la supressió de dades dels informes. Si s'eliminen els informes antics, els haureu de tornar a processar per veure'ls. Esteu segur que ho voleu fer?",
+ "DeleteReportsInfo2": "Si suprimiu informes antics és possible que es tornin a processar a partir de les vostres dades RAW quan els sol·liciteu.",
+ "DeleteReportsInfo3": "Si també heu activat \"%s\" llavors les dades dels informes que esteu suprimint es perdran permanentment.",
+ "DeleteReportsOlderThan": "Suprimeix els informes anteriors a",
+ "DeleteSchedulingSettings": "Programeu la supressió de dades antigues",
+ "DeleteSelectedVisits": "Suprimeix les visites seleccionades",
+ "DeleteVisitsConfirm": "Esteu segur que voleu suprimir les visites seleccionades? Aquesta acció no es pot desfer.",
+ "DeletionFromMatomoOnly": "Tingueu en compte també que les dades només s'eliminaran de la base de dades de Matomo però no dels registres del vostre servidor web. Tingueu en compte també que si torneu a importar dades històriques, per exemple dels registres, les dades esborrades anteriorment es podran tornar a importar.",
+ "DoNotTrack_Description": "Do Not Track és una proposta de tecnologia i política que permet als usuaris desactivar el seguiment dels llocs web que visiten, inclosos els serveis d'anàlisi, les xarxes de publicitat i les plataformes socials.",
+ "DoNotTrack_Disable": "Desactiveu el suport de Do Not Track",
+ "DoNotTrack_Disabled": "Actualment, Matomo està fent un seguiment de tots els visitants, fins i tot quan han especificat \"No vull ser seguit\" als seus navegadors web.",
+ "DoNotTrack_DisabledMoreInfo": "Us recomanem que habiliteu el suport de DoNotTrack per respectar la privadesa dels vostres visitants",
+ "DoNotTrack_Enable": "Activeu el suport per Do Not Track",
+ "DoNotTrack_Enabled": "Actualment estàs respectant la privadesa dels teus usuaris, Bravo!",
+ "DoNotTrack_EnabledMoreInfo": "Quan els usuaris hagin configurat el seu navegador web a \"No vull ser seguit\" (DoNotTrack està habilitat), Matomo no farà el seguiment d'aquestes visites.",
+ "DoNotTrack_SupportDNTPreference": "Admet la preferència de Do Not Track",
+ "EstimatedDBSizeAfterPurge": "Mida estimada de la base de dades després de la purga",
+ "EstimatedSpaceSaved": "Espai estimat estalviat",
+ "ExportSelectedVisits": "Exporta les visites seleccionades",
+ "ExportingNote": "En cas que estigueu exportant les dades per exercir el dret d'accés, si us plau, assegureu-vos que les visites seleccionades les realitzi realment l'interessat del qual voleu exportar les dades.",
+ "FindDataSubjectsBy": "Cerca persones per",
+ "FontColor": "Color de la lletra",
+ "FontFamily": "Tipus de lletra",
+ "FontSize": "Mida de la lletra",
+ "ForceCookielessTracking": "Força el seguiment sense galetes",
+ "ForceCookielessTrackingDescription": "Si activeu aquesta opció s'actualitzarà automàticament %1$s, de manera que contingui algun codi addicional per assegurar que tots els seguidors no utilitzaran galetes. A més Matomo ignorarà totes les galetes de seguiment del costat del servidor.",
+ "ForceCookielessTrackingDescription2": "Les galetes es desactivaran fins i tot quan s'utilitzen els mètodes de consentiment al seguiment de Matomo i, per exemple, cridant als mètodes de consentiment de galetes no s'habilitaran les galetes.",
+ "ForceCookielessTrackingDescriptionNotWritable": "El fitxer de seguiment JS \"%1$s\" no es pot escriure, cosa que és necessària perquè aquesta funció funcioni completament. Quan el fitxer de seguiment JS no es pot escriure, les galetes només s'ignoraran al costat del servidor, però les galetes encara es poden configurar al navegador. Per resoldre aquest problema, vosaltres o un administrador del sistema heu de canviar els permisos dels fitxers perquè el vostre servidor web pugui canviar aquest fitxer.",
+ "GDPR": "RGPD",
+ "GdprChecklistDesc1": "Si esteu tractant dades personals de ciutadans europeus a través de Matomo, encara que la vostra empresa estigui ubicada fora d'Europa heu de complir amb les obligacions del RGPD i aquesta guia us hi ajudarà.",
+ "GdprChecklistDesc2": "Trobareu a continuació les nostres eines que us permeten exercir fàcilment els drets dels vostres usuaris i la llista d'accions que cal dur a terme per tal que el vostre ús de Matomo compleixi amb el RGPD i protegir les vostres dades. Visiteu la nostra %1$sGuia de l'usuari del RGPD%2$s per obtenir encara més informació.",
+ "GdprChecklists": "Llistes de verificació de RGPD",
+ "GdprManager": "Delegat de Protecció de Dades (DPO)",
+ "GdprOverview": "Visió general del RGPD",
+ "GdprOverviewIntro1": "El Reglament General de Protecció de Dades (RGPD) és un reglament que reforça i unifica la protecció de dades per a totes les persones de la Unió Europea (UE).",
+ "GdprOverviewIntro2": "Si preneu mesures per assegurar-vos que no es recullin dades personals a Matomo, és possible que no us preocupi el RGPD de Matomo (si no feu un seguiment de les adreces IP, els ID d'usuari, les dades de geolocalització, etc.).",
+ "GdprTools": "Eines RGPD",
+ "GdprToolsOverviewHint": "En cas que no sapigueu què és el RGPD consulteu la %1$sVisió general del RGPD%2$s.",
+ "GdprToolsPageIntro1": "Aquesta pàgina ha estat dissenyada per tal que vostè pugui exercir els drets com a interessat.",
+ "GdprToolsPageIntro2": "Aquí podeu exercir els drets dels vostres usuaris amb els nostres procediments compatibles amb RGPD:",
+ "GdprToolsPageIntroAccessRight": "el dret d'accés a totes les seves dades (i el dret a la portabilitat de les dades),",
+ "GdprToolsPageIntroEraseRight": "el dret a suprimir algunes o totes les seves dades (i el dret de rectificació).",
+ "GeolocationAnonymizeIpNote": "Nota: la geolocalització tindrà aproximadament els mateixos resultats amb 1 byte emmascarat. Amb 2 bytes o més, la geolocalització serà inexacta.",
+ "GetPurgeEstimate": "Obteniu una estimació de purga",
+ "HowDoIAskForConsent": "Com puc demanar el consentiment als usuaris?",
+ "HowDoIAskForConsentIntroduction": "Més informació sobre %1$ssol·licitar consentiment per a galetes o per fer el seguiment a la nostra guia d'integració.%2$s",
+ "Imprint": "Empremta",
+ "ImprintUrl": "URL d'impressió",
+ "ImprintUrlDescription": "Un enllaç a la teva pàgina d'empremta.",
+ "IndividualsRights": "Drets de les persones",
+ "IndividualsRightsAccess": "El dret d'accés: %1$scerca les dades d'una persona%2$s i exporta-les totes.",
+ "IndividualsRightsChildren": "Si oferiu serveis en línia als nens i confieu en el consentiment per recollir-ne informació, és possible que necessiteu el consentiment dels pares o tutors per processar les dades personals dels nens de manera legal.",
+ "IndividualsRightsErasure": "Dret de supressió: %1$scerca les dades d'una persona%2$s i suprimeix-les totes o només algunes.",
+ "IndividualsRightsInform": "Dret a ser informat: informa els teus usuaris amb un avís de privadesa clar.",
+ "IndividualsRightsIntro": "Exercita els drets dels teus usuaris amb els nostres procediments compatibles amb RGPD:",
+ "IndividualsRightsObject": "Dret d'oposició: %1$spermet als vostres usuaris marxar fàcilment%2$s des de la vostra pàgina de política de privadesa.",
+ "IndividualsRightsPortability": "Dret a la portabilitat de les dades: %1$scerca les dades d'una persona%2$s i exporta-les totes.",
+ "IndividualsRightsRectification": "Dret de rectificació: podeu %1$scercar les dades d'una persona%2$s i elimina-les totes o només algunes.",
+ "InfoSomeReferrerInfoMayBeAnonymized": "És possible que falti alguna informació de referents perquè l'anonimització del referent està activada de la manera següent: %s",
+ "KeepBasicMetrics": "Manteniu les mètriques bàsiques (visites, pàgines vistes, percentatge de rebots, conversions d'objectius, conversions de comerç electrònic, etc.)",
+ "KeepBasicMetricsReportsDetailedInfo": "Quan activeu aquesta configuració, alguns indicadors numèrics de rendiment clau no se suprimiran.",
+ "KeepDataFor": "Conserveu totes les dades per",
+ "KeepReportSegments": "Per a les dades conservades anteriorment, mantenir també informes segmentats",
+ "LastDelete": "L'última supressió va ser el",
+ "LeastDaysInput": "Si us plau especifiqueu un nombre de dies superior a %s.",
+ "LeastMonthsInput": "Si us plau,especifiqueu un nombre de dies més gran que %s.",
+ "MatchingDataSubjects": "Coincidència de persones",
+ "MenuPrivacySettings": "Privadesa",
+ "NextDelete": "Pròxima supressió programada en",
+ "NoDataSubjectsFound": "No s'ha trobat persones",
+ "OptOutCustomize": "Personalitzeu l'iframe d'exclusió",
+ "OptOutHtmlCode": "Codi HTML per incrustar al vostre lloc web",
+ "OptOutPreview": "Vista prèvia de l'exclusió tal com apareixerà al vostre lloc web",
+ "PluginDescription": "Augmenteu la privadesa dels vostres usuaris i feu que la privadesa de la vostra instància Matomo compleixi amb la vostra legislació local.",
+ "PrivacyPolicy": "Política de privacitat",
+ "PrivacyPolicyUrl": "URL de la política de privadesa",
+ "PrivacyPolicyUrlDescription": "Un enllaç a la vostra pàgina de la Política de privadesa.",
+ "PrivacyPolicyUrlDescriptionSuffix": "Si ho configureu, es mostrarà a la part inferior de la pàgina d'inici de sessió i a les pàgines a les quals pugui accedir l'usuari '%1$s'.",
+ "PseudonymizeUserId": "Substituïr l'identificador d'usuari per un pseudònim",
+ "PseudonymizeUserIdNote": "Quan activeu aquesta opció l'identificador d'usuari es substituirà per un pseudònim per evitar que s'emmagatzemi i es mostri directament informació d'identificació personal, com ara una adreça de correu electrònic. En termes tècnics: donat el vostre User ID, Matomo processarà el pseudònim User ID mitjançant una funció de hash salat.",
+ "PseudonymizeUserIdNote2": "Nota: substituir per un pseudònim no és el mateix que anonimitzar. En termes de RGPD: el pseudònim de User ID encara compta com a dades personals. L'identificador d'usuari original encara es podria identificar si hi ha certa informació addicional disponible (a la qual només tenen accés Matomo i el seu processador de dades).",
+ "PurgeNow": "Purgueu la base de dades ara",
+ "PurgeNowConfirm": "Esteu a punt d'eliminar permanentment les dades de la vostra base de dades. Esteu segur que voleu continuar?",
+ "PurgingData": "Purgant les dades...",
+ "RawDataNeverRemoved": "Les dades en brut de les visites i les accions no s'eliminen <strong>mai</strong> .",
+ "RawDataRemovedAfter": "totes les dades en brut de visites i accions se suprimeixen després de %1$s.",
+ "RecommendedForPrivacy": "Recomanat per privadesa",
+ "ReportsDataSavedEstimate": "Mida de la base de dades",
+ "ReportsNeverRemoved": "els informes agregats no s'eliminen <strong>mai</strong>.",
+ "ReportsRemovedAfter": "tots els informes agregats se suprimeixen després de %1$s.",
+ "ResultIncludesAllVisits": "Els resultats trobats inclouen totes les visites sense cap restricció horària i inclouen avui.",
+ "ResultTruncated": "S'han trobat més de %1$s resultats i el resultat ha estat retallat a les primeres %1$s visites.",
+ "SaveSettingsBeforePurge": "Heu canviat la configuració de supressió de dades. Deseu-la abans d'iniciar una purga.",
+ "SearchForDataSubject": "Cerca una persona",
+ "SecurityProcedures": "Procediments de seguretat",
+ "SecurityProceduresDesc1": "Apliqueu les nostres %1$srecomanacions de seguretat%2$s per protegir les vostres dades de Matomo.",
+ "SecurityProceduresDesc2": "Comproveu que teniu un contracte per escrit amb l'empresa que us proporciona el servidor o l'allotjament de Matomo que garanteix que %1$ses proporcionen proteccions adequades%2$s.",
+ "SecurityProceduresDesc3": "Incloeu Matomo al vostre %1$sprocediment de violació de dades%2$s.",
+ "SecurityProceduresDesc4": "Incloeu Matomo a la vostra %1$savaluació d'impacte sobre la privadesa de dades (DPIA)%2$s, si escau.",
+ "SecurityProceduresIntro": "Informeu els vostres usuaris de manera clara i transparent, i feu que els vostres companys coneguin les dades que es recullen i com s'utilitzen:",
+ "SeeAlsoOurOfficialGuidePrivacy": "Consulteu també la nostra guia oficial: %1$sPrivadesa d'analítica web%2$s",
+ "SelectWebsite": "Seleccioneu un lloc web",
+ "ShowInEmbeddedWidgets": "Mostra als ginys incrustats",
+ "ShowInEmbeddedWidgetsDescription": "Si està marcat, es mostrarà un enllaç a la vostra Política de Privadesa i als vostres Termes i Condicions a la part inferior dels ginys incrustats.",
+ "TeaserHeader": "En aquesta pàgina podeu personalitzar Matomo perquè la privadesa compleixi amb les legislacions existents: %1$s anonimitzant la IP del visitant%2$s, %3$s eliminant automàticament els registres antics de visitants de la base de dades%4$s i %5$s anonimitzant les dades d'usuaris sense processar amb un seguiment anterior%6$s.",
+ "TeaserHeadline": "Configuració de privadesa",
+ "TermsAndConditionUrl": "URL de Termes i Condicions",
+ "TermsAndConditionUrlDescription": "Un enllaç a la pàgina de Termes i Condicions.",
+ "TermsAndConditions": "Termes &amp; Condicions",
+ "TrackingOptOut": "Permet als usuaris desactivar el seguiment",
+ "UnsetActionColumns": "Desactiveu les columnes d'acció",
+ "UnsetActionColumnsHelp": "Aquesta acció no es pot desfer. Una llista de columnes de la base de dades de l'àmbit acció que voleu desactivar. Cada valor d'aquesta columna s'establirà al seu valor predeterminat.",
+ "UnsetVisitColumns": "Desactiveu les columnes de visita",
+ "UnsetVisitColumnsHelp": "Aquesta acció no es pot desfer. Una llista de columnes de la base de dades de l'àmbit visita que voleu desactivar. Cada valor d'aquesta columna s'establirà al seu valor predeterminat. Tingueu en compte que si la mateixa columna existeix a l'àmbit \"conversió\", aquesta columna també se suprimirà",
+ "UseAnonymizeIp": "Fer anònimes les adreces IP dels visitants",
+ "UseAnonymizeOrderId": "Anonimitzar l'identificador de comanda",
+ "UseAnonymizeTrackingData": "Anonimitzar les dades de seguiment",
+ "UseAnonymizeUserId": "Anonimitzar l'identificador d'usuari",
+ "UseAnonymizedIpForVisitEnrichment": "Utilitzeu també les adreces IP anonimitzades a l'hora d'enriquir visites.",
+ "UseAnonymizedIpForVisitEnrichmentNote": "Els connectors com ara la ubicació geogràfica mitjançant IP i el proveïdor milloren les metadades dels visitants. Per defecte aquests connectors utilitzen les adreces IP anonimitzades. Si seleccioneu \"No\" s'utilitzarà l'adreça IP completa no anònima, la qual cosa comportarà menys privadesa però una millor precisió de les dades.",
+ "UseDeleteLog": "Suprimiu periòdicament les dades en brut antigues de la base de dades",
+ "UseDeleteReports": "Suprimiu regularment els informes antics de la base de dades",
+ "UsersOptOut": "Exclusió d'usuaris",
+ "VisitsMatchedCriteria": "Aquestes visites coincideixen amb els criteris seleccionats.",
+ "WhenConsentIsNeeded1": "En el context de les %1$snormes de privadesa RGPD%2$s, quan esteu processant dades personals en alguns casos haureu de demanar el consentiment dels vostres usuaris. Per identificar si necessiteu sol·licitar el consentiment heu de determinar si la vostra base legal per al tractament de dades personals és \"Consentiment\" o \"Interès legítim\", o si podeu evitar la recollida de dades personals del tot. Us recomanem obtenir més informació sobre %3$sla base legal segons el RGPD per a Matomo%4$s.",
+ "WhenConsentIsNeeded2": "Tingueu en compte que quan necessiteu el consentiment dels vostres usuaris i si no podeu demostrar que heu obtingut el \"Consentiment\" dels vostres usuaris en el passat, us recomanem que %1$sanonimitzeu les dades en brut dels usuaris que ja havien estat seguits%2$s.",
+ "WhenDoINeedConsent": "Quan he de demanar el consentiment de l'usuari?"
}
}
diff --git a/plugins/PrivacyManager/lang/nb.json b/plugins/PrivacyManager/lang/nb.json
index fa30844643..4e6840c04c 100644
--- a/plugins/PrivacyManager/lang/nb.json
+++ b/plugins/PrivacyManager/lang/nb.json
@@ -1,53 +1,78 @@
{
"PrivacyManager": {
+ "AddUserIdToSearch": "Klikk for å legge denne bruker-ID-en i søket",
+ "AddVisitorIPToSearch": "Klikk for å legge denne besøks-IP-en i søket",
+ "AddVisitorIdToSearch": "Klikk for å legge denne besøks-ID-en i søket",
"AnonymizeData": "Anonymiser data",
+ "AnonymizeDataConfirm": "Anonymiser data for valgt(e) nettside(r) og tidsrom? Dette kan ikke angres, ta lang tid, og data kan bli slettes som forespurt.",
+ "AnonymizeDataNow": "Anonymiser tidligere data for valgt side og tid",
"AnonymizeIp": "Anonymisering av IP",
"AnonymizeIpDescription": "Velg «Ja» hvis du vil at Matomo ikke skal spore fullstendige IP-adresser.",
"AnonymizeIpExtendedHelp": "Når brukere besøker nettsiden din, bruker ikke Matomo hele IP-adressen (som f.eks %1$s) men istedenfor vil Matomo anonymisere dem først (til %2$s). Anonymisering av IP-adresser er ett av kravene for personvernslovgivning i f.eks. Tyskland.",
+ "AnonymizeIpHelp": "Denne handlingen kan ikke angres og vil anonymisere IP-en med minst to byte innenfor tidsrommet. For eksempel «192.16.xxx.xxxx». Hvis du har satt opp anonymisering med tre byte vil denne innstillingen respekteres og alle IP-adresser anonymiseres med tre byte.",
"AnonymizeIpInlineHelp": "Anonymiser siste byte for IP-adresser for å overholde lokale lover og retningslinjer for personvern.",
"AnonymizeIpMaskFully": "Masker hele IP-adressen",
"AnonymizeIpMaskLengtDescription": "Velg hvor mange byte av besøkendes IP-er som skal maskeres.",
"AnonymizeIpMaskLength": "%1$s byte(s) – f.eks. %2$s",
"AnonymizeLocation": "Anonymisering av posisjon",
"AnonymizeLocationHelp": "Denne handlingen kan ikke angres. Omvurderer posisjonen basert på anonymisert IP (minst 2 byte av IP-en vil bli anonymisert).",
+ "AnonymizeProcessInfo": "Denne handlingen kan ta lang tid og vil derfor ikke kjøres umiddelbart. Du vil kunne følge prosessen nedenfor. Anonymiseringen bør vanligvis starte innen én time.",
"AnonymizeReferrer": "Anonymiser henviser",
+ "AnonymizeReferrerExcludeAll": "Ikke registrer referent-nettadresse, men oppdag typen referent",
"AnonymizeReferrerExcludeNone": "Ikke anonymiser henviseren",
"AnonymizeReferrerExcludePath": "Kun behold domenedelen av henviser-nettadresse",
"AnonymizeReferrerExcludeQuery": "Fjern spørringsparameter fra henviser-nettadresse",
+ "AnonymizeReferrerNote": "Matomo lagrer hvilken nettadresse (referent) en bruker ankommer siden din fra. I noen fall vil en slik nettadresse inneholde info som kan anses som personvernsinfo. Hvis du ønsker å forhindre at slik info spores kan du begrense mengden referentdato Matomo lagrer når en besøkende ankommer nettsiden. Desto mer info som fjernes fra referent-infoen desto mindre sannsynlig er det at personvernsinfo registreres. Desto mer info du fjerner fra referenten desto mindre klart vil det være hvordan en besøkende ankom nettsiden din.",
"AnonymizeRowDataFrom": "Anonymiser all rådata med start fra:",
"AnonymizeRowDataTo": "Anonymiser all rådata opp til:",
"AnonymizeSites": "Anonymiser data for denne/disse siden(e)",
"AnonymizeUserId": "Erstatt bruker-ID med et pseudonym",
"AskingForConsent": "Forespørsel om samtykke",
"AwarenessDocumentation": "Oppmerksomhet og dokumentasjon",
+ "AwarenessDocumentationDesc1": "Informer dine besøkende gjennom en klar personvernsmerknad når du samler inn personvernsdata.",
+ "AwarenessDocumentationDesc2": "Informer dine brukere i personvernspraksisen om hvilken data du samler inn og hvordan den brukes.",
+ "AwarenessDocumentationDesc3": "Gjør laget ditt oppmerksom på at du bruker Matomo-analyse og %1$shvilken data som samles inn av din analyseplattform%2$s.",
+ "AwarenessDocumentationDesc4": "Dokumenter din bruk av Matomo innen ditt %1$sregister over informasjonstilganger%2$s.",
+ "AwarenessDocumentationIntro": "Informer dine brukere klart og gjennomsiktig, og gjør dine kolleger klare over dataen som samles inn og hvordan den brukes.",
"BackgroundColor": "Bakgrunnsfarge",
"ClickHereSettings": "Klikk her for å få tilgang til %s-innstillingene.",
"ConsentExplanation": "Samtykke betyr at brukere har valget og kontrollerer hvordan deres persondetaljer behandles.",
"CurrentDBSize": "Nåværende databasestørrelse",
"DBPurged": "Database tømt.",
"DataRetention": "Datalagring",
+ "DataRetentionInMatomo": "Bevaring av data lagret i Matomo:",
"DeleteDataInterval": "Slett gammel data hver",
"DeleteDataSettings": "Slett gamle besøkslogger og -rapporter",
"DeleteLogsOlderThan": "Slett logger eldre enn",
+ "DeleteMaxRows": "Maksimalt antall rader å slette i én kjøring:",
"DeleteMaxRowsNoLimit": "ingen grense",
"DeleteOldRawData": "Slett gammel rådata regelmessig",
"DeleteOldVisitorLogs": "Slett gamle besøkslogger",
"DeleteReportsOlderThan": "Slett rapporter eldre enn",
"DeleteSelectedVisits": "Slett valgte besøk",
+ "DeleteVisitsConfirm": "Slett valgte besøk for godt?",
"DoNotTrack_Disable": "Deaktiver Do Not Track-støtte",
"DoNotTrack_Enable": "Aktiver Do Not Track-støtte",
+ "DoNotTrack_Enabled": "Du respekterer nå dine brukeres personvern. Bravo.",
+ "DoNotTrack_SupportDNTPreference": "Støtt «ikke spor meg»-innstilling",
+ "EstimatedDBSizeAfterPurge": "Anslått databasestørrelse etter rensing",
"EstimatedSpaceSaved": "Estimert plassbesparelse",
"ExportSelectedVisits": "Eksporter valgte besøk",
"FontColor": "Skriftfarge",
"FontFamily": "Skriftfamilie",
"FontSize": "Skriftstørrelse",
+ "ForceCookielessTracking": "Påtving sporing uten kaker",
"GDPR": "GDPR",
"GdprChecklists": "GDPR-sjekklister",
"GdprManager": "GDPR-håndterer",
"GdprOverview": "GDPR-oversikt",
"GdprTools": "GDPR-verktøy",
+ "GdprToolsOverviewHint": "I fall du ikke vet hva GDPR er, kan du lese %1$sGDPR-oversikten%2$s.",
+ "GdprToolsPageIntro1": "Denne siden er designet for at du skal kunne utøve dataemne-rettigheter.",
+ "GdprToolsPageIntro2": "Her kan du utøve rettighetene til dine brukere med en GDPR_kompatibel prosedyre:",
"GeolocationAnonymizeIpNote": "Merk: Geoposisjonering vil ha omtrent de samme resultatene med en byte anonymisert. Med to byte eller mer, vil geoposisjonering være unøyaktig.",
"HowDoIAskForConsent": "Hvordan spør jeg brukere om samtykke?",
+ "HowDoIAskForConsentIntroduction": "Lær alt om å %1$sspørre om kake- eller sporingssamtykke i integrasjonsveiledningen.%2$s",
"Imprint": "Impressum",
"ImprintUrl": "Impressum-nettadresse",
"ImprintUrlDescription": "En lenke til din impressums-side",
@@ -59,30 +84,42 @@
"MatchingDataSubjects": "Samsvarende dataemner",
"MenuPrivacySettings": "Personvern",
"NextDelete": "Neste planlagte sletting om",
+ "NoDataSubjectsFound": "Fant ingen dataemner",
"OptOutHtmlCode": "HTML-kode til innebygging på nettsiden din",
"PrivacyPolicy": "Personvernspraksis",
"PrivacyPolicyUrl": "Nettadresse til personvernspraksis",
"PrivacyPolicyUrlDescription": "En lenke til din personvernspraksisside.",
+ "PrivacyPolicyUrlDescriptionSuffix": "Vil vises på bunnen av innloggingssiden og på sidene «%1$s»-brukeren har tilgang til.",
"PseudonymizeUserId": "Erstatt bruker-ID med et pseudonym",
"PurgeNow": "Rydd database nå",
"PurgingData": "Tømmer data …",
+ "RawDataNeverRemoved": "besøk og handlingers rådata slettes <strong>aldri</strong>.",
+ "RawDataRemovedAfter": "alle besøk og interkasjoners rådata slettes etter %1$s.",
"RecommendedForPrivacy": "Anbefalt for personvern",
"ReportsDataSavedEstimate": "Databasestørrelse",
"SecurityProcedures": "Sikkerhetsprosedyrer",
+ "SeeAlsoOurOfficialGuidePrivacy": "Sjekk også den offisielle veiledningen: %1$svev-analysepersonvern%2$s",
"SelectWebsite": "Velg en nettside",
"ShowInEmbeddedWidgets": "Vis i innebygde miniprogrammer",
+ "ShowInEmbeddedWidgetsDescription": "Viser en lenke til din personvernspraksis og dine vilkår og betingelser på bunnen av innebygde miniprogrammer.",
"TeaserHeadline": "Personverninnstillinger",
"TermsAndConditionUrl": "Nettadresse for vilkår og betingelser",
"TermsAndConditionUrlDescription": "En lenke til din side for vilkår og betingelser.",
"TermsAndConditions": "Vilkår og betingelser",
+ "TrackingOptOut": "La brukere velge bort sporing",
"UnsetActionColumns": "Fjern innstilling for handlingskolonner",
+ "UnsetActionColumnsHelp": "Denne handlingen kan ikke angres. En liste over databasekolonnen i omfanget handlingen du ønsker å avmarkere. Hver verdi for den kolonnen vil bli satt til sin forvalgte verdi.",
"UnsetVisitColumns": "Fjern innstilling av besøkskolonner",
+ "UnsetVisitColumnsHelp": "Denne handlingen kan ikke angres. En liste over databasekolonner i omfanget visningen du ønsker å avmerkere. Hver verdi for den kolonnen vil bli satt til forvalgt verdi. Merk at hvis samme kolonne finnes i omfanget «konvertering» vil også denne kolonnen slettes.",
"UseAnonymizeOrderId": "Anonymiser ordre-ID",
"UseAnonymizeTrackingData": "Anonymiser sporingsdata",
"UseAnonymizeUserId": "Anonymiser bruker-ID",
"UseDeleteLog": "Slett gammel rådata fra databasen regelmessig",
"UseDeleteReports": "Slett gamle rapporter fra databasen regelmessig",
+ "UsersOptOut": "Utmelding av sporing for brukere",
"VisitsMatchedCriteria": "Disse besøkene samsvarer med valgte kriterium",
+ "WhenConsentIsNeeded1": "I henseende %1$sGDPR-personvernsreguleringer%2$s er det når du behandler personvernsdata noen fall der du må spørre brukere om samtykke. For å finne ut om du trenger det må du fastsette hvorvidt din lovige basis for å behandle personvernsdata er «Samtykke» eller «Legitim interesse», eller hvorvidt du kan unngå å samle inn personvernsdata overhodet. Det anbefales at du lærer mer om%3$slovlig basis under GDPR for Matomo%4$s.",
+ "WhenConsentIsNeeded2": "Merk at når du kreves å hente brukersamtykke og hvis du ikke kan bevise at du innhentet «Samtykke» for dine brukere i fortiden, anbefales det å %1$sanonymisere rådata om de brukerne du har sporet%2$s",
"WhenDoINeedConsent": "Når må jeg pørre om brukersamtykke?"
}
}
diff --git a/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php b/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
index 6c29f6de17..799eb8e797 100644
--- a/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
+++ b/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
@@ -11,7 +11,6 @@ use Piwik\Archive;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataAccess\RawLogDao;
use Piwik\Date;
use Piwik\Db;
diff --git a/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php b/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
index eadc9263ac..b81364cdb5 100644
--- a/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
+++ b/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\PrivacyManager\tests\Integration\Model;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
use Piwik\Db;
use Piwik\Option;
diff --git a/plugins/ProfessionalServices/Promo.php b/plugins/ProfessionalServices/Promo.php
index f2ac24a481..3f5bc44769 100644
--- a/plugins/ProfessionalServices/Promo.php
+++ b/plugins/ProfessionalServices/Promo.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\ProfessionalServices;
-use Piwik\ProfessionalServices\Advertising;
class Promo
{
diff --git a/plugins/Provider b/plugins/Provider
-Subproject 21c5523b46ff24c410c5daf49ac33aab7248d96
+Subproject ee32a5b5b7da82b1c5449b94f87809fd419f6b4
diff --git a/plugins/Proxy/Controller.php b/plugins/Proxy/Controller.php
index a552b38d98..fe3c529196 100644
--- a/plugins/Proxy/Controller.php
+++ b/plugins/Proxy/Controller.php
@@ -12,10 +12,7 @@ use Piwik\AssetManager;
use Piwik\AssetManager\UIAsset;
use Piwik\Common;
use Piwik\Exception\StylesheetLessCompileException;
-use Piwik\Piwik;
use Piwik\ProxyHttp;
-use Piwik\Url;
-use Piwik\UrlHelper;
/**
* Controller for proxy services
diff --git a/plugins/QueuedTracking b/plugins/QueuedTracking
-Subproject 79783fc1c783d5c8e8d461ad998d585616811df
+Subproject e4ffe835e76b4b84a30df0d6e858102bee86009
diff --git a/plugins/Referrers/Columns/Campaign.php b/plugins/Referrers/Columns/Campaign.php
index c5fd824a33..1bc00d8c0a 100644
--- a/plugins/Referrers/Columns/Campaign.php
+++ b/plugins/Referrers/Columns/Campaign.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\TrackerConfig;
diff --git a/plugins/Referrers/Columns/Referrer.php b/plugins/Referrers/Columns/Referrer.php
index 5159985842..d4cf921f99 100644
--- a/plugins/Referrers/Columns/Referrer.php
+++ b/plugins/Referrers/Columns/Referrer.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Referrer extends Dimension
{
diff --git a/plugins/Referrers/Columns/SearchEngine.php b/plugins/Referrers/Columns/SearchEngine.php
index 76840d6fbb..e19ee64ad2 100644
--- a/plugins/Referrers/Columns/SearchEngine.php
+++ b/plugins/Referrers/Columns/SearchEngine.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SearchEngine extends Dimension
{
diff --git a/plugins/Referrers/Columns/SocialNetwork.php b/plugins/Referrers/Columns/SocialNetwork.php
index a35c61b539..c9865c5438 100644
--- a/plugins/Referrers/Columns/SocialNetwork.php
+++ b/plugins/Referrers/Columns/SocialNetwork.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SocialNetwork extends Dimension
{
diff --git a/plugins/Referrers/Columns/Website.php b/plugins/Referrers/Columns/Website.php
index 73aa5bcbed..01af5f6e4b 100644
--- a/plugins/Referrers/Columns/Website.php
+++ b/plugins/Referrers/Columns/Website.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\TrackerConfig;
diff --git a/plugins/Referrers/Columns/WebsitePage.php b/plugins/Referrers/Columns/WebsitePage.php
index 18b765b105..777d31e581 100644
--- a/plugins/Referrers/Columns/WebsitePage.php
+++ b/plugins/Referrers/Columns/WebsitePage.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class WebsitePage extends Dimension
{
diff --git a/plugins/Referrers/Controller.php b/plugins/Referrers/Controller.php
index 6969063271..78745f43f3 100644
--- a/plugins/Referrers/Controller.php
+++ b/plugins/Referrers/Controller.php
@@ -8,20 +8,12 @@
*/
namespace Piwik\Plugins\Referrers;
-use Piwik\API\Request;
use Piwik\Common;
-use Piwik\DataTable\Filter\CalculateEvolutionFilter;
-use Piwik\DataTable\Map;
use Piwik\FrontController;
-use Piwik\Metrics;
-use Piwik\NumberFormatter;
-use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
-use Piwik\ViewDataTable;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
-use Piwik\View;
/**
*
diff --git a/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php b/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php
index 55d17eb43e..e68c903872 100644
--- a/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php
+++ b/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Referrers\DataTable\Filter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
class KeywordNotDefined extends DataTable\Filter\ColumnCallbackReplace
diff --git a/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php b/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php
index d25d733ae1..bbdcb09118 100644
--- a/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php
+++ b/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Referrers\SearchEngine;
diff --git a/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php b/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php
index 818358b2ad..9f91326e2d 100644
--- a/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php
+++ b/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Referrers\SearchEngine;
diff --git a/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php b/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php
index 839356b7ff..b4263a76a8 100644
--- a/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php
+++ b/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php
@@ -10,10 +10,8 @@ namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Period\Range;
-use Piwik\Plugins\Referrers\API;
/**
* Utility function that sets the subtables for the getReferrerType report.
diff --git a/plugins/Referrers/DataTable/Filter/UrlsForSocial.php b/plugins/Referrers/DataTable/Filter/UrlsForSocial.php
index 3137c345f2..d159763537 100644
--- a/plugins/Referrers/DataTable/Filter/UrlsForSocial.php
+++ b/plugins/Referrers/DataTable/Filter/UrlsForSocial.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
-use Piwik\Metrics;
class UrlsForSocial extends BaseFilter
{
diff --git a/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php b/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
index ba0c228b3b..739f666e32 100644
--- a/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
+++ b/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
class UrlsFromWebsiteId extends BaseFilter
diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php
index 7a490bceac..68880c5266 100644
--- a/plugins/Referrers/Referrers.php
+++ b/plugins/Referrers/Referrers.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Referrers;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Referrers\Reports\Get;
use Piwik\Plugins\SitesManager\SiteUrls;
/**
diff --git a/plugins/Referrers/Reports/Get.php b/plugins/Referrers/Reports/Get.php
index 987f213a3f..0078102a21 100644
--- a/plugins/Referrers/Reports/Get.php
+++ b/plugins/Referrers/Reports/Get.php
@@ -14,7 +14,6 @@ use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Filter\CalculateEvolutionFilter;
-use Piwik\DataTable\Filter\ColumnCallbackAddColumnPercentage;
use Piwik\Date;
use Piwik\NumberFormatter;
use Piwik\Period;
diff --git a/plugins/Referrers/Reports/GetKeywords.php b/plugins/Referrers/Reports/GetKeywords.php
index 0abb9e5008..2c2d4927e1 100644
--- a/plugins/Referrers/Reports/GetKeywords.php
+++ b/plugins/Referrers/Reports/GetKeywords.php
@@ -12,9 +12,7 @@ use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
use Piwik\Plugins\Referrers\Columns\Keyword;
-use Piwik\Tracker\Visit;
class GetKeywords extends Base
{
diff --git a/plugins/Referrers/Reports/GetReferrerType.php b/plugins/Referrers/Reports/GetReferrerType.php
index 19dc05eb3b..6c61c10047 100644
--- a/plugins/Referrers/Reports/GetReferrerType.php
+++ b/plugins/Referrers/Reports/GetReferrerType.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Reports;
use Piwik\Common;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
diff --git a/plugins/Referrers/Reports/GetSocials.php b/plugins/Referrers/Reports/GetSocials.php
index adbc1ab2cb..5a3bd0a125 100644
--- a/plugins/Referrers/Reports/GetSocials.php
+++ b/plugins/Referrers/Reports/GetSocials.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Referrers\Reports;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
diff --git a/plugins/Referrers/Reports/GetWebsites.php b/plugins/Referrers/Reports/GetWebsites.php
index 50939b7d57..331be38199 100644
--- a/plugins/Referrers/Reports/GetWebsites.php
+++ b/plugins/Referrers/Reports/GetWebsites.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\Referrers\Columns\Website;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
class GetWebsites extends Base
{
diff --git a/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php b/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
index bfc3308f1b..434f130c3d 100644
--- a/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
+++ b/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Widget\WidgetConfig;
-use Piwik\SettingsPiwik;
class GetCampaignUrlBuilder extends \Piwik\Widget\Widget
{
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
index 3e1d6153d1..362a10f920 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Referrers\tests\Integration\Columns;
use Piwik\Common;
use Piwik\Plugins\Referrers\Columns\ReferrerName;
-use Piwik\Plugins\Referrers\Columns\ReferrerType;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\Cache;
diff --git a/plugins/Referrers/tests/Unit/ReferrersTest.php b/plugins/Referrers/tests/Unit/ReferrersTest.php
index 1965f22ade..ea31103da7 100644
--- a/plugins/Referrers/tests/Unit/ReferrersTest.php
+++ b/plugins/Referrers/tests/Unit/ReferrersTest.php
@@ -8,9 +8,6 @@
namespace Piwik\Plugins\Referrers\tests;
-use Piwik\DataTable;
-use Piwik\DataTable\Row;
-use Piwik\Period;
require_once PIWIK_INCLUDE_PATH . '/plugins/Referrers/Referrers.php';
diff --git a/plugins/Referrers/tests/Unit/SocialTest.php b/plugins/Referrers/tests/Unit/SocialTest.php
index b292503287..38ff93377e 100644
--- a/plugins/Referrers/tests/Unit/SocialTest.php
+++ b/plugins/Referrers/tests/Unit/SocialTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\tests;
use Piwik\Plugins\Referrers\Social;
-use Spyc;
/**
* @group Social
diff --git a/plugins/Resolution/API.php b/plugins/Resolution/API.php
index d7df1cdb18..45a1eb5a6b 100644
--- a/plugins/Resolution/API.php
+++ b/plugins/Resolution/API.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\Resolution;
use Piwik\Archive;
-use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Piwik;
/**
diff --git a/plugins/Resolution/Columns/Configuration.php b/plugins/Resolution/Columns/Configuration.php
index 58e1adcd0c..f61052da9e 100644
--- a/plugins/Resolution/Columns/Configuration.php
+++ b/plugins/Resolution/Columns/Configuration.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Resolution\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Configuration extends Dimension
{
diff --git a/plugins/Resolution/Columns/Resolution.php b/plugins/Resolution/Columns/Resolution.php
index 5cedfc5239..13888b1383 100644
--- a/plugins/Resolution/Columns/Resolution.php
+++ b/plugins/Resolution/Columns/Resolution.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Resolution\Columns;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
diff --git a/plugins/SEO/Metric/Aggregator.php b/plugins/SEO/Metric/Aggregator.php
index 06b427dd28..2059464af6 100644
--- a/plugins/SEO/Metric/Aggregator.php
+++ b/plugins/SEO/Metric/Aggregator.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SEO\Metric;
use Piwik\Container\StaticContainer;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
/**
diff --git a/plugins/SEO/config/ui-test.php b/plugins/SEO/config/ui-test.php
index e4a193928b..ebccc69319 100644
--- a/plugins/SEO/config/ui-test.php
+++ b/plugins/SEO/config/ui-test.php
@@ -1,6 +1,5 @@
<?php
-use Piwik\Container\StaticContainer;
return array(
'observers.global' => \DI\add([
diff --git a/plugins/SEO/tests/Integration/SEOTest.php b/plugins/SEO/tests/Integration/SEOTest.php
index 67c99f9356..75de0b7490 100644
--- a/plugins/SEO/tests/Integration/SEOTest.php
+++ b/plugins/SEO/tests/Integration/SEOTest.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\SEO\tests\Integration;
use Piwik\DataTable\Renderer;
-use Piwik\Http;
-use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\Plugins\SEO\API;
-use Exception;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/ScheduledReports/Controller.php b/plugins/ScheduledReports/Controller.php
index 8f60a4093a..b6468affee 100644
--- a/plugins/ScheduledReports/Controller.php
+++ b/plugins/ScheduledReports/Controller.php
@@ -8,17 +8,13 @@
*/
namespace Piwik\Plugins\ScheduledReports;
-use Faker\Provider\Image;
use Piwik\Access;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Config;
-use Piwik\Date;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Plugins\ImageGraph\ImageGraph;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
-use Piwik\Plugins\SegmentEditor\API as APISegmentEditor;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\View;
diff --git a/plugins/ScheduledReports/Model.php b/plugins/ScheduledReports/Model.php
index 19f561dde3..95e98dd570 100644
--- a/plugins/ScheduledReports/Model.php
+++ b/plugins/ScheduledReports/Model.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\ScheduledReports;
use Piwik\Common;
use Piwik\Db;
use Piwik\DbHelper;
-use Piwik\ReportRenderer;
class Model
{
diff --git a/plugins/ScheduledReports/Tasks.php b/plugins/ScheduledReports/Tasks.php
index 364f4931f0..10b4492cd5 100644
--- a/plugins/ScheduledReports/Tasks.php
+++ b/plugins/ScheduledReports/Tasks.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ScheduledReports;
use Piwik\Scheduler\Schedule\Schedule;
-use Piwik\Site;
class Tasks extends \Piwik\Plugin\Tasks
{
diff --git a/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php b/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php
index 63e9c302e5..81366dd8df 100644
--- a/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php
+++ b/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\ScheduledReports\tests;
-use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugins\ScheduledReports\API;
use Piwik\Plugins\ScheduledReports\ScheduledReports;
diff --git a/plugins/SecurityInfo b/plugins/SecurityInfo
-Subproject e95a177d7f14bd86bdfb8feba7c246eb04495a0
+Subproject 84843174ab3d05d545e09753ace8f149cdf1c06
diff --git a/plugins/SegmentEditor/API.php b/plugins/SegmentEditor/API.php
index 4959e850c0..0750ad690f 100644
--- a/plugins/SegmentEditor/API.php
+++ b/plugins/SegmentEditor/API.php
@@ -9,20 +9,14 @@
namespace Piwik\Plugins\SegmentEditor;
use Exception;
-use Piwik\Access;
-use Piwik\Archive\ArchiveInvalidator;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\CronArchive\SegmentArchiving;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Config;
use Piwik\Segment;
-use Piwik\Site;
-use Psr\Log\LoggerInterface;
use Piwik\Cache;
/**
diff --git a/plugins/SegmentEditor/SegmentEditor.php b/plugins/SegmentEditor/SegmentEditor.php
index 96128253a1..c22ba33bda 100644
--- a/plugins/SegmentEditor/SegmentEditor.php
+++ b/plugins/SegmentEditor/SegmentEditor.php
@@ -23,7 +23,6 @@ use Piwik\Piwik;
use Piwik\Plugins\CoreHome\SystemSummary;
use Piwik\Plugins\Diagnostics\Diagnostics;
use Piwik\Segment;
-use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Site;
use Piwik\Period;
diff --git a/plugins/SegmentEditor/SegmentFormatter.php b/plugins/SegmentEditor/SegmentFormatter.php
index fe0ef7eac8..383c5abde5 100644
--- a/plugins/SegmentEditor/SegmentFormatter.php
+++ b/plugins/SegmentEditor/SegmentFormatter.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SegmentEditor;
use Exception;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Segment;
use Piwik\Segment\SegmentExpression;
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_complex_segment.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_complex_segment.png
index 851b13d222..4def352ad9 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_complex_segment.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_complex_segment.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bc73afa566a9e7e6c70b37afd5ebc14b9ff6f9ae8c730f711f5f2db0385610ec
-size 142015
+oid sha256:e638242a376c85b92bb562e050cf5ba3f8c46e924f825e6759fce10a44dcadde
+size 142741
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 2c800586c5..e213ff1c96 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\SitesManager;
use DateTimeZone;
use Exception;
use Piwik\Access;
-use Piwik\CacheId;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
@@ -29,10 +28,8 @@ use Piwik\Scheduler\Scheduler;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Site;
-use Piwik\Tracker;
use Piwik\Tracker\Cache;
use Piwik\Tracker\TrackerCodeGenerator;
-use Piwik\Measurable\Type;
use Piwik\Translation\Translator;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index 1b171533c0..79e671a720 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -13,16 +13,12 @@ use Piwik\API\Request;
use Piwik\API\ResponseBuilder;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Session;
-use Piwik\Settings\Measurable\MeasurableSettings;
use Piwik\SettingsPiwik;
-use Piwik\Site;
use Piwik\Tracker\TrackerCodeGenerator;
use Piwik\Url;
-use Piwik\View;
use Piwik\Http;
use Piwik\Plugins\SitesManager\GtmSiteTypeGuesser;
use Matomo\Cache\Lazy;
diff --git a/plugins/SitesManager/Menu.php b/plugins/SitesManager/Menu.php
index 76ad41ba32..4a629a6b4d 100644
--- a/plugins/SitesManager/Menu.php
+++ b/plugins/SitesManager/Menu.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\SitesManager;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
use Piwik\Measurable\Type\TypeManager;
-use Piwik\Plugins\WebsiteMeasurable;
class Menu extends \Piwik\Plugin\Menu
{
diff --git a/plugins/SitesManager/Model.php b/plugins/SitesManager/Model.php
index 18c9acf491..1a5c63d1f7 100644
--- a/plugins/SitesManager/Model.php
+++ b/plugins/SitesManager/Model.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SitesManager;
use Piwik\Access;
-use Piwik\Date;
use Piwik\Db;
use Piwik\Common;
use Exception;
diff --git a/plugins/SitesManager/SiteUrls.php b/plugins/SitesManager/SiteUrls.php
index 2441b823fe..530577b9ac 100644
--- a/plugins/SitesManager/SiteUrls.php
+++ b/plugins/SitesManager/SiteUrls.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\SitesManager;
use Piwik\Cache;
use Piwik\Common;
use Piwik\Tracker\Request;
-use Piwik\Tracker\Visitor;
class SiteUrls
{
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index 42879c1d51..7b0b305cd0 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -14,7 +14,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\CoreHome\SystemSummary;
diff --git a/plugins/SitesManager/lang/tr.json b/plugins/SitesManager/lang/tr.json
index cbe335577c..5a0781278c 100644
--- a/plugins/SitesManager/lang/tr.json
+++ b/plugins/SitesManager/lang/tr.json
@@ -101,6 +101,8 @@
"SiteWithoutDataOtherIntegrations": "Diğer bütünleştirmeler",
"SiteWithoutDataOtherWays": "Diğer yöntemler",
"SiteWithoutDataSetupTracking": "Henüz yapmadıysanız lütfen aşağıdaki %1$sizleme kodunu%2$s web sitesine ya da mobil uygulamanıza kurun.",
+ "SiteWithoutDataSinglePageApplication": "Tek sayfalık uygulama ya da aşamalı web uygulaması",
+ "SiteWithoutDataSinglePageApplicationDescription": "Tek sayfalık uygulamayı ya da aşamalı web uygulamasını izlemek için. %1$sRehberimize%2$s bakın.",
"SiteWithoutDataTitle": "Matomo ile trafiğinizi izlemek ve değerli bilgiler elde etmek için son bir adım kaldı",
"Sites": "Web siteleri",
"SuperUserAccessCan": "Süper kullanıcılar ayrıca yeni web siteleri için %1$sgenel ayarları%2$s yönetebilir.",
diff --git a/plugins/SitesManager/tests/Fixtures/ManySites.php b/plugins/SitesManager/tests/Fixtures/ManySites.php
index a4a25fc0d7..f070a53174 100644
--- a/plugins/SitesManager/tests/Fixtures/ManySites.php
+++ b/plugins/SitesManager/tests/Fixtures/ManySites.php
@@ -7,9 +7,7 @@
*/
namespace Piwik\Plugins\SitesManager\tests\Fixtures;
-use Piwik\Plugin;
use Piwik\Plugins\MobileAppMeasurable;
-use Piwik\Plugins\WebsiteMeasurable;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/SitesManager/tests/Integration/SitesManagerTest.php b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
index f4605122f9..2dcbba313a 100644
--- a/plugins/SitesManager/tests/Integration/SitesManagerTest.php
+++ b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SitesManager\tests\Integration;
use Piwik\Cache;
-use Piwik\Archive\ArchiveInvalidator;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
diff --git a/plugins/SitesManager/tests/Unit/APITest.php b/plugins/SitesManager/tests/Unit/APITest.php
index 267f6fd9c8..15b46171ac 100644
--- a/plugins/SitesManager/tests/Unit/APITest.php
+++ b/plugins/SitesManager/tests/Unit/APITest.php
@@ -21,7 +21,7 @@ use Piwik\Tests\Framework\Fixture;
class APITest extends \PHPUnit\Framework\TestCase
{
/**
- * @var Api
+ * @var API
*/
private $api;
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.js b/plugins/SitesManager/vue/dist/SitesManager.umd.js
index f1bdf41c6b..99ea5670ac 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.js
@@ -197,11 +197,14 @@ var SiteTypesStore_SiteTypesStore = /*#__PURE__*/function () {
}));
_defineProperty(this, "response", void 0);
-
- this.fetchAvailableTypes();
}
_createClass(SiteTypesStore, [{
+ key: "init",
+ value: function init() {
+ return this.fetchAvailableTypes();
+ }
+ }, {
key: "fetchAvailableTypes",
value: function fetchAvailableTypes() {
var _this2 = this;
@@ -255,7 +258,7 @@ var SiteTypesStore_SiteTypesStore = /*#__PURE__*/function () {
return SiteTypesStore;
}();
-/* harmony default export */ var src_SiteTypesStore_SiteTypesStore = (Object(external_CoreHome_["lazyInitSingleton"])(SiteTypesStore_SiteTypesStore));
+/* harmony default export */ var src_SiteTypesStore_SiteTypesStore = (new SiteTypesStore_SiteTypesStore());
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SiteTypesStore/SiteTypesStore.adapter.ts
/*!
* Matomo - free/libre analytics platform
@@ -295,7 +298,7 @@ function sitesManagerTypeModelAdapter() {
}
window.angular.module('piwikApp.service').factory('sitesManagerTypeModel', sitesManagerTypeModelAdapter);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=791fd0ea
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=55014f8d
var _hoisted_1 = {
class: "SitesManager",
@@ -461,39 +464,39 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
})
}, null, 8, ["site-is-being-edited", "has-prev", "hasNext", "offset-start", "offset-end", "total-number-of-sites", "is-loading", "search-term", "is-searching"])])], 512);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=791fd0ea
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=55014f8d
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue?vue&type=template&id=1fc4f3b2
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue?vue&type=template&id=e81d4006
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_1 = {
+var ButtonBarvue_type_template_id_e81d4006_hoisted_1 = {
class: "sitesButtonBar clearfix"
};
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_2 = {
+var ButtonBarvue_type_template_id_e81d4006_hoisted_2 = {
class: "search"
};
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_3 = ["value", "placeholder", "disabled"];
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_4 = ["title"];
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_5 = {
+var ButtonBarvue_type_template_id_e81d4006_hoisted_3 = ["value", "placeholder", "disabled"];
+var ButtonBarvue_type_template_id_e81d4006_hoisted_4 = ["title"];
+var ButtonBarvue_type_template_id_e81d4006_hoisted_5 = {
class: "paging"
};
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_6 = ["disabled"];
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_7 = {
+var ButtonBarvue_type_template_id_e81d4006_hoisted_6 = ["disabled"];
+var ButtonBarvue_type_template_id_e81d4006_hoisted_7 = {
style: {
"cursor": "pointer"
}
};
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_8 = {
+var ButtonBarvue_type_template_id_e81d4006_hoisted_8 = {
class: "counter"
};
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_9 = ["disabled"];
-var ButtonBarvue_type_template_id_1fc4f3b2_hoisted_10 = {
+var ButtonBarvue_type_template_id_e81d4006_hoisted_9 = ["disabled"];
+var ButtonBarvue_type_template_id_e81d4006_hoisted_10 = {
style: {
"cursor": "pointer"
},
class: "pointer"
};
-function ButtonBarvue_type_template_id_1fc4f3b2_render(_ctx, _cache, $props, $setup, $data, $options) {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ButtonBarvue_type_template_id_1fc4f3b2_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+function ButtonBarvue_type_template_id_e81d4006_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ButtonBarvue_type_template_id_e81d4006_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["btn addSite", {
disabled: _ctx.siteIsBeingEdited
}]),
@@ -501,7 +504,7 @@ function ButtonBarvue_type_template_id_1fc4f3b2_render(_ctx, _cache, $props, $se
return _ctx.addNewEntity();
}),
tabindex: "1"
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.availableTypes.length > 1 ? _ctx.translate('SitesManager_AddMeasurable') : _ctx.translate('SitesManager_AddSite')), 3), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess && _ctx.availableTypes]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ButtonBarvue_type_template_id_1fc4f3b2_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.availableTypes.length > 1 ? _ctx.translate('SitesManager_AddMeasurable') : _ctx.translate('SitesManager_AddSite')), 3), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess && _ctx.availableTypes]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ButtonBarvue_type_template_id_e81d4006_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
value: _ctx.searchTerm,
onKeydown: _cache[1] || (_cache[1] = function ($event) {
return _ctx.onKeydown($event);
@@ -509,28 +512,28 @@ function ButtonBarvue_type_template_id_1fc4f3b2_render(_ctx, _cache, $props, $se
placeholder: _ctx.translate('Actions_SubmenuSitesearch'),
type: "text",
disabled: _ctx.siteIsBeingEdited
- }, null, 40, ButtonBarvue_type_template_id_1fc4f3b2_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ }, null, 40, ButtonBarvue_type_template_id_e81d4006_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
onClick: _cache[2] || (_cache[2] = function ($event) {
return _ctx.searchSite();
}),
title: _ctx.translate('General_ClickToSearch'),
class: "search_ico",
src: "plugins/Morpheus/images/search_ico.png"
- }, null, 8, ButtonBarvue_type_template_id_1fc4f3b2_hoisted_4)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasPrev || _ctx.hasNext || _ctx.isSearching]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ButtonBarvue_type_template_id_1fc4f3b2_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ButtonBarvue_type_template_id_e81d4006_hoisted_4)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasPrev || _ctx.hasNext || _ctx.isSearching]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ButtonBarvue_type_template_id_e81d4006_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "btn prev",
disabled: _ctx.hasPrev && !_ctx.isLoading && !_ctx.siteIsBeingEdited ? undefined : true,
onClick: _cache[3] || (_cache[3] = function ($event) {
return _ctx.previousPage();
})
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", ButtonBarvue_type_template_id_1fc4f3b2_hoisted_7, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 8, ButtonBarvue_type_template_id_1fc4f3b2_hoisted_6), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", ButtonBarvue_type_template_id_1fc4f3b2_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.paginationText), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasPrev || _ctx.hasNext]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", ButtonBarvue_type_template_id_e81d4006_hoisted_7, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 8, ButtonBarvue_type_template_id_e81d4006_hoisted_6), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", ButtonBarvue_type_template_id_e81d4006_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.paginationText), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasPrev || _ctx.hasNext]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "btn next",
disabled: _ctx.hasNext && !_ctx.isLoading && !_ctx.siteIsBeingEdited ? undefined : true,
onClick: _cache[4] || (_cache[4] = function ($event) {
return _ctx.nextPage();
})
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", ButtonBarvue_type_template_id_1fc4f3b2_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 8, ButtonBarvue_type_template_id_1fc4f3b2_hoisted_9)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasPrev || _ctx.hasNext]])]);
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", ButtonBarvue_type_template_id_e81d4006_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 8, ButtonBarvue_type_template_id_e81d4006_hoisted_9)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasPrev || _ctx.hasNext]])]);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue?vue&type=template&id=1fc4f3b2
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue?vue&type=template&id=e81d4006
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue?vue&type=script&lang=ts
@@ -576,6 +579,7 @@ function ButtonBarvue_type_template_id_1fc4f3b2_render(_ctx, _cache, $props, $se
},
emits: ['add', 'search', 'prev', 'next', 'update:searchTerm'],
created: function created() {
+ src_SiteTypesStore_SiteTypesStore.init();
this.onKeydown = Object(external_CoreHome_["debounce"])(this.onKeydown, 50);
},
computed: {
@@ -639,48 +643,48 @@ function ButtonBarvue_type_template_id_1fc4f3b2_render(_ctx, _cache, $props, $se
-ButtonBarvue_type_script_lang_ts.render = ButtonBarvue_type_template_id_1fc4f3b2_render
+ButtonBarvue_type_script_lang_ts.render = ButtonBarvue_type_template_id_e81d4006_render
/* harmony default export */ var ButtonBar = (ButtonBarvue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SiteFields/SiteFields.vue?vue&type=template&id=a905ccac
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SiteFields/SiteFields.vue?vue&type=template&id=648e955b
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_1 = ["idsite", "type"];
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_2 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_1 = ["idsite", "type"];
+var SiteFieldsvue_type_template_id_648e955b_hoisted_2 = {
class: "card-content"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_3 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_3 = {
key: 0,
class: "row"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_4 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_4 = {
class: "col m3"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_5 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_5 = {
class: "title"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_6 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_6 = {
class: "title"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_7 = ["target", "title", "href"];
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_8 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_7 = ["target", "title", "href"];
+var SiteFieldsvue_type_template_id_648e955b_hoisted_8 = {
class: "col m4"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_9 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_9 = {
class: "title"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_10 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_10 = {
class: "title"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_11 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_11 = {
class: "title"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_12 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_12 = {
class: "title"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_13 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_13 = {
class: "col m4"
};
-var SiteFieldsvue_type_template_id_a905ccac_hoisted_14 = {
+var SiteFieldsvue_type_template_id_648e955b_hoisted_14 = {
class: "title"
};
@@ -758,7 +762,7 @@ var _hoisted_41 = {
};
var _hoisted_42 = ["value"];
var _hoisted_43 = ["value"];
-function SiteFieldsvue_type_template_id_a905ccac_render(_ctx, _cache, $props, $setup, $data, $options) {
+function SiteFieldsvue_type_template_id_648e955b_render(_ctx, _cache, $props, $setup, $data, $options) {
var _ctx$theSite$excluded,
_ctx$theSite$excluded2,
_ctx$theSite$excluded3,
@@ -779,11 +783,11 @@ function SiteFieldsvue_type_template_id_a905ccac_render(_ctx, _cache, $props, $s
idsite: _ctx.theSite.idsite,
type: _ctx.theSite.type,
ref: "root"
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_a905ccac_hoisted_2, [!_ctx.editMode ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SiteFieldsvue_type_template_id_a905ccac_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_a905ccac_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h4", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.name), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Id')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.idsite), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Type')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.currentType.name), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.availableTypes.length > 1]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_648e955b_hoisted_2, [!_ctx.editMode ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SiteFieldsvue_type_template_id_648e955b_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_648e955b_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h4", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.name), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Id')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.idsite), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Type')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.currentType.name), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.availableTypes.length > 1]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
target: _ctx.isInternalSetupUrl ? '_self' : '_blank',
title: _ctx.translate('SitesManager_ShowTrackingTag'),
href: _ctx.setupUrl
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ShowTrackingTag')), 9, SiteFieldsvue_type_template_id_a905ccac_hoisted_7)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.theSite.idsite && _ctx.howToSetupUrl]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_a905ccac_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Timezone')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.timezone_name), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Currency')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.currency_name), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Ecommerce')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.theSite.ecommerce === 1 || _ctx.theSite.ecommerce === '1']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Actions_SubmenuSitesearch')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.theSite.sitesearch === 1 || _ctx.theSite.sitesearch === '1']])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_a905ccac_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_a905ccac_hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Urls')), 1), _hoisted_15, (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.theSite.alias_urls, function (url, index) {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ShowTrackingTag')), 9, SiteFieldsvue_type_template_id_648e955b_hoisted_7)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.theSite.idsite && _ctx.howToSetupUrl]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_648e955b_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Timezone')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.timezone_name), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Currency')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.theSite.currency_name), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Ecommerce')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.theSite.ecommerce === 1 || _ctx.theSite.ecommerce === '1']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Actions_SubmenuSitesearch')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Yes')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.theSite.sitesearch === 1 || _ctx.theSite.sitesearch === '1']])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteFieldsvue_type_template_id_648e955b_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", SiteFieldsvue_type_template_id_648e955b_hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Urls')), 1), _hoisted_15, (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.theSite.alias_urls, function (url, index) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", {
key: url
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
@@ -876,9 +880,9 @@ function SiteFieldsvue_type_template_id_a905ccac_render(_ctx, _cache, $props, $s
}, null, 8, _hoisted_43)])];
}),
_: 1
- }, 8, ["modelValue"])], 10, SiteFieldsvue_type_template_id_a905ccac_hoisted_1);
+ }, 8, ["modelValue"])], 10, SiteFieldsvue_type_template_id_648e955b_hoisted_1);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SiteFields/SiteFields.vue?vue&type=template&id=a905ccac
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SiteFields/SiteFields.vue?vue&type=template&id=648e955b
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
@@ -941,16 +945,27 @@ var TimezoneStore_TimezoneStore = /*#__PURE__*/function () {
return _this.state.value.isLoading;
}));
- this.privateState.isLoading = true;
- Promise.all([this.checkTimezoneSupportEnabled(), this.fetchTimezones()]).finally(function () {
- _this.privateState.isLoading = false;
- });
+ TimezoneStore_defineProperty(this, "initializePromise", null);
}
TimezoneStore_createClass(TimezoneStore, [{
+ key: "init",
+ value: function init() {
+ var _this2 = this;
+
+ if (!this.initializePromise) {
+ this.privateState.isLoading = true;
+ this.initializePromise = Promise.all([this.checkTimezoneSupportEnabled(), this.fetchTimezones()]).finally(function () {
+ _this2.privateState.isLoading = false;
+ });
+ }
+
+ return this.initializePromise;
+ }
+ }, {
key: "fetchTimezones",
value: function fetchTimezones() {
- var _this2 = this;
+ var _this3 = this;
return external_CoreHome_["AjaxHelper"].fetch({
method: 'SitesManager.getTimezonesList'
@@ -973,18 +988,18 @@ var TimezoneStore_TimezoneStore = /*#__PURE__*/function () {
});
});
});
- _this2.privateState.timezones = flattened;
+ _this3.privateState.timezones = flattened;
});
}
}, {
key: "checkTimezoneSupportEnabled",
value: function checkTimezoneSupportEnabled() {
- var _this3 = this;
+ var _this4 = this;
return external_CoreHome_["AjaxHelper"].fetch({
method: 'SitesManager.isTimezoneSupportEnabled'
}).then(function (response) {
- _this3.privateState.timezoneSupportEnabled = response.value;
+ _this4.privateState.timezoneSupportEnabled = response.value;
});
}
}]);
@@ -992,7 +1007,7 @@ var TimezoneStore_TimezoneStore = /*#__PURE__*/function () {
return TimezoneStore;
}();
-/* harmony default export */ var src_TimezoneStore_TimezoneStore = (Object(external_CoreHome_["lazyInitSingleton"])(TimezoneStore_TimezoneStore));
+/* harmony default export */ var src_TimezoneStore_TimezoneStore = (new TimezoneStore_TimezoneStore());
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/CurrencyStore/CurrencyStore.ts
function CurrencyStore_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -1030,16 +1045,25 @@ var CurrencyStore_CurrencyStore = /*#__PURE__*/function () {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.privateState).isLoading;
}));
- this.fetchCurrencies();
+ CurrencyStore_defineProperty(this, "initializePromise", null);
}
CurrencyStore_createClass(CurrencyStore, [{
+ key: "init",
+ value: function init() {
+ if (!this.initializePromise) {
+ this.initializePromise = this.fetchCurrencies();
+ }
+
+ return this.initializePromise;
+ }
+ }, {
key: "fetchCurrencies",
value: function fetchCurrencies() {
var _this2 = this;
this.privateState.isLoading = true;
- external_CoreHome_["AjaxHelper"].fetch({
+ return external_CoreHome_["AjaxHelper"].fetch({
method: 'SitesManager.getCurrencyList'
}).then(function (currencies) {
_this2.privateState.currencies = currencies;
@@ -1052,7 +1076,7 @@ var CurrencyStore_CurrencyStore = /*#__PURE__*/function () {
return CurrencyStore;
}();
-/* harmony default export */ var src_CurrencyStore_CurrencyStore = (Object(external_CoreHome_["lazyInitSingleton"])(CurrencyStore_CurrencyStore));
+/* harmony default export */ var src_CurrencyStore_CurrencyStore = (new CurrencyStore_CurrencyStore());
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SiteFields/SiteFields.vue?vue&type=script&lang=ts
function SiteFieldsvue_type_script_lang_ts_slicedToArray(arr, i) { return SiteFieldsvue_type_script_lang_ts_arrayWithHoles(arr) || SiteFieldsvue_type_script_lang_ts_iterableToArrayLimit(arr, i) || SiteFieldsvue_type_script_lang_ts_unsupportedIterableToArray(arr, i) || SiteFieldsvue_type_script_lang_ts_nonIterableRest(); }
@@ -1125,6 +1149,9 @@ function isSiteNew(site) {
},
emits: ['delete', 'editSite', 'cancelEditSite', 'save'],
created: function created() {
+ src_CurrencyStore_CurrencyStore.init();
+ src_TimezoneStore_TimezoneStore.init();
+ src_SiteTypesStore_SiteTypesStore.init();
this.onSiteChanged();
},
watch: {
@@ -1379,7 +1406,7 @@ function isSiteNew(site) {
-SiteFieldsvue_type_script_lang_ts.render = SiteFieldsvue_type_template_id_a905ccac_render
+SiteFieldsvue_type_script_lang_ts.render = SiteFieldsvue_type_template_id_648e955b_render
/* harmony default export */ var SiteFields = (SiteFieldsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
@@ -1427,11 +1454,14 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
GlobalSettingsStore_defineProperty(this, "globalSettings", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.privateState).globalSettings;
}));
-
- this.fetchGlobalSettings();
}
GlobalSettingsStore_createClass(GlobalSettingsStore, [{
+ key: "init",
+ value: function init() {
+ return this.fetchGlobalSettings();
+ }
+ }, {
key: "saveGlobalSettings",
value: function saveGlobalSettings(settings) {
var _this2 = this;
@@ -1474,7 +1504,7 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
return GlobalSettingsStore;
}();
-/* harmony default export */ var src_GlobalSettingsStore_GlobalSettingsStore = (Object(external_CoreHome_["lazyInitSingleton"])(GlobalSettingsStore_GlobalSettingsStore));
+/* harmony default export */ var src_GlobalSettingsStore_GlobalSettingsStore = (new GlobalSettingsStore_GlobalSettingsStore());
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=script&lang=ts
@@ -1518,6 +1548,9 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
created: function created() {
var _this = this;
+ src_TimezoneStore_TimezoneStore.init();
+ src_SiteTypesStore_SiteTypesStore.init();
+ src_GlobalSettingsStore_GlobalSettingsStore.init();
this.isLoadingInitialEntities = true;
Promise.all([src_SiteTypesStore_SiteTypesStore.fetchAvailableTypes(), this.fetchLimitedSitesWithAdminAccess(), this.getTotalNumberOfSites()]).then(function () {
_this.triggerAddSiteIfRequested();
@@ -1774,81 +1807,81 @@ SitesManagementvue_type_script_lang_ts.render = render
window.angular.module('piwikApp').factory('sitesManagerAPI', function () {
return {};
});
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=1bcd889c
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=107daf55
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_1 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_1 = {
class: "SitesManager"
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
name: "globalSettings",
id: "globalSettings"
}, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_3 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_3 = {
id: "excludedIpsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_6 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_7 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_6 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_7 = {
id: "excludedQueryParametersGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_10 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_10 = {
id: "excludedUserAgentsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_13 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_13 = {
id: "timezoneHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_14 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_14 = {
key: 0
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_17 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_17 = {
id: "keepURLFragmentsHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_18 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_19 = {
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_18 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_19 = {
class: "alert alert-info"
};
-function ManageGlobalSettingsvue_type_template_id_1bcd889c_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ManageGlobalSettingsvue_type_template_id_107daf55_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
"content-title": _ctx.translate('SitesManager_GlobalWebsitesSettings')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_4, ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return [ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_4, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.yourCurrentIpAddressIs
- }, null, 8, ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_8, ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_11, ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_15])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_8, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_11, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_15])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
innerHTML: _ctx.keepUrlFragmentHelp
- }, null, 8, ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_18), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_18), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "textarea",
name: "excludedIpsGlobal",
"var-type": "array",
@@ -1895,7 +1928,7 @@ function ManageGlobalSettingsvue_type_template_id_1bcd889c_render(_ctx, _cache,
introduction: _ctx.translate('SitesManager_KeepURLFragments'),
"inline-help": '#keepURLFragmentsHelp',
disabled: _ctx.isLoading
- }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "searchKeywordParametersGlobal",
"var-type": "array",
@@ -1951,7 +1984,7 @@ function ManageGlobalSettingsvue_type_template_id_1bcd889c_render(_ctx, _cache,
_: 1
}, 8, ["content-title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess]])]);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=1bcd889c
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=107daf55
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=script&lang=ts
@@ -1992,6 +2025,9 @@ function ManageGlobalSettingsvue_type_template_id_1bcd889c_render(_ctx, _cache,
created: function created() {
var _this = this;
+ src_CurrencyStore_CurrencyStore.init();
+ src_TimezoneStore_TimezoneStore.init();
+ src_GlobalSettingsStore_GlobalSettingsStore.init();
Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
return src_GlobalSettingsStore_GlobalSettingsStore.globalSettings.value;
}, function (settings) {
@@ -2087,7 +2123,7 @@ function ManageGlobalSettingsvue_type_template_id_1bcd889c_render(_ctx, _cache,
-ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_1bcd889c_render
+ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_107daf55_render
/* harmony default export */ var ManageGlobalSettings = (ManageGlobalSettingsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.adapter.ts
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
index d6f182fb63..7c11a808ab 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
@@ -4,38 +4,38 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var d=window,b=d.$,m=function(){function e(){var t=this;o(this,e),u(this,"state",Object(l["reactive"])({isLoading:!1,typesById:{}})),u(this,"typesById",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).typesById}))),u(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).isLoading}))),u(this,"types",Object(l["computed"])((function(){return Object.values(t.typesById.value)}))),u(this,"response",void 0),this.fetchAvailableTypes()}return c(e,[{key:"fetchAvailableTypes",value:function(){var e=this;return this.response?Promise.resolve(this.response):(this.state.isLoading=!0,this.response=r["AjaxHelper"].fetch({method:"API.getAvailableMeasurableTypes",filter_limit:"-1"}).then((function(t){return t.forEach((function(t){e.state.typesById[t.id]=t})),e.types.value})).finally((function(){e.state.isLoading=!1})),this.response)}},{key:"getEditSiteIdParameter",value:function(){var e=r["MatomoUrl"].hashQuery.value.match(/editsiteid=([0-9]+)/);if(e){var t="1"===r["MatomoUrl"].urlParsed.value.showaddsite||"true"===r["MatomoUrl"].urlParsed.value.showaddsite,n=e[1];return n&&b.isNumeric(n)&&!t?n:void 0}}},{key:"removeEditSiteIdParameterFromHash",value:function(){var e=Object.assign({},r["MatomoUrl"].hashParsed.value);delete e.editsiteid,r["MatomoUrl"].updateHash(e)}}]),e}(),h=Object(r["lazyInitSingleton"])(m);
+ */var d=window,b=d.$,m=function(){function e(){var t=this;o(this,e),u(this,"state",Object(l["reactive"])({isLoading:!1,typesById:{}})),u(this,"typesById",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).typesById}))),u(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).isLoading}))),u(this,"types",Object(l["computed"])((function(){return Object.values(t.typesById.value)}))),u(this,"response",void 0)}return c(e,[{key:"init",value:function(){return this.fetchAvailableTypes()}},{key:"fetchAvailableTypes",value:function(){var e=this;return this.response?Promise.resolve(this.response):(this.state.isLoading=!0,this.response=r["AjaxHelper"].fetch({method:"API.getAvailableMeasurableTypes",filter_limit:"-1"}).then((function(t){return t.forEach((function(t){e.state.typesById[t.id]=t})),e.types.value})).finally((function(){e.state.isLoading=!1})),this.response)}},{key:"getEditSiteIdParameter",value:function(){var e=r["MatomoUrl"].hashQuery.value.match(/editsiteid=([0-9]+)/);if(e){var t="1"===r["MatomoUrl"].urlParsed.value.showaddsite||"true"===r["MatomoUrl"].urlParsed.value.showaddsite,n=e[1];return n&&b.isNumeric(n)&&!t?n:void 0}}},{key:"removeEditSiteIdParameterFromHash",value:function(){var e=Object.assign({},r["MatomoUrl"].hashParsed.value);delete e.editsiteid,r["MatomoUrl"].updateHash(e)}}]),e}(),h=new m;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)},fetchTypeById:function(e){var t=this;return h.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return h.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return h.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:h.removeEditSiteIdParameterFromHash.bind(h),getEditSiteIdParameter:h.getEditSiteIdParameter.bind(h)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",p);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],j=Object(l["createElementVNode"])("br",null,null,-1),O=["innerHTML"],v={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],T={class:"ui-button-text"},x={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[j,Object(l["createElementVNode"])("span",{innerHTML:e.superUserAccessMessage},null,8,O)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",v,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",T,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",x,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var C={class:"sitesButtonBar clearfix"},_={class:"search"},P=["value","placeholder","disabled"],D=["title"],G={class:"paging"},k=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},I=["disabled"],B={style:{cursor:"pointer"},class:"pointer"};function z(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",C,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",_,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,P),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,D)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",G,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,k),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",B,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,I)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return h.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=z;var F=H,K=["idsite","type"],W={class:"card-content"},R={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],he=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),pe=[he],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],je={key:1},Oe={class:"form-group row"},ve={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},Te=Object(l["createElementVNode"])("br",null,null,-1),xe=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},Ce=["value"],_e=["value"];function Pe(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),h=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",W,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",R,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},pe,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["createElementVNode"])("div",ve,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Te])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),xe,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(h,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,Ce),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,_e)])]})),_:1},8,["modelValue"])],10,K)}var De=n("a5a2");function Ge(e,t){return Be(e)||Ie(e,t)||Ue(e,t)||ke()}function ke(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function Ie(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Be(e){if(Array.isArray(e))return e}function ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)},fetchTypeById:function(e){var t=this;return h.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return h.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return h.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:h.removeEditSiteIdParameterFromHash.bind(h),getEditSiteIdParameter:h.getEditSiteIdParameter.bind(h)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",p);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],v=Object(l["createElementVNode"])("br",null,null,-1),j=["innerHTML"],O={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],T={class:"ui-button-text"},x={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[v,Object(l["createElementVNode"])("span",{innerHTML:e.superUserAccessMessage},null,8,j)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",O,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",T,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",x,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var C={class:"sitesButtonBar clearfix"},_={class:"search"},P=["value","placeholder","disabled"],D=["title"],k={class:"paging"},G=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},I=["disabled"],B={style:{cursor:"pointer"},class:"pointer"};function z(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",C,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",_,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,P),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,D)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",k,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,G),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",B,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,I)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){h.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return h.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=z;var F=H,K=["idsite","type"],W={class:"card-content"},R={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],he=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),pe=[he],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],ve={key:1},je={class:"form-group row"},Oe={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},Te=Object(l["createElementVNode"])("br",null,null,-1),xe=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},Ce=["value"],_e=["value"];function Pe(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),h=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",W,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",R,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},pe,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ve,[Object(l["createElementVNode"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Te])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),xe,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(h,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,Ce),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,_e)])]})),_:1},8,["modelValue"])],10,K)}var De=n("a5a2");function ke(e,t){return Be(e)||Ie(e,t)||Ue(e,t)||Ge()}function Ge(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function Ie(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Be(e){if(Array.isArray(e))return e}function ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var We=function(){function e(){var t=this;ze(this,e),Ke(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Ke(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Ke(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Ke(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Ke(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),this.privateState.isLoading=!0,Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){t.privateState.isLoading=!1}))}return Fe(e,[{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=Ge(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=Ge(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),Re=Object(r["lazyInitSingleton"])(We);function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var We=function(){function e(){var t=this;ze(this,e),Ke(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Ke(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Ke(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Ke(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Ke(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Ke(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=ke(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=ke(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),Re=new We;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Je=function(){function e(){var t=this;Qe(this,e),Ye(this,"privateState",Object(l["reactive"])({isLoading:!1,currencies:{}})),Ye(this,"currencies",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).currencies}))),Ye(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),this.fetchCurrencies()}return $e(e,[{key:"fetchCurrencies",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getCurrencyList"}).then((function(t){e.privateState.currencies=t})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),Xe=Object(r["lazyInitSingleton"])(Je);function Ze(e,t){return it(e)||at(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function at(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function it(e){if(Array.isArray(e))return e}var rt=Object(l["computed"])((function(){return Re.timezones.value.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))}));function lt(e){return"undefined"===typeof e.idsite}var ot=Object(l["defineComponent"])({props:{site:{type:Object,required:!0},timezoneSupportEnabled:{type:Boolean},utcTime:{type:Date,required:!0},globalSettings:{type:Object,required:!0}},data:function(){return{isLoading:!1,editMode:!1,theSite:Object.assign({},this.site),measurableSettings:[],settingValues:{},showRemoveDialog:!1}},components:{MatomoDialog:r["MatomoDialog"],Field:De["Field"],GroupedSettings:De["GroupedSettings"],ActivityIndicator:r["ActivityIndicator"]},emits:["delete","editSite","cancelEditSite","save"],created:function(){this.onSiteChanged()},watch:{site:function(){this.onSiteChanged()},measurableSettings:function(e){if(e.length){var t={};e.forEach((function(e){e.settings.forEach((function(n){t["".concat(e.pluginName,".").concat(n.name)]=n.value}))})),this.settingValues=t}}},methods:{onSiteChanged:function(){var e=this.site;this.theSite=Object.assign({},e);var t=lt(e);if(t){var n=this.globalSettings;this.theSite.timezone=n.defaultTimezone,this.theSite.currency=n.defaultCurrency}var a=h.getEditSiteIdParameter();(t||a&&"".concat(e.idsite)===a)&&this.editSite()},editSite:function(){var e=this;if(this.editMode=!0,this.$emit("editSite",{idSite:this.theSite.idsite}),this.measurableSettings=[],lt(this.theSite)){if(!this.currentType)return;this.measurableSettings=this.currentType.settings||[]}else this.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getSiteSettings",idSite:this.theSite.idsite}).then((function(t){e.measurableSettings=t})).finally((function(){e.isLoading=!1}))},saveSite:function(){var e=this,t={siteName:this.theSite.name,timezone:this.theSite.timezone,currency:this.theSite.currency,type:this.theSite.type,settingValues:{}},n=lt(this.theSite),a="SitesManager.addSite";n||(a="SitesManager.updateSite",t.idSite=this.theSite.idsite),Object.entries(this.settingValues).forEach((function(e){var n=Ze(e,2),a=n[0],i=n[1],r=a.split("."),l=Ze(r,2),o=l[0],s=l[1],c=t.settingValues;c[o]||(c[o]=[]);var u=i;!1===i?u="0":!0===i?u="1":Array.isArray(i)&&(u=i.filter((function(e){return!!e}))),c[o].push({name:s,value:u})})),r["AjaxHelper"].post({method:a},t).then((function(a){e.editMode=!1,!e.theSite.idsite&&a&&a.value&&(e.theSite.idsite="".concat(a.value));var i=Re.timezones.value.find((function(t){return t.code===e.theSite.timezone}));e.theSite.timezone_name=(null===i||void 0===i?void 0:i.label)||e.theSite.timezone,e.theSite.currency&&(e.theSite.currency_name=Xe.currencies.value[e.theSite.currency]);var l=r["NotificationsStore"].show({message:n?Object(r["translate"])("SitesManager_WebsiteCreated"):Object(r["translate"])("SitesManager_WebsiteUpdated"),context:"success",id:"websitecreated",type:"transient"});r["NotificationsStore"].scrollToNotification(l),h.removeEditSiteIdParameterFromHash(),e.$emit("save",{site:e.theSite,settingValues:t.settingValues,isNew:n})}))},cancelEditSite:function(e){this.editMode=!1,h.removeEditSiteIdParameterFromHash(),this.$emit("cancelEditSite",{site:e,element:this.$refs.root})},deleteSite:function(){var e=this;r["AjaxHelper"].fetch({idSite:this.theSite.idsite,module:"API",format:"json",method:"SitesManager.deleteSite"}).then((function(){e.$emit("delete",e.theSite)}))}},computed:{availableTypes:function(){return h.types.value},setupUrl:function(){var e=this.theSite,t="",n="";return this.isInternalSetupUrl&&(t=r["MatomoUrl"].stringify({idSite:e.idsite,period:r["MatomoUrl"].parsed.value.period,date:r["MatomoUrl"].parsed.value.date,updated:"false"}),n=-1===this.howToSetupUrl.indexOf("?")?"?":"&"),"".concat(this.howToSetupUrl).concat(n).concat(t)},utcTimeIs:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds()),l="".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i);return Object(r["translate"])("SitesManager_UTCTimeIs",l)},timezones:function(){return rt.value},currencies:function(){return Xe.currencies.value},currentType:function(){var e=this.site,t=h.typesById.value[e.type];return t||{name:e.type}},howToSetupUrl:function(){var e=this.currentType;if(e)return e.howToSetupUrl},isInternalSetupUrl:function(){var e=this.howToSetupUrl;return!!e&&"?"==="".concat(e).substring(0,1)},removeDialogTitle:function(){return Object(r["translate"])("SitesManager_DeleteConfirm",'"'.concat(this.theSite.name,'" (idSite = ').concat(this.theSite.idsite,")"))}}});ot.render=Pe;var st=ot;function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),e}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var Je=function(){function e(){var t=this;Qe(this,e),Ye(this,"privateState",Object(l["reactive"])({isLoading:!1,currencies:{}})),Ye(this,"currencies",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).currencies}))),Ye(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),Ye(this,"initializePromise",null)}return $e(e,[{key:"init",value:function(){return this.initializePromise||(this.initializePromise=this.fetchCurrencies()),this.initializePromise}},{key:"fetchCurrencies",value:function(){var e=this;return this.privateState.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getCurrencyList"}).then((function(t){e.privateState.currencies=t})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),Xe=new Je;function Ze(e,t){return it(e)||at(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function at(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function it(e){if(Array.isArray(e))return e}var rt=Object(l["computed"])((function(){return Re.timezones.value.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))}));function lt(e){return"undefined"===typeof e.idsite}var ot=Object(l["defineComponent"])({props:{site:{type:Object,required:!0},timezoneSupportEnabled:{type:Boolean},utcTime:{type:Date,required:!0},globalSettings:{type:Object,required:!0}},data:function(){return{isLoading:!1,editMode:!1,theSite:Object.assign({},this.site),measurableSettings:[],settingValues:{},showRemoveDialog:!1}},components:{MatomoDialog:r["MatomoDialog"],Field:De["Field"],GroupedSettings:De["GroupedSettings"],ActivityIndicator:r["ActivityIndicator"]},emits:["delete","editSite","cancelEditSite","save"],created:function(){Xe.init(),Re.init(),h.init(),this.onSiteChanged()},watch:{site:function(){this.onSiteChanged()},measurableSettings:function(e){if(e.length){var t={};e.forEach((function(e){e.settings.forEach((function(n){t["".concat(e.pluginName,".").concat(n.name)]=n.value}))})),this.settingValues=t}}},methods:{onSiteChanged:function(){var e=this.site;this.theSite=Object.assign({},e);var t=lt(e);if(t){var n=this.globalSettings;this.theSite.timezone=n.defaultTimezone,this.theSite.currency=n.defaultCurrency}var a=h.getEditSiteIdParameter();(t||a&&"".concat(e.idsite)===a)&&this.editSite()},editSite:function(){var e=this;if(this.editMode=!0,this.$emit("editSite",{idSite:this.theSite.idsite}),this.measurableSettings=[],lt(this.theSite)){if(!this.currentType)return;this.measurableSettings=this.currentType.settings||[]}else this.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getSiteSettings",idSite:this.theSite.idsite}).then((function(t){e.measurableSettings=t})).finally((function(){e.isLoading=!1}))},saveSite:function(){var e=this,t={siteName:this.theSite.name,timezone:this.theSite.timezone,currency:this.theSite.currency,type:this.theSite.type,settingValues:{}},n=lt(this.theSite),a="SitesManager.addSite";n||(a="SitesManager.updateSite",t.idSite=this.theSite.idsite),Object.entries(this.settingValues).forEach((function(e){var n=Ze(e,2),a=n[0],i=n[1],r=a.split("."),l=Ze(r,2),o=l[0],s=l[1],c=t.settingValues;c[o]||(c[o]=[]);var u=i;!1===i?u="0":!0===i?u="1":Array.isArray(i)&&(u=i.filter((function(e){return!!e}))),c[o].push({name:s,value:u})})),r["AjaxHelper"].post({method:a},t).then((function(a){e.editMode=!1,!e.theSite.idsite&&a&&a.value&&(e.theSite.idsite="".concat(a.value));var i=Re.timezones.value.find((function(t){return t.code===e.theSite.timezone}));e.theSite.timezone_name=(null===i||void 0===i?void 0:i.label)||e.theSite.timezone,e.theSite.currency&&(e.theSite.currency_name=Xe.currencies.value[e.theSite.currency]);var l=r["NotificationsStore"].show({message:n?Object(r["translate"])("SitesManager_WebsiteCreated"):Object(r["translate"])("SitesManager_WebsiteUpdated"),context:"success",id:"websitecreated",type:"transient"});r["NotificationsStore"].scrollToNotification(l),h.removeEditSiteIdParameterFromHash(),e.$emit("save",{site:e.theSite,settingValues:t.settingValues,isNew:n})}))},cancelEditSite:function(e){this.editMode=!1,h.removeEditSiteIdParameterFromHash(),this.$emit("cancelEditSite",{site:e,element:this.$refs.root})},deleteSite:function(){var e=this;r["AjaxHelper"].fetch({idSite:this.theSite.idsite,module:"API",format:"json",method:"SitesManager.deleteSite"}).then((function(){e.$emit("delete",e.theSite)}))}},computed:{availableTypes:function(){return h.types.value},setupUrl:function(){var e=this.theSite,t="",n="";return this.isInternalSetupUrl&&(t=r["MatomoUrl"].stringify({idSite:e.idsite,period:r["MatomoUrl"].parsed.value.period,date:r["MatomoUrl"].parsed.value.date,updated:"false"}),n=-1===this.howToSetupUrl.indexOf("?")?"?":"&"),"".concat(this.howToSetupUrl).concat(n).concat(t)},utcTimeIs:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds()),l="".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i);return Object(r["translate"])("SitesManager_UTCTimeIs",l)},timezones:function(){return rt.value},currencies:function(){return Xe.currencies.value},currentType:function(){var e=this.site,t=h.typesById.value[e.type];return t||{name:e.type}},howToSetupUrl:function(){var e=this.currentType;if(e)return e.howToSetupUrl},isInternalSetupUrl:function(){var e=this.howToSetupUrl;return!!e&&"?"==="".concat(e).substring(0,1)},removeDialogTitle:function(){return Object(r["translate"])("SitesManager_DeleteConfirm",'"'.concat(this.theSite.name,'" (idSite = ').concat(this.theSite.idsite,")"))}}});ot.render=Pe;var st=ot;function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),e}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings}))),this.fetchGlobalSettings()}return dt(e,[{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),ht=Object(r["lazyInitSingleton"])(mt),pt=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;this.isLoadingInitialEntities=!0,Promise.all([h.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||h.isLoading.value||Re.isLoading.value||ht.isLoading.value},availableTypes:function(){return h.types.value},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},globalSettings:function(){return ht.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=h.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),console.log("here?"),this.isSiteBeingEdited=!1}}});pt.render=A;var gt=pt;
+ */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings})))}return dt(e,[{key:"init",value:function(){return this.fetchGlobalSettings()}},{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),ht=new mt,pt=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;Re.init(),h.init(),ht.init(),this.isLoadingInitialEntities=!0,Promise.all([h.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||h.isLoading.value||Re.isLoading.value||ht.isLoading.value},availableTypes:function(){return h.types.value},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},globalSettings:function(){return ht.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=h.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),console.log("here?"),this.isSiteBeingEdited=!1}}});pt.render=A;var gt=pt;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),jt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},Ot=Object(l["createElementVNode"])("br",null,null,-1),vt=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),Tt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},xt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"timezoneHelp",class:"inline-help-node"},At={key:0},Ct=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Pt={id:"keepURLFragmentsHelp",class:"inline-help-node"},Dt=["innerHTML"],Gt={class:"alert alert-info"};function kt(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",jt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),Ot,vt,Object(l["createElementVNode"])("span",{innerHTML:e.yourCurrentIpAddressIs},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",Tt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),xt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",At,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ct])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Pt,[Object(l["createElementVNode"])("div",{innerHTML:e.keepUrlFragmentHelp},null,8,Dt),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",Gt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[8]||(t[8]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ut=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:De["Field"],SaveButton:De["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=ht.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Object(l["watch"])((function(){return ht.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){this.isSaving=!0,ht.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})}))}},computed:{isLoading:function(){return ht.isLoading.value||Re.isLoading.value||Xe.isLoading.value},timezones:function(){return Re.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ut.render=kt;var Lt=Ut;
+ */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),vt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},jt=Object(l["createElementVNode"])("br",null,null,-1),Ot=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),Tt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},xt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"timezoneHelp",class:"inline-help-node"},At={key:0},Ct=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Pt={id:"keepURLFragmentsHelp",class:"inline-help-node"},Dt=["innerHTML"],kt={class:"alert alert-info"};function Gt(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",vt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),jt,Ot,Object(l["createElementVNode"])("span",{innerHTML:e.yourCurrentIpAddressIs},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",Tt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),xt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",At,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ct])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Pt,[Object(l["createElementVNode"])("div",{innerHTML:e.keepUrlFragmentHelp},null,8,Dt),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",kt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[8]||(t[8]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ut=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:De["Field"],SaveButton:De["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=ht.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),Re.init(),ht.init(),Object(l["watch"])((function(){return ht.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){this.isSaving=!0,ht.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})}))}},computed:{isLoading:function(){return ht.isLoading.value||Re.isLoading.value||Xe.isLoading.value},timezones:function(){return Re.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ut.render=Gt;var Lt=Ut;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/SitesManager/vue/src/CurrencyStore/CurrencyStore.ts b/plugins/SitesManager/vue/src/CurrencyStore/CurrencyStore.ts
index dc27cd2f9b..2eb3606bfc 100644
--- a/plugins/SitesManager/vue/src/CurrencyStore/CurrencyStore.ts
+++ b/plugins/SitesManager/vue/src/CurrencyStore/CurrencyStore.ts
@@ -6,7 +6,7 @@
*/
import { reactive, readonly, computed } from 'vue';
-import { AjaxHelper, lazyInitSingleton } from 'CoreHome';
+import { AjaxHelper } from 'CoreHome';
interface CurrencyStoreState {
isLoading: boolean;
@@ -23,13 +23,19 @@ class CurrencyStore {
readonly isLoading = computed(() => readonly(this.privateState).isLoading);
- constructor() {
- this.fetchCurrencies();
+ private initializePromise: Promise<void>|null = null;
+
+ init() {
+ if (!this.initializePromise) {
+ this.initializePromise = this.fetchCurrencies();
+ }
+
+ return this.initializePromise;
}
private fetchCurrencies() {
this.privateState.isLoading = true;
- AjaxHelper.fetch<CurrencyStoreState['currencies']>({
+ return AjaxHelper.fetch<CurrencyStoreState['currencies']>({
method: 'SitesManager.getCurrencyList',
}).then((currencies) => {
this.privateState.currencies = currencies;
@@ -39,4 +45,4 @@ class CurrencyStore {
}
}
-export default lazyInitSingleton(CurrencyStore) as CurrencyStore;
+export default new CurrencyStore();
diff --git a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
index 384ec5a38f..13201e74ef 100644
--- a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
+++ b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
@@ -10,7 +10,7 @@ import {
readonly,
computed,
} from 'vue';
-import { AjaxHelper, lazyInitSingleton } from 'CoreHome';
+import { AjaxHelper } from 'CoreHome';
import GlobalSettings from './GlobalSettings';
interface GlobalSettingsStoreState {
@@ -48,11 +48,11 @@ class GlobalSettingsStore {
readonly globalSettings = computed(() => readonly(this.privateState).globalSettings);
- constructor() {
- this.fetchGlobalSettings();
+ init() {
+ return this.fetchGlobalSettings();
}
- public saveGlobalSettings(settings: SaveGlobalSettingsParams) {
+ saveGlobalSettings(settings: SaveGlobalSettingsParams) {
this.privateState.isLoading = true;
return AjaxHelper.post(
{
@@ -91,4 +91,4 @@ class GlobalSettingsStore {
}
}
-export default lazyInitSingleton(GlobalSettingsStore) as GlobalSettingsStore;
+export default new GlobalSettingsStore();
diff --git a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
index 65a3a04373..c6c550b3eb 100644
--- a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
+++ b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
@@ -261,6 +261,10 @@ export default defineComponent({
};
},
created() {
+ CurrencyStore.init();
+ TimezoneStore.init();
+ GlobalSettingsStore.init();
+
watch(() => GlobalSettingsStore.globalSettings.value, (settings) => {
this.keepURLFragmentsGlobal = settings.keepURLFragmentsGlobal;
this.defaultTimezone = settings.defaultTimezone;
diff --git a/plugins/SitesManager/vue/src/SiteFields/SiteFields.vue b/plugins/SitesManager/vue/src/SiteFields/SiteFields.vue
index 1e8d47a55f..1e744b8487 100644
--- a/plugins/SitesManager/vue/src/SiteFields/SiteFields.vue
+++ b/plugins/SitesManager/vue/src/SiteFields/SiteFields.vue
@@ -278,6 +278,10 @@ export default defineComponent({
},
emits: ['delete', 'editSite', 'cancelEditSite', 'save'],
created() {
+ CurrencyStore.init();
+ TimezoneStore.init();
+ SiteTypesStore.init();
+
this.onSiteChanged();
},
watch: {
diff --git a/plugins/SitesManager/vue/src/SiteTypesStore/SiteTypesStore.ts b/plugins/SitesManager/vue/src/SiteTypesStore/SiteTypesStore.ts
index 93abe1c8d1..9517af3560 100644
--- a/plugins/SitesManager/vue/src/SiteTypesStore/SiteTypesStore.ts
+++ b/plugins/SitesManager/vue/src/SiteTypesStore/SiteTypesStore.ts
@@ -10,7 +10,7 @@ import {
readonly,
computed,
} from 'vue';
-import { AjaxHelper, MatomoUrl, lazyInitSingleton } from 'CoreHome';
+import { AjaxHelper, MatomoUrl } from 'CoreHome';
import SiteType from './SiteType';
interface SiteTypesStoreState {
@@ -28,19 +28,19 @@ class SiteTypesStore {
typesById: {},
});
- public readonly typesById = computed(() => readonly(this.state).typesById);
+ readonly typesById = computed(() => readonly(this.state).typesById);
- public readonly isLoading = computed(() => readonly(this.state).isLoading);
+ readonly isLoading = computed(() => readonly(this.state).isLoading);
- public readonly types = computed(() => Object.values(this.typesById.value));
+ readonly types = computed(() => Object.values(this.typesById.value));
private response?: Promise<SiteTypesStore['types']['value']>;
- constructor() {
- this.fetchAvailableTypes();
+ init() {
+ return this.fetchAvailableTypes();
}
- public fetchAvailableTypes(): Promise<SiteTypesStore['types']['value']> {
+ fetchAvailableTypes(): Promise<SiteTypesStore['types']['value']> {
if (this.response) {
return Promise.resolve(this.response);
}
@@ -62,7 +62,7 @@ class SiteTypesStore {
return this.response;
}
- public getEditSiteIdParameter(): string|undefined {
+ getEditSiteIdParameter(): string|undefined {
// parse query directly because #/editsiteid=N was supported alongside #/?editsiteid=N
const m = MatomoUrl.hashQuery.value.match(/editsiteid=([0-9]+)/);
if (!m) {
@@ -80,11 +80,11 @@ class SiteTypesStore {
return undefined;
}
- public removeEditSiteIdParameterFromHash(): void {
+ removeEditSiteIdParameterFromHash(): void {
const params = { ...MatomoUrl.hashParsed.value };
delete params.editsiteid;
MatomoUrl.updateHash(params);
}
}
-export default lazyInitSingleton(SiteTypesStore) as SiteTypesStore;
+export default new SiteTypesStore();
diff --git a/plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue b/plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue
index d88f4f901f..e15d4e3162 100644
--- a/plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue
+++ b/plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue
@@ -103,6 +103,8 @@ export default defineComponent({
},
emits: ['add', 'search', 'prev', 'next', 'update:searchTerm'],
created() {
+ SiteTypesStore.init();
+
this.onKeydown = debounce(this.onKeydown, 50);
},
computed: {
diff --git a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
index a317352814..5b23d29fd4 100644
--- a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
+++ b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
@@ -205,6 +205,10 @@ export default defineComponent({
};
},
created() {
+ TimezoneStore.init();
+ SiteTypesStore.init();
+ GlobalSettingsStore.init();
+
this.isLoadingInitialEntities = true;
Promise.all([
SiteTypesStore.fetchAvailableTypes(),
diff --git a/plugins/SitesManager/vue/src/TimezoneStore/TimezoneStore.ts b/plugins/SitesManager/vue/src/TimezoneStore/TimezoneStore.ts
index d3c2f2fb3c..0aac1f2f5d 100644
--- a/plugins/SitesManager/vue/src/TimezoneStore/TimezoneStore.ts
+++ b/plugins/SitesManager/vue/src/TimezoneStore/TimezoneStore.ts
@@ -6,7 +6,7 @@
*/
import { reactive, readonly, computed } from 'vue';
-import { AjaxHelper, lazyInitSingleton } from 'CoreHome';
+import { AjaxHelper } from 'CoreHome';
interface Timezone {
group: string;
@@ -41,14 +41,20 @@ class TimezoneStore {
readonly isLoading = computed(() => this.state.value.isLoading);
- constructor() {
- this.privateState.isLoading = true;
- Promise.all([
- this.checkTimezoneSupportEnabled(),
- this.fetchTimezones(),
- ]).finally(() => {
- this.privateState.isLoading = false;
- });
+ private initializePromise: Promise<void>|null = null;
+
+ init() {
+ if (!this.initializePromise) {
+ this.privateState.isLoading = true;
+ this.initializePromise = Promise.all([
+ this.checkTimezoneSupportEnabled(),
+ this.fetchTimezones(),
+ ]).finally(() => {
+ this.privateState.isLoading = false;
+ }) as unknown as Promise<void>;
+ }
+
+ return this.initializePromise;
}
private fetchTimezones() {
@@ -78,4 +84,4 @@ class TimezoneStore {
}
}
-export default lazyInitSingleton(TimezoneStore) as TimezoneStore;
+export default new TimezoneStore();
diff --git a/plugins/TagManager b/plugins/TagManager
-Subproject bb66e4d233d049a8e790568f4bab99c0e87e865
+Subproject 5b2d83a7abaad256762c74cff9774aebafad5fb
diff --git a/plugins/TasksTimetable b/plugins/TasksTimetable
-Subproject b94e6b4c762e9dc440ee59ff0f95df3271c4db2
+Subproject 0acda040db7341d84f6738ec165feaf60433520
diff --git a/plugins/TrackingSpamPrevention b/plugins/TrackingSpamPrevention
-Subproject 985b24cf6e80db3ef7fb50f86891ca50c947528
+Subproject a31470c551fdb13af73a4fdc0b923f53e8912bf
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index 0dc1c726c5..d082013af6 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -21,7 +21,6 @@ use Piwik\Db;
use Piwik\Metrics;
use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugins\Actions\Actions;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Plugins\Live\Model;
use Piwik\RankingQuery;
@@ -326,7 +325,7 @@ class API extends \Piwik\Plugin\API
*
* @param $idaction
* @param $actionType
- * @param Logaggregator $logAggregator
+ * @param LogAggregator $logAggregator
* @param $limitBeforeGrouping
* @return DataTable
*/
diff --git a/plugins/Transitions/Widgets/GetTransitions.php b/plugins/Transitions/Widgets/GetTransitions.php
index 0c1cdf3e46..5825561deb 100644
--- a/plugins/Transitions/Widgets/GetTransitions.php
+++ b/plugins/Transitions/Widgets/GetTransitions.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Transitions\Widgets;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Transitions\Controller;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
diff --git a/plugins/TwoFactorAuth/Controller.php b/plugins/TwoFactorAuth/Controller.php
index 3ff82ac44c..ebf85de377 100644
--- a/plugins/TwoFactorAuth/Controller.php
+++ b/plugins/TwoFactorAuth/Controller.php
@@ -7,8 +7,6 @@
*/
namespace Piwik\Plugins\TwoFactorAuth;
-use Endroid\QrCode\QrCode;
-use Piwik\API\Request;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\IP;
diff --git a/plugins/TwoFactorAuth/SystemSettings.php b/plugins/TwoFactorAuth/SystemSettings.php
index 1fd6619ee9..8e2060a967 100644
--- a/plugins/TwoFactorAuth/SystemSettings.php
+++ b/plugins/TwoFactorAuth/SystemSettings.php
@@ -14,7 +14,6 @@ use Piwik\Settings\Setting;
use Piwik\Settings\FieldConfig;
use Piwik\Url;
use Piwik\Plugins\TwoFactorAuth\TwoFactorAuthentication;
-use Piwik\Container\StaticContainer;
class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings
{
diff --git a/plugins/TwoFactorAuth/lang/nb.json b/plugins/TwoFactorAuth/lang/nb.json
index 906f7e4c91..8147b580a7 100644
--- a/plugins/TwoFactorAuth/lang/nb.json
+++ b/plugins/TwoFactorAuth/lang/nb.json
@@ -3,23 +3,32 @@
"AskSuperUserResetAuthenticationCode": "Spør en superbruker om å tilbakestille identitetbekreftelseskoden din",
"AuthenticationCode": "Identitetsbekreftelseskode",
"ConfigureDifferentDevice": "Sett opp en annen enhet",
+ "ConfirmDisableTwoFA": "Er du sikker på at du vil skru av to-faktoridentitetsbekreftelse for kontoen din? Å ha to-faktoridentitetsbekreftelse påskrudd øker kontosikkerheten din.",
"ConfirmSetup": "Bekreft oppsett",
"DisableTwoFA": "Skru av to-faktoridentitetsbekreftelse",
"DontHaveYourMobileDevice": "Har du ingen mobilenhet?",
"EnableTwoFA": "Skru på to-faktoridentitetsbekreftelse",
"EnterRecoveryCodeInstead": "Skriv inn én av gjenopprettelseskodene dine",
"GenerateNewRecoveryCodes": "Generer nye gjenopprettelseskoder",
+ "GenerateNewRecoveryCodesInfo": "Når du genererer nye gjenopprettelseskoder vil de gamle slutte å fungere. Sørg for å laste ned eller skrive ut dine nye koder.",
"InvalidAuthCode": "To-faktoridentitetsbekreftelseskoden stemmer ikke.",
+ "LostAuthenticationDevice": "Hei %1$s. Jeg har to-faktoridentitetsbekreftelse påslått og har mistet min identitetbekreftelsesenhet. Kan du tilbakestille to-faktoridentitetsbekreftelse for brukernavnet mitt «%5$s»? Du finner instruks for dette her: %6$s. %2$sMatomo-nettadressen er %3$s.%4$s Takk.",
"MissingAuthCodeAPI": "Angi din to-faktoridentitetsbekreftelseskode.",
"NotPossibleToLogIn": "Kan ikke logge inn på Matomo Analytics",
"RecoveryCodes": "Gjenopprettelseskoder",
+ "RecoveryCodesAllUsed": "Alle gjenopprettelseskoder har blitt brukt. Det anbefales sterkt at du genererer nye.",
+ "RecoveryCodesExplanation": "Du kan bruke gjenopprettingskoder for å få tilgang til kontoen din når du ikke kan generere to-faktoridentitetsbekreftelseskoder, for eksempel når du ikke har mobilenheten med deg.",
+ "RecoveryCodesRegenerated": "Gjenopprettelseskoder har blitt regenerert. Forsikre deg om at du laster ned eller skriver ut de nylig genererte kodene.",
+ "RecoveryCodesSecurity": "Behandle gjenopprettingskodene dine med samme omhu som du har for passordet ditt.",
"RequireTwoFAForAll": "Krev to-faktoridentitetsbekreftelse for alle",
+ "RequireTwoFAForAllInformation": "Når påskrudd må hver bruker skru på to-faktoridentitetsbekreftelse. Å skru på 2FA krever at alle brukere har tilgang til en enhet de kan installere et identitetbekreftelsesprogram på. Du kan kun skru på dette hvis du allerede har to-faktoridentitetsbekreftelse påskrudd for deg selv.",
"RequiredAuthCodeNotConfiguredAPI": "Det kreves at du setter opp to-faktoridentitetsbekreftelse. Logg inn på kontoen din.",
"RequiredToSetUpTwoFactorAuthentication": "Det kreves at du setter opp to-faktoridentitetsbekreftelse før du kan logge inn",
"SetUpTwoFactorAuthentication": "Sett opp to-faktoridentitetsbekreftelse (2FA)",
"SetupAuthenticatorOnDevice": "Sett opp identitetbekreftelsesprogram på enheten din",
"SetupAuthenticatorOnDeviceStep1": "Installer et identitetbekreftelsesprogram, for eksempel:",
"SetupAuthenticatorOnDeviceStep2": "Så åpner du programmet og skanner strekkoden nedenfor med to-faktoridentitetbekreftelsesprogrammet på telefonen din. Hvis du ikke kan skanne strekkoden kan du skrive inn %1$sdenne koden%2$s istedenfor.",
+ "SetupBackupRecoveryCodes": "Sikkerhetskopier gjenopprettingskodene dine med én av metodene før du fortsetter oppsettet av to-faktoridentitetsbekreftelse.",
"SetupFinishedSubtitle": "Du har satt opp to-faktoridentitetsbekreftelse. Neste gang du logger inn må du også skrive inn en identitetbekreftelseskode. Forsikre deg om at du har mobilenheten din eller sikkerhetskopikodene dine med deg.",
"SetupFinishedTitle": "Gratulerer. Kontoen din er nå sikrere.",
"SetupIntroFollowSteps": "Følg disse stegene for å sette opp to-faktoridentitetsbekreftelse:",
@@ -32,7 +41,10 @@
"TwoFactorAuthenticationIsEnabled": "To-faktoridentitetsbekreftelse er for tiden påskrudd.",
"TwoFactorAuthenticationRequired": "To-faktoridentitetsbekreftelse kreves påslått for alle, du kan ikke skru det av.",
"Verify": "Bekreft",
+ "VerifyAuthCodeHelp": "Skriv inn den sekssifrede koden som ble generert på mobilenheten din etter at du har skannet strekkoden.",
+ "VerifyAuthCodeIntro": "Skriv inn den sekssifrede koden fra ditt identitetbekreftelsesprogram nedenfor for å bekrefte at du har satt opp enheten din rett.",
"VerifyIdentifyExplanation": "Åpne To-faktoridentitetsbekreftelsesprogrammet på enheten din for å vise to-faktoridentitetsbekreftelseskoden din og bekrefte identiteten din.",
+ "WarningChangingConfiguredDevice": "Du er i ferd med å endre oppsatt to-faktoridentitetsenhet. Dette invaliderer tidligere oppsatt enhet.",
"WrongAuthCodeTryAgain": "Feil identitetbekreftelseskode innskrevet. Prøv igjen.",
"Your2FaAuthSecret": "Din to-faktoridentitetsbekreftelseshemmeldighet"
}
diff --git a/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php b/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php
index 46b7ec2844..605d098351 100644
--- a/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php
+++ b/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\TwoFactorAuth\tests\Fixtures;
-use Piwik\Date;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php
index d47292d09c..959ca78ac6 100644
--- a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration\Dao;
-use Piwik\Common;
use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeRandomGenerator;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php
index a5668ebb17..753f7099f1 100644
--- a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration\Dao;
-use Piwik\Common;
use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeStaticGenerator;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php b/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php
index 6f04416457..d6c610d344 100644
--- a/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration\Dao;
-use Piwik\Common;
use Piwik\Plugins\TwoFactorAuth\Dao\TwoFaSecretRandomGenerator;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php b/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php
index b4ede7e6ab..045266a0b5 100644
--- a/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Option;
use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeDao;
diff --git a/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php b/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php
index f2398a0856..db4f069566 100644
--- a/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php
+++ b/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php
@@ -16,9 +16,6 @@ use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeDao;
use Piwik\Plugins\TwoFactorAuth\Dao\TwoFaSecretRandomGenerator;
use Piwik\Plugins\TwoFactorAuth\SystemSettings;
use Piwik\Plugins\TwoFactorAuth\TwoFactorAuthentication;
-use Piwik\Plugins\UsersManager\API;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\FakeAccess;
/**
* @group TwoFactorAuth
diff --git a/plugins/UserCountry/Controller.php b/plugins/UserCountry/Controller.php
index 1001108a64..6bbce30544 100644
--- a/plugins/UserCountry/Controller.php
+++ b/plugins/UserCountry/Controller.php
@@ -14,10 +14,8 @@ use Piwik\IP;
use Piwik\Notification;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
use Piwik\Plugins\UserCountry\LocationProvider\DisabledProvider;
-use Piwik\SettingsPiwik;
use Piwik\View;
/**
diff --git a/plugins/UserCountry/LocationProvider/DisabledProvider.php b/plugins/UserCountry/LocationProvider/DisabledProvider.php
index d5444a2c02..2adb74d001 100644
--- a/plugins/UserCountry/LocationProvider/DisabledProvider.php
+++ b/plugins/UserCountry/LocationProvider/DisabledProvider.php
@@ -8,8 +8,6 @@
*/
namespace Piwik\Plugins\UserCountry\LocationProvider;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Piwik;
use Piwik\Plugins\UserCountry\LocationProvider;
diff --git a/plugins/UserCountry/VisitorGeolocator.php b/plugins/UserCountry/VisitorGeolocator.php
index b5725d5188..35a95e8a2a 100644
--- a/plugins/UserCountry/VisitorGeolocator.php
+++ b/plugins/UserCountry/VisitorGeolocator.php
@@ -11,13 +11,10 @@ namespace Piwik\Plugins\UserCountry;
use Matomo\Cache\Cache;
use Matomo\Cache\Transient;
use Piwik\Common;
-use Piwik\Config\GeneralConfig;
use Piwik\Container\StaticContainer;
use Piwik\DataAccess\RawLogDao;
use Matomo\Network\IPUtils;
-use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
use Piwik\Plugins\UserCountry\LocationProvider\DisabledProvider;
-use Piwik\Tracker\TrackerConfig;
use Piwik\Tracker\Visit;
use Psr\Log\LoggerInterface;
diff --git a/plugins/UserCountry/functions.php b/plugins/UserCountry/functions.php
index 67eadf56ec..b99473f8dd 100644
--- a/plugins/UserCountry/functions.php
+++ b/plugins/UserCountry/functions.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\UserCountry;
use Piwik\DataTable;
use Piwik\Piwik;
-use Piwik\Plugin\Manager;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
use Piwik\Tracker\Visit;
diff --git a/plugins/UserCountryMap/Controller.php b/plugins/UserCountryMap/Controller.php
index 36920a51b4..8bfdabbe04 100644
--- a/plugins/UserCountryMap/Controller.php
+++ b/plugins/UserCountryMap/Controller.php
@@ -14,9 +14,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Piwik;
-use Piwik\Plugins\Goals\API as APIGoals;
-use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI;
-use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Translation\Translator;
use Piwik\View;
diff --git a/plugins/UserCountryMap/lang/id.json b/plugins/UserCountryMap/lang/id.json
index 7b923a9b57..42cc55e63a 100644
--- a/plugins/UserCountryMap/lang/id.json
+++ b/plugins/UserCountryMap/lang/id.json
@@ -8,9 +8,12 @@
"HoursAgo": "%s jam lalu",
"MinutesAgo": "%s menit lalu",
"NoVisit": "Tidak ada kunjungan",
+ "NoVisitsInfo": "Tidak ada kunjungan yang ditampilkan untuk saat ini, karena tidak ada kunjungan untuk periode saat ini yang memiliki informasi geolokasi yang benar (lintang &amp; bujur).",
+ "NoVisitsInfo2": "Untuk mengatasi masalah ini, pastikan Anda menggunakan penyedia geolokasi GeoIP dengan basis data kota GeoIP. Jika ini tidak menyelesaikan masalah Anda, maka mungkin (meskipun tidak mungkin) kunjungan Anda memiliki alamat IP yang tidak dapat diidentifikasi.",
"None": "Tidak Ada",
"PluginDescription": "Pengaya ini menyediakan gawit Peta Pengunjung dan Peta Waktu-Nyata. Catatan: Membutuhkan pengaya NegaraPengguna diaktifkan.",
"RealTimeMap": "Peta Waktu-Nyata",
+ "RealTimeMapHelp": "Peta Waktu Nyata menunjukkan lokasi pengunjung di situs Anda selama 30 menit terakhir. Gelembung oranye besar menunjukkan kunjungan yang terbaru, sedangkan gelembung abu-abu yang lebih kecil menunjukkan kunjungan lama. Data ini diperbarui setiap lima detik dan pengunjung baru ditandai dengan efek berkedip.",
"Regions": "Wilayah",
"Searches": "%s pencarian",
"SecondsAgo": "%s detik lalu",
diff --git a/plugins/UserId/API.php b/plugins/UserId/API.php
index 92dc26e4b1..1b2bc52655 100644
--- a/plugins/UserId/API.php
+++ b/plugins/UserId/API.php
@@ -9,10 +9,8 @@
namespace Piwik\Plugins\UserId;
use Piwik\Archive;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
/**
* API for plugin UserId. Allows to get User IDs table.
diff --git a/plugins/UserId/Columns/UserId.php b/plugins/UserId/Columns/UserId.php
index ec53be2426..9a282d1e6e 100644
--- a/plugins/UserId/Columns/UserId.php
+++ b/plugins/UserId/Columns/UserId.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\UserId\Columns;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
/**
diff --git a/plugins/UserId/Reports/GetUsers.php b/plugins/UserId/Reports/GetUsers.php
index 24d0320157..8abf20a33a 100644
--- a/plugins/UserId/Reports/GetUsers.php
+++ b/plugins/UserId/Reports/GetUsers.php
@@ -12,8 +12,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\UserId\Columns\UserId;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
/**
* A report showing all unique user IDs and some aggregated information about them. It also allows
diff --git a/plugins/UserId/UserId.php b/plugins/UserId/UserId.php
index b56fa25590..75aa2ae10f 100644
--- a/plugins/UserId/UserId.php
+++ b/plugins/UserId/UserId.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId;
-use Piwik\Db;
/**
* Plugin adds a new Users report showing all unique user IDs and some aggregated data
diff --git a/plugins/UserId/lang/id.json b/plugins/UserId/lang/id.json
index 2ec10bf809..1df67f5be8 100644
--- a/plugins/UserId/lang/id.json
+++ b/plugins/UserId/lang/id.json
@@ -1,7 +1,10 @@
{
"UserId": {
+ "PluginDescription": "Tampilkan laporan pengguna",
+ "ThereIsNoDataForThisReportHelp": "%1$sPelajari lebih lanjut tentang cara menghasilkan data untuk laporan ini di panduan pengguna kami.%2$s",
"UserId": "IdPengguna",
+ "UserReportDocumentation": "Laporan ini menunjukkan kunjungan dan metrik umum lainnya untuk setiap ID Pengguna individual.",
"UserReportTitle": "ID pengguna",
- "PluginDescription": "Tampilkan laporan pengguna"
+ "VisitorsUserSubcategoryHelp": "Laporan ID Pengguna menunjukkan tentang kunjungan yang terkait dengan semua pengguna Anda yang terdaftar dan masuk. Anda dapat menggunakan bagian ini untuk memahami penggunaan situs web oleh pengguna tertentu dan mengidentifikasi siapa pengguna yang paling aktif dan paling tidak aktif."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php b/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php
index 5c1a16650d..733af46946 100644
--- a/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php
+++ b/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php
@@ -7,9 +7,7 @@
*/
namespace Piwik\Plugins\UserId\tests\Fixtures;
-use Piwik\Config;
use Piwik\Date;
-use Piwik\Plugins\UserId\API;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php b/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
index 43fb36f482..ff29a592e6 100644
--- a/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
+++ b/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId\tests\Fixtures;
use Piwik\Date;
-use Piwik\Plugins\UserId\API;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/UserId/tests/System/ApiTest.php b/plugins/UserId/tests/System/ApiTest.php
index 3d626944f1..82f1079d71 100644
--- a/plugins/UserId/tests/System/ApiTest.php
+++ b/plugins/UserId/tests/System/ApiTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId\tests\System;
-use Piwik\Config;
use Piwik\Plugins\UserId\tests\Fixtures\TrackFewVisitsAndCreateUsers;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/plugins/UserId/tests/System/OverwriteUserIdTest.php b/plugins/UserId/tests/System/OverwriteUserIdTest.php
index 6b018d3749..6f6c0ba7af 100644
--- a/plugins/UserId/tests/System/OverwriteUserIdTest.php
+++ b/plugins/UserId/tests/System/OverwriteUserIdTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId\tests\System;
-use Piwik\Config;
use Piwik\Plugins\UserId\tests\Fixtures\OverwriteUserIdFixture;
use Piwik\Plugins\UserId\tests\Fixtures\TrackFewVisitsAndCreateUsers;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/plugins/UserLanguage/API.php b/plugins/UserLanguage/API.php
index e924500a8b..756330f647 100644
--- a/plugins/UserLanguage/API.php
+++ b/plugins/UserLanguage/API.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\UserLanguage;
use Piwik\Archive;
-use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Piwik;
/**
diff --git a/plugins/UserLanguage/Reports/Base.php b/plugins/UserLanguage/Reports/Base.php
index 00d21dd7cc..87a98e780b 100644
--- a/plugins/UserLanguage/Reports/Base.php
+++ b/plugins/UserLanguage/Reports/Base.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\UserLanguage\Reports;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
abstract class Base extends \Piwik\Plugin\Report
{
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index 5c258b54e4..b3efa63712 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -709,7 +709,7 @@ class API extends \Piwik\Plugin\API
* @see isValidPasswordString()
* @see isValidEmailString()
*
- * @exception in case of an invalid parameter
+ * @throws Exception in case of an invalid parameter
*/
public function addUser($userLogin, $password, $email, $_isPasswordHashed = false, $initialIdSite = null)
{
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index e3ee4f912b..559ffd4324 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -23,16 +23,12 @@ use Piwik\Plugin\ControllerAdmin;
use Piwik\Plugins\LanguagesManager\API as APILanguagesManager;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\Login\PasswordVerifier;
-use Piwik\Plugins\TagManager\Validators\TriggerIds;
use Piwik\Plugins\UsersManager\API as APIUsersManager;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Tracker\IgnoreCookie;
use Piwik\Translation\Translator;
use Piwik\Url;
-use Piwik\Validators\BaseValidator;
-use Piwik\Validators\CharacterLength;
-use Piwik\Validators\NotEmpty;
use Piwik\View;
use Piwik\Session\SessionInitializer;
use Piwik\Plugins\CoreAdminHome\Emails\TokenAuthCreatedEmail;
diff --git a/plugins/UsersManager/Model.php b/plugins/UsersManager/Model.php
index 6d38068274..915adf8767 100644
--- a/plugins/UsersManager/Model.php
+++ b/plugins/UsersManager/Model.php
@@ -10,16 +10,13 @@ namespace Piwik\Plugins\UsersManager;
use Piwik\Auth\Password;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
use Piwik\Db;
use Piwik\Option;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Plugins\UsersManager\Sql\SiteAccessFilter;
use Piwik\Plugins\UsersManager\Sql\UserTableFilter;
use Piwik\SettingsPiwik;
-use Piwik\SettingsServer;
use Piwik\Validators\BaseValidator;
use Piwik\Validators\CharacterLength;
use Piwik\Validators\NotEmpty;
diff --git a/plugins/UsersManager/NewsletterSignup.php b/plugins/UsersManager/NewsletterSignup.php
index ab8739570b..3e8be85a89 100644
--- a/plugins/UsersManager/NewsletterSignup.php
+++ b/plugins/UsersManager/NewsletterSignup.php
@@ -15,7 +15,6 @@ use Piwik\Container\StaticContainer;
use Piwik\Http;
use Piwik\Option;
use Piwik\SettingsPiwik;
-use Piwik\Url;
class NewsletterSignup
{
diff --git a/plugins/UsersManager/Sql/UserTableFilter.php b/plugins/UsersManager/Sql/UserTableFilter.php
index 3ff916772b..4743d17755 100644
--- a/plugins/UsersManager/Sql/UserTableFilter.php
+++ b/plugins/UsersManager/Sql/UserTableFilter.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\UsersManager\Sql;
-use Piwik\Access;
use Piwik\Common;
use Piwik\Piwik;
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index e4185dfff2..13c65cb315 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -12,13 +12,10 @@ use Exception;
use Piwik\Access\Role\Admin;
use Piwik\Access\Role\Write;
use Piwik\API\Request;
-use Piwik\Auth\Password;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\CoreHome\SystemSummary;
-use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
use Piwik\SettingsPiwik;
/**
diff --git a/plugins/UsersManager/lang/ca.json b/plugins/UsersManager/lang/ca.json
index b20c4cdaf3..69abd06bfb 100644
--- a/plugins/UsersManager/lang/ca.json
+++ b/plugins/UsersManager/lang/ca.json
@@ -1,40 +1,191 @@
{
"UsersManager": {
+ "2FA": "2FA",
+ "AddExistingUser": "Afegeix un usuari existent",
+ "AddNewUser": "Afegeix un usuari nou",
+ "AddSuperuserAccessConfirm": "Donar accés de superusuari a un usuari permetrà que l'usuari tingui un control total sobre Matomo i s'hauria de fer amb moderació. Introduïu la vostra contrasenya per continuar.",
"AddUser": "Afegeix un usuari nou",
- "AllWebsites": "Tots els llocs",
- "ApplyToAllWebsites": "Aplica a tots els llocs",
- "ClickHereToDeleteTheCookie": "Feu clic aquí per eliminar la galeta i que Matomo faci el seguiment de les vostres visites",
- "ClickHereToSetTheCookieOnDomain": "Feu click aquí per guardar una galeta que exclourà les vostres visitis al Matomo de %s",
- "DeleteConfirm": "Esteu segur que voleu eliminar l'usuari %s?",
- "Email": "Correu-e",
- "EmailYourAdministrator": "%1$sEnvieu un email al vostre administrador explicant el problema%2$s.",
- "ExceptionDeleteDoesNotExist": "L'usuari '%s' no existeix i, per tant, no es pot esborrar.",
- "ExceptionEditAnonymous": "L'usuari anònim no es pot editar o esborrar. El Matomo el fa servir per als usuaris que no han iniciat encara la sessió. Per exemple, podeu fer públiques les vostres estadístiques garantint el permís 'vista' a l'usuari 'anonymous' (anònim).",
- "ExceptionEmailExists": "La direcció de correu-e '%s' ja està en un altre compte.",
- "ExceptionInvalidEmail": "La direcció de correu-e no té un format vàlid.",
+ "AddUserNoInitialAccessError": "Els usuaris nous han de tenir accés a un lloc web; si us plau, configureu el paràmetre 'initialIdSite'.",
+ "AllUsersAreSelected": "Tots els %1$s usuaris estan seleccionats.",
+ "AllWebsites": "Tots els llocs web",
+ "AllWebsitesAreSelected": "Tots els %1$s llocs web estan seleccionats.",
+ "AnonymousAccessConfirmation": "Esteu a punt de concedir a l'usuari anònim l'accés \"visualització\" a aquest lloc web. Això significa que els vostres informes d'anàlisi i la informació dels vostres visitants seran visibles públicament per tothom, fins i tot sense iniciar sessió. Esteu segur que voleu continuar?",
+ "AnonymousUser": "Usuari anònim",
+ "AnonymousUserHasViewAccess": "Nota: l'usuari de %1$s té accés de %2$s a aquest lloc web.",
+ "AnonymousUserHasViewAccess2": "Els vostres informes d'anàlisi i la informació dels vostres visitants es poden veure públicament.",
+ "AnonymousUserRoleChangeWarning": "Donar a l'usuari %1$s el rol %2$s farà que les dades d'aquest lloc web siguin públiques i estiguin disponibles per a tothom, encara que no tinguin un inici de sessió a Matomo.",
+ "ApplyToAllWebsites": "Aplicar a tots els llocs web",
+ "AreYouSure": "N'esteu segur?",
+ "AreYouSureAddCapability": "Esteu segur que voleu donar a %1$s la capacitat de %2$s per a %3$s?",
+ "AreYouSureChangeDetails": "Esteu segur que voleu canviar la informació de l'usuari per %s?",
+ "AreYouSureRemoveCapability": "Esteu segur que voleu eliminar la capacitat %1$s de %2$s per a %3$s?",
+ "AtLeastView": "Almenys veure",
+ "AuthTokenPurpose": "Per a què fas servir aquest testimoni?",
+ "AuthTokens": "Testimonis d'autenticació",
+ "BasicInformation": "Informació bàsica",
+ "BulkActions": "Accions massives",
+ "Capabilities": "Capacitats",
+ "CapabilitiesHelp": "Les capacitats són habilitats individuals que es poden concedir als usuaris. Els rols poden, per defecte, atorgar determinades capacitats. Per exemple, la funció d'administrador permetrà automàticament als usuaris editar etiquetes al Gestor d'etiquetes. Tanmateix, per als usuaris menys potents, podeu oferir-los de manera explícita les capacitats.",
+ "Capability": "Capacitat",
+ "ChangeAllConfirm": "Esteu segur que voleu donar accés \"%s\" a tots els llocs web?",
+ "ChangePermToAllSitesConfirm": "Esteu segur que voleu donar accés a l'usuari %1$s l'accés %2$s per a tots els llocs web als quals teniu actualment accés d'administrador?",
+ "ChangePermToAllSitesConfirm2": "Nota: això només afectarà els llocs web existents actualment. Els llocs web nous que podeu crear no seran accessibles automàticament per a aquest usuari.",
+ "ChangePermToSiteConfirmMultiple": "Esteu segur que voleu canviar el rol de %1$s als %2$s llocs web seleccionats a %3$s?",
+ "ChangePermToSiteConfirmSingle": "Esteu segur que voleu canviar la funció de %1$s a %2$s a %3$s?",
+ "ClickHereToDeleteTheCookie": "Feu clic aquí per eliminar la galeta i que Matomo faci un seguiment de les vostres visites",
+ "ClickHereToSetTheCookieOnDomain": "Feu clic aquí per configurar una galeta que exclou les vostres visites als llocs web seguits per Matomo a %s",
+ "ClickToSelectAll": "Feu clic per seleccionar tots els %1$s.",
+ "ClickToSelectDisplayedUsers": "Feu clic per seleccionar els %1$s usuaris que es mostren.",
+ "ClickToSelectDisplayedWebsites": "Feu clic per seleccionar els %1$s llocs web que es mostren.",
+ "ConfirmGrantSuperUserAccess": "Realment voleu concedir accés de superusuari a '%s'? Avís: l'usuari tindrà accés a tots els llocs web i podrà realitzar tasques administratives.",
+ "ConfirmProhibitMySuperUserAccess": "%s, realment vols eliminar el teu propi accés de superusuari? Perdràs tots els permisos i l'accés a tots els llocs web i es tancarà la sessió de Matomo.",
+ "ConfirmProhibitOtherUsersSuperUserAccess": "Realment voleu eliminar l'accés de superusuari de '%s'? L'usuari perdrà tots els permisos i l'accés a tots els llocs web. Assegureu-vos de donar accés als llocs web necessaris després si cal.",
+ "ConfirmTokenCopied": "Confirmo que he copiat el testimoni i entenc que no hauria de compartir aquest testimoni amb ningú més.",
+ "ConfirmWithPassword": "Introduïu la vostra contrasenya per confirmar aquest canvi.",
+ "CreateNewToken": "Crea un testimoni nou",
+ "CreateUser": "Crear usuari",
+ "CurrentPasswordNotCorrect": "La contrasenya actual que heu introduït no és correcta.",
+ "DeleteAllTokens": "Suprimeix tots els testimonis",
+ "DeleteConfirm": "Esteu segur que voleu suprimir l'usuari %s?",
+ "DeletePermConfirmMultiple": "Esteu segur que voleu eliminar l'accés de %1$s als%2$s llocs web seleccionats?",
+ "DeletePermConfirmSingle": "Esteu segur que voleu eliminar l'accés de %1$s a %2$s?",
+ "DeleteUserConfirmMultiple": "Esteu segur que voleu suprimir els %1$s usuaris seleccionats?",
+ "DeleteUserConfirmSingle": "Esteu segur que voleu suprimir %1$s?",
+ "DeleteUserPermConfirmMultiple": "Esteu segur que voleu canviar el rol dels %1$s usuaris seleccionats a %2$s per a %3$s?",
+ "DeleteUserPermConfirmSingle": "Esteu segur que voleu canviar el rol de %1$s a %2$s per a %3$s?",
+ "DeleteUsers": "Eliminar usuaris",
+ "DoNotStoreToken": "No compartiu aquest testimoni amb ningú més, ja que és tan secret com el vostre inici de sessió i contrasenya.",
+ "EditUser": "Edita l'usuari",
+ "Email": "Correu electrònic",
+ "EmailChangeNotificationSubject": "S'acaba de canviar l'adreça de correu electrònic del vostre compte de Matomo",
+ "EmailChangedEmail1": "L'adreça electrònica associada al vostre compte s'ha canviat a %1$s",
+ "EmailChangedEmail2": "Aquest canvi s'ha iniciat des del dispositiu següent: %1$s (adreça IP = %2$s).",
+ "EmailYourAdministrator": "%1$sEnvieu un correu electrònic al vostre administrador sobre aquest problema%2$s.",
+ "EnterUsernameOrEmail": "Introduïu un nom d'usuari o una adreça de correu electrònic",
+ "ExceptionAccessValues": "El paràmetre \"access\" ha de contenir un dels valors següents: [ %1$s ], actualment \"%2$s\".",
+ "ExceptionAnonymousAccessNotPossible": "Només podeu configurar l'accés %1$s o l'accés %2$s a l'usuari \"anònim\".",
+ "ExceptionAnonymousNoCapabilities": "No podeu concedir cap capacitat a l'usuari \"anònim\".",
+ "ExceptionDeleteDoesNotExist": "L'usuari '%s' no existeix i per tant no es pot suprimir.",
+ "ExceptionDeleteOnlyUserWithSuperUserAccess": "No és possible suprimir l'usuari '%s'.",
+ "ExceptionEditAnonymous": "L'usuari anònim no es pot editar ni esborrar. El Matomo l'utilitza per definir un usuari que encara no ha iniciat sessió. Per exemple, podeu fer públiques les vostres estadístiques concedint l'accés \"visualització\" a l'usuari \"anònim\".",
+ "ExceptionEmailExists": "L'usuari amb el correu electrònic '%s' ja existeix.",
+ "ExceptionEmailExistsAsLogin": "El correu electrònic '%s' ja s'utilitza com a nom d'usuari.",
+ "ExceptionInvalidEmail": "El correu electrònic no té un format vàlid.",
+ "ExceptionInvalidLoginFormat": "El nom d'usuari ha de tenir entre %1$s i %2$s caràcters i contenir només lletres, números o els caràcters '_', '-' o '.' o '@' o '+'",
+ "ExceptionInvalidPassword": "La longitud de la contrasenya ha de ser superior a %1$s caràcters.",
+ "ExceptionInvalidPasswordTooLong": "La longitud de la contrasenya ha de ser inferior a %1$s caràcters.",
+ "ExceptionLoginExists": "El nom d'usuari '%s' ja existeix.",
+ "ExceptionLoginExistsAsEmail": "El nom d'usuari '%s' ja s'utilitza com a correu electrònic.",
+ "ExceptionMultipleRoleSet": "Només es pot establir un rol, però se n'han establert diversos. Utilitzeu només un de: %s",
+ "ExceptionNoRoleSet": "No s'ha definit cap rol, però cal definir un d'aquests: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Introduïu un nom d'usuari o una adreça de correu electrònic.",
+ "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth espera una contrasenya amb hash MD5 (cadena de 32 caràcters). Si us plau crideu la funció md5() de la contrasenya abans d'invocar aquest mètode.",
+ "ExceptionRemoveSuperUserAccessOnlySuperUser": "No és possible eliminar l'accés de superusuari de l'usuari '%s'.",
+ "ExceptionSuperUserAccess": "Aquest usuari té accés de superusuari i ja té permís per accedir i modificar tots els llocs web de Matomo. Podeu eliminar l'accés de superusuari d'aquest usuari i tornar-ho a provar.",
"ExceptionUserDoesNotExist": "L'usuari '%s' no existeix.",
- "ExcludeVisitsViaCookie": "Exclou les teues visites utilitzant cookies",
- "ForAnonymousUsersReportDateToLoadByDefault": "Pels usuaris anònims, introduïu la data dels informes per defecte",
- "InjectedHostCannotChangePwd": "Actualment esteu visitan amb un host desconegut (%1$s). No podeu canviar la vostra contrasenya fins que corregiu aquest problema.",
- "ManageAccess": "Gestiona els permisos",
- "MenuAnonymousUserSettings": "Preferències de l'usuari anònim",
- "MenuUserSettings": "Preferències d'usuari",
+ "ExceptionUserHasSuperUserAccess": "L'usuari '%s' té accés de superusuari i ja té permís per accedir i modificar tots els llocs web de Matomo. Podeu eliminar l'accés de superusuari d'aquest usuari i tornar-ho a provar.",
+ "ExceptionUserHasViewAccessAlready": "Aquest usuari ja té accés a aquest lloc web.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Hi ha d'haver almenys un usuari amb accés de superusuari. Concediu primer l'accés de superusuari a un altre usuari.",
+ "ExcludeVisitsViaCookie": "Excloeu les vostres visites mitjançant una galeta",
+ "ExpireDate": "Data d'expiració",
+ "ExpiredTokensDeleteAutomatically": "Els testimonis amb data de caducitat s'eliminaran automàticament.",
+ "FilterByAccess": "Filtrar per accés",
+ "FilterByWebsite": "Filtrar per lloc web",
+ "FirstSiteInlineHelp": "Cal donar a un usuari nou una funció de visualització per a un lloc web en crear-lo. Si no es dóna accés, l'usuari veurà un error en iniciar sessió. Podeu donar més permisos després de crear l'usuari a la pestanya \"Permisos\" que apareixerà a l'esquerra.",
+ "FirstWebsitePermission": "Primer permís del lloc web",
+ "ForAnonymousUsersReportDateToLoadByDefault": "Per als usuaris anònims, la data de l'informe per carregar de manera predeterminada",
+ "GiveAccessToAll": "Doneu a aquest usuari accés a tots els llocs web",
+ "GiveUserAccess": "Doneu accés %2$s a \"%1$s\" per a %3$s.",
+ "GiveViewAccess": "Doneu accés de visualització a %1$s",
+ "GiveViewAccessInstructions": "Per donar accés de visualització a %s per a un usuari existent introduïu el nom d'usuari o l'adreça de correu electrònic d'un usuari existent",
+ "GiveViewAccessTitle": "Doneu accés a un usuari existent per veure els informes de %s",
+ "GoBackSecurityPage": "Torna a la pàgina de seguretat.",
+ "HasSuperUserAccess": "Té accés de superusuari",
+ "IfThisWasYouIgnoreIfNot": "Si heu estat vos, podeu ignorar aquest correu electrònic. Si no ereu vos, inicieu sessió, corregiu la vostra adreça de correu electrònic, canvieu la contrasenya i contacteu amb el vostre administrador de Matomo.",
+ "IfThisWasYouPasswordChange": "Si heu estat vos podeu ignorar aquest correu electrònic. Si no heu etsta vos, contacteu immediatament amb el vostre administrador de Matomo, ja que el vostre compte podria haver estat compromès!",
+ "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Si voleu canviar la contrasenya, introduïu-ne una de nova. En cas contrari, deixeu-ho en blanc.",
+ "IncludedInUsersRole": "Inclosa en el rol d'aquest usuari.",
+ "InjectedHostCannotChangePwd": "Actualment esteu visitant des d'un hoste desconegut (%1$s). No podeu canviar la contrasenya fins que no s'hagi solucionat aquest problema.",
+ "LastSeen": "Vist per últim cop",
+ "LastUsed": "Últim utilitzat",
+ "MainDescription": "Decidiu quins usuaris tenen accés als vostres llocs web. També podeu donar accés a tots els llocs web alhora escollint \"Aplica a tots els llocs web\" al selector de llocs web.",
+ "ManageAccess": "Gestionar l'accés",
+ "ManageUsers": "Gestionar Usuaris",
+ "ManageUsersAdminDesc": "Creeu usuaris nous o actualitzeu els usuaris existents. Aquí també podeu establir els seus permisos. Tingueu en compte que heu iniciat sessió com a administrador. Això vol dir que només veieu i gestioneu els usuaris que tenen accés als llocs web específics on teniu permisos \"administrador\". Només un usuari amb accés de superusuari pot veure i gestionar tots els usuaris de tots els llocs web.",
+ "ManageUsersDesc": "Creeu usuaris nous o actualitzeu els usuaris existents. Aquí també podeu establir els seus permisos.",
+ "MenuAnonymousUserSettings": "Configuració d'usuari anònim",
+ "MenuPersonal": "Personal",
+ "MenuUserSettings": "Configuració d'usuari",
"MenuUsers": "Usuaris",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: No podeu canviar la configuració en aquest secció, perquè no teniu cap lloc web que pot ser visitat per usuaris anònims.",
- "PrivAdmin": "Administració",
+ "NewsletterSignupFailureMessage": "Vaja, alguna cosa ha fallat. No us hem pogut subscriure al butlletí.",
+ "NewsletterSignupMessage": "Subscriviu-vos al nostre butlletí per rebre informació regular sobre Matomo. Podeu donar-vos de baixa en qualsevol moment. Aquest servei utilitza MadMimi. Més informació al respecte a la %1$spàgina de política de privadesa de Matomo%2$s.",
+ "NewsletterSignupSuccessMessage": "Fantàstic, ja esteu inscrit! Ens posarem en contacte aviat.",
+ "NewsletterSignupTitle": "Inscripció al butlletí",
+ "NoAccessWarning": "Aquest usuari no té accés a cap lloc web. Quan iniciïn sessió veuran un missatge d'error. Per evitar-ho, afegiu accés a un lloc web a continuació.",
+ "NoTokenCreatedYetCreateNow": "Encara no s'ha creat cap testimoni, %1$screeu un testimoni nou ara%2$s.",
+ "NoUsersExist": "Encara no hi ha usuaris.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: no podeu canviar la configuració d'aquesta secció, perquè no teniu cap lloc web al qual pugui accedir l'usuari anònim.",
+ "OrManageIndividually": "O gestioneu l'accés d'aquest usuari a cada lloc web de manera individual",
+ "PasswordChangeNotificationSubject": "S'acaba de canviar la contrasenya del vostre compte de Matomo",
+ "PasswordChangedEmail": "S'acaba de canviar la teva contrasenya. El canvi s'ha iniciat des del dispositiu següent: %1$s (adreça IP = %2$s).",
+ "Permissions": "Permisos",
+ "PersonalSettings": "Configuració personal",
+ "PleaseStoreToken": "Si us plau emmagatzemeu el vostre testimoni de manera segura, ja que no podreu accedir-hi ni tornar-lo a veure.",
+ "PluginDescription": "La gestió d'usuaris us permet afegir nous usuaris, editar usuaris existents i donar-los accés per veure o administrar llocs web.",
+ "PrivAdmin": "Administrador",
+ "PrivAdminDescription": "Els usuaris amb aquest rol poden gestionar un lloc web i donar accés al lloc web a d'altres usuaris. També poden fer tot el que el rol de %s pot fer.",
"PrivNone": "Sense accés",
"PrivView": "Vista",
- "ReportDateToLoadByDefault": "Data dels informes per defecte",
- "ReportToLoadByDefault": "Informe per defecte",
- "TheLoginScreen": "Pàgina d'entrada",
+ "PrivViewDescription": "Un usuari amb aquest rol pot veure tots els informes.",
+ "PrivWrite": "Escriure",
+ "PrivWriteDescription": "Els usuaris amb aquest rol poden veure tot el contingut a més de crear, gestionar i suprimir entitats com ara objectius, embuts, mapes de calor, enregistraments de sessions i formularis per a aquest lloc web.",
+ "RemoveAllAccessToThisSite": "Elimina tots els accessos a aquest lloc web",
+ "RemovePermissions": "Elimina els permisos",
+ "RemoveSuperuserAccessConfirm": "L'eliminació de l'accés de superusuari deixarà l'usuari sense permisos (haureu d'afegir-los després). Introduïu la vostra contrasenya per continuar.",
+ "RemoveUserAccess": "Suprimeix l'accés a \"%1$s\" a %2$s.",
+ "ReportDateToLoadByDefault": "Data de l'informe per carregar de manera predeterminada",
+ "ReportToLoadByDefault": "Informe per carregar per defecte",
+ "ResetTwoFactorAuthentication": "Restableix l'autenticació de dos factors",
+ "ResetTwoFactorAuthenticationInfo": "Si l'usuari ja no pot iniciar sessió a causa de la pèrdua de codis de recuperació o d'un dispositiu d'autenticació perdut, podeu restablir l'autenticació de dos factors per a l'usuari perquè pugui tornar a iniciar la sessió.",
+ "Role": "Rol",
+ "RoleFor": "Rol per a",
+ "RolesHelp": "Els rols determinen què pot fer un usuari a Matomo en relació a un lloc web específic. Més informació sobre les funcions %1$sLectura%2$s i %3$sAdministració%4$s.",
+ "SaveBasicInfo": "Desa la informació bàsica",
+ "SetPermission": "Estableix el permís",
+ "SuperUserAccess": "Accés superusuari",
+ "SuperUserAccessManagement": "Gestiona l'accés de superusuari",
+ "SuperUserAccessManagementGrantMore": "Aquí podeu concedir accés de superusuari a d'altres usuaris de Matomo. Si us plau utilitzeu aquesta funció amb cura.",
+ "SuperUserAccessManagementMainDescription": "Els superusuaris tenen els permisos més elevats. Poden realitzar totes les tasques administratives, com ara afegir nous llocs web per supervisar, afegir usuaris, canviar els permisos d'usuari, activar i desactivar connectors i fins i tot instal·lar connectors nous des del Marketplace.",
+ "SuperUserIntro1": "Els superusuaris tenen els permisos més elevats. Poden realitzar totes les tasques administratives, com ara afegir nous llocs web per supervisar, afegir usuaris, canviar els permisos d'usuari, activar i desactivar connectors i fins i tot instal·lar connectors nous des del Marketplace. Podeu concedir accés de superusuari a d'altres usuaris de Divezone aquí.",
+ "SuperUserIntro2": "Si us plau utilitzeu aquesta funció amb cura.",
+ "SuperUsersPermissionsNotice": "Els superusuaris tenen accés d'administrador a tots els llocs web, de manera que no cal gestionar els seus permisos per cada lloc web.",
+ "TheDisplayedUsersAreSelected": "S'han seleccionat els %1$s usuaris que es mostren.",
+ "TheDisplayedWebsitesAreSelected": "Els %1$s llocs web que es mostren estan seleccionats.",
+ "TheLoginScreen": "La pantalla d'inici de sessió",
"ThereAreCurrentlyNRegisteredUsers": "Actualment hi ha %s usuaris registrats.",
- "TypeYourPasswordAgain": "Introduïu de nou la nova contrasenya.",
+ "TokenAuth": "Testimoni d'autenticació de l'API",
+ "TokenAuthIntro": "Els testimonis que heu generat es poden utilitzar per accedir a l'API d'informes de Matomo, a l'API de seguiment de Matomo i als ginys de Matomo exportats i tenen els mateixos permisos que el vostre inici de sessió d'usuari habitual. També podeu utilitzar aquests testimonis per a l'aplicació Matomo Mobile.",
+ "TokenRegenerateConfirmSelf": "Si canvieu el testimoni d'autenticació de l'API, invalidarà el vostre propi testimoni. Si el testimoni actual està en ús, heu d'actualitzar tots els clients de l'API amb el testimoni generat de nou. Realment voleu canviar el vostre testimoni d'autenticació?",
+ "TokenRegenerateTitle": "Regenerar",
+ "TokenSuccessfullyDeleted": "El testimoni s'ha suprimit correctament",
+ "TokenSuccessfullyGenerated": "El testimoni s'ha generat correctament",
+ "TokensSuccessfullyDeleted": "Tots els testimonis s'han suprimit correctament",
+ "TokensWithExpireDateCreationBySystem": "Actualment només el sistema pot crear testimonis amb data de caducitat",
+ "TwoFactorAuthentication": "Autenticació de dos factors",
+ "TypeYourCurrentPassword": "Escriviu la vostra contrasenya actual per confirmar el canvi de contrasenya.",
+ "TypeYourPasswordAgain": "Torna a escriure la teva nova contrasenya.",
"User": "Usuari",
- "Username": "Usuari",
- "UsersManagement": "Gestiona els usuaris",
- "UsersManagementMainDescription": "Creeu nous usuaris o actualitzeu els existents. Podeu configurar els seus permisos a dalt.",
- "YourUsernameCannotBeChanged": "No es pot canviar el vostre nom d'usuari.",
- "YourVisitsAreIgnoredOnDomain": "%1$sLes vostres visites són ignorades pel Matomo %2$s %3$s (la galeta d'ignorància del Matomo s'ha trobat al vostre navegador).",
- "YourVisitsAreNotIgnored": "%1$sLes vostres visites no són ignorades pel Matomo%2$s (la galeta d'ignorància del Matomo no s'ha trobat al vostre navegador)."
+ "UserHasNoPermission": "%1$s actualment té %2$s a %3$s",
+ "UserHasPermission": "%1$s té accés %2$s a %3$s.",
+ "UserSearch": "Cerca d'usuaris",
+ "Username": "Nom d'usuari",
+ "UsersManagement": "Gestió d'usuaris",
+ "UsersManagementMainDescription": "Creeu usuaris nous o actualitzeu els usuaris existents. Tot seguit podeu establir els seus permisos a dalt.",
+ "UsesTwoFactorAuthentication": "Utilitza l'autenticació de dos factors",
+ "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quan els usuaris no han iniciat sessió i visiten Matomo, haurien de veure inicialment",
+ "YourCurrentPassword": "La vostra contrasenya actual",
+ "YourUsernameCannotBeChanged": "El vostre nom d'usuari no es pot canviar.",
+ "YourVisitsAreIgnoredOnDomain": "%1$sMatomo ignora les vostres visites a %2$s %3$s (la galeta d'ignorar Matomo s'ha trobat al vostre navegador).",
+ "YourVisitsAreNotIgnored": "%1$sMatomo no ignora les vostres visites%2$s (la galeta d'ignorar Matomo no s'ha trobat al vostre navegador)."
}
}
diff --git a/plugins/UsersManager/tests/Integration/ModelTest.php b/plugins/UsersManager/tests/Integration/ModelTest.php
index c19e974b9a..6dd9f6b881 100644
--- a/plugins/UsersManager/tests/Integration/ModelTest.php
+++ b/plugins/UsersManager/tests/Integration/ModelTest.php
@@ -10,20 +10,15 @@ namespace Piwik\Plugins\UsersManager\tests\Integration;
use Piwik\Access\Role\View;
use Piwik\Access\Role\Write;
-use Piwik\Auth\Password;
use Piwik\Common;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\Model;
-use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Access\Role\Admin;
/**
diff --git a/plugins/UsersManager/tests/Integration/UsersManagerTest.php b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
index 0599554b34..6a8bc89220 100644
--- a/plugins/UsersManager/tests/Integration/UsersManagerTest.php
+++ b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\UsersManager\tests\Integration;
use Piwik\Access;
use Piwik\Auth\Password;
-use Piwik\Common;
use Piwik\Date;
use Piwik\Option;
use Piwik\Plugins\SitesManager\API as APISitesManager;
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.js b/plugins/UsersManager/vue/dist/UsersManager.umd.js
index e4ab913ac6..a79c88744d 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.js
@@ -156,7 +156,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue?vue&type=template&id=259d8ccf
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue?vue&type=template&id=7d385264
var _hoisted_1 = ["title"];
var _hoisted_2 = ["onClick"];
@@ -233,7 +233,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, ["prevent"]))
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 2);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue?vue&type=template&id=259d8ccf
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue?vue&type=template&id=7d385264
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
@@ -280,11 +280,14 @@ var CapabilitiesStore_CapabilitiesStore = /*#__PURE__*/function () {
}));
_defineProperty(this, "fetchPromise", void 0);
-
- this.fetchCapabilities();
}
_createClass(CapabilitiesStore, [{
+ key: "init",
+ value: function init() {
+ return this.fetchCapabilities();
+ }
+ }, {
key: "fetchCapabilities",
value: function fetchCapabilities() {
var _this2 = this;
@@ -308,7 +311,7 @@ var CapabilitiesStore_CapabilitiesStore = /*#__PURE__*/function () {
return CapabilitiesStore;
}();
-/* harmony default export */ var src_CapabilitiesStore_CapabilitiesStore = (Object(external_CoreHome_["lazyInitSingleton"])(CapabilitiesStore_CapabilitiesStore));
+/* harmony default export */ var src_CapabilitiesStore_CapabilitiesStore = (new CapabilitiesStore_CapabilitiesStore());
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue?vue&type=script&lang=ts
@@ -357,6 +360,8 @@ var _window = window,
created: function created() {
var _this = this;
+ src_CapabilitiesStore_CapabilitiesStore.init();
+
if (!this.capabilities) {
this.isBusy = true;
external_CoreHome_["AjaxHelper"].fetch({
@@ -3587,38 +3592,38 @@ NewsletterSettingsvue_type_script_lang_ts.render = NewsletterSettingsvue_type_te
scope: {},
directiveName: 'matomoNewsletterSettings'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=template&id=d46d01d4
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=template&id=94ecac48
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_1 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_1 = {
id: "userSettingsTable"
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_2 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_2 = {
key: 0
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_3 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_3 = {
id: "languageHelp",
class: "inline-help-node"
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_4 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_4 = {
target: "_blank",
rel: "noreferrer noopener",
href: "https://matomo.org/translations/"
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_5 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_5 = {
class: "sites_autocomplete"
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_6 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_6 = {
class: "modal",
id: "confirmChangesWithPassword",
ref: "confirmChangesWithPasswordModal"
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_7 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_7 = {
class: "modal-content"
};
-var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_8 = {
+var PersonalSettingsvue_type_template_id_94ecac48_hoisted_8 = {
class: "modal-footer"
};
-function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $props, $setup, $data, $options) {
+function PersonalSettingsvue_type_template_id_94ecac48_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SiteSelector = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SiteSelector");
@@ -3634,7 +3639,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
feature: 'true'
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", PersonalSettingsvue_type_template_id_94ecac48_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "username",
title: _ctx.translate('General_Username'),
@@ -3644,7 +3649,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
return _ctx.username = $event;
}),
"inline-help": _ctx.translate('UsersManager_YourUsernameCannotBeChanged')
- }, null, 8, ["title", "modelValue", "inline-help"])]), _ctx.isUsersAdminEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["title", "modelValue", "inline-help"])]), _ctx.isUsersAdminEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PersonalSettingsvue_type_template_id_94ecac48_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "email",
"model-value": _ctx.email,
@@ -3654,7 +3659,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
}),
maxlength: 100,
title: _ctx.translate('UsersManager_Email')
- }, null, 8, ["model-value", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('LanguagesManager_AboutPiwikTranslations')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_94ecac48_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PersonalSettingsvue_type_template_id_94ecac48_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('LanguagesManager_AboutPiwikTranslations')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "language",
modelValue: _ctx.language,
@@ -3683,7 +3688,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
introduction: _ctx.translate('UsersManager_ReportToLoadByDefault'),
title: _ctx.translate('General_AllWebsitesDashboard'),
options: _ctx.defaultReportOptions
- }, null, 8, ["modelValue", "introduction", "title", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SiteSelector, {
+ }, null, 8, ["modelValue", "introduction", "title", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_94ecac48_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SiteSelector, {
modelValue: _ctx.site,
"onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
return _ctx.site = $event;
@@ -3707,7 +3712,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
return _ctx.save();
}),
saving: _ctx.loading
- }, null, 8, ["saving"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["saving"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_94ecac48_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_94ecac48_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "password",
name: "currentPassword",
autocomplete: false,
@@ -3717,7 +3722,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
}),
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_94ecac48_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action btn",
onClick: _cache[9] || (_cache[9] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -3737,7 +3742,7 @@ function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $pro
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=template&id=d46d01d4
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=template&id=94ecac48
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=script&lang=ts
@@ -3780,7 +3785,7 @@ var PersonalSettingsvue_type_script_lang_ts_window = window,
required: true
},
defaultReport: {
- type: String,
+ type: [String, Number],
required: true
},
defaultReportOptions: {
@@ -3895,7 +3900,7 @@ var PersonalSettingsvue_type_script_lang_ts_window = window,
-PersonalSettingsvue_type_script_lang_ts.render = PersonalSettingsvue_type_template_id_d46d01d4_render
+PersonalSettingsvue_type_script_lang_ts.render = PersonalSettingsvue_type_template_id_94ecac48_render
/* harmony default export */ var PersonalSettings = (PersonalSettingsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.adapter.ts
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
index 643bff5ed7..370dfc72c5 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
@@ -4,7 +4,7 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var C=function(){function e(){var t=this;f(this,e),v(this,"privateState",Object(a["reactive"])({isLoading:!1,capabilities:[]})),v(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),v(this,"capabilities",Object(a["computed"])((function(){return t.state.value.capabilities}))),v(this,"isLoading",Object(a["computed"])((function(){return t.state.value.isLoading}))),v(this,"fetchPromise",void 0),this.fetchCapabilities()}return j(e,[{key:"fetchCapabilities",value:function(){var e=this;return this.fetchPromise||(this.privateState.isLoading=!0,this.fetchPromise=i["AjaxHelper"].fetch({method:"UsersManager.getAvailableCapabilities"}).then((function(t){return e.privateState.capabilities=t,e.capabilities.value})).finally((function(){e.privateState.isLoading=!1}))),this.fetchPromise}}]),e}(),S=Object(i["lazyInitSingleton"])(C),N=window,U=N.$,y=Object(a["defineComponent"])({props:{idsite:[String,Number],siteName:{type:String,required:!0},userLogin:{type:String,required:!0},userRole:{type:String,required:!0},capabilities:Array},components:{Field:h["Field"]},data:function(){return{theCapabilities:this.capabilities||[],isBusy:!1,isAddingCapability:!1,capabilityToAddId:null,capabilityToRemoveId:null,capabilityToAddOrRemove:null}},emits:["change"],watch:{capabilities:function(e){e&&(this.theCapabilities=e)}},created:function(){var e=this;this.capabilities?this.theCapabilities=this.capabilities:(this.isBusy=!0,i["AjaxHelper"].fetch({method:"UsersManager.getUsersPlusRole",limit:"1",filter_search:this.userLogin}).then((function(e){return e&&e.capabilities?e.capabilities:[]})).then((function(t){e.theCapabilities=t})).finally((function(){e.isBusy=!1})))},methods:{onToggleCapability:function(e){var t=this;this.isAddingCapability=e;var n=e?this.capabilityToAddId:this.capabilityToRemoveId;this.capabilityToAddOrRemove=null,this.availableCapabilities.forEach((function(e){e.id===n&&(t.capabilityToAddOrRemove=e)})),this.$refs.confirmCapabilityToggleModal&&U(this.$refs.confirmCapabilityToggleModal).modal({dismissible:!1,yes:function(){return null}}).modal("open")},toggleCapability:function(){this.isAddingCapability?this.addCapability(this.capabilityToAddOrRemove):this.removeCapability(this.capabilityToAddOrRemove)},isIncludedInRole:function(e){return-1!==(e.includedInRoles||[]).indexOf(this.userRole)},getCapabilitiesList:function(){var e=this,t=[];return this.availableCapabilities.forEach((function(n){e.isIncludedInRole(n)||e.capabilitiesSet[n.id]&&t.push(n.id)})),t},addCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.addCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))},removeCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.removeCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))}},computed:{availableCapabilities:function(){return S.capabilities.value},confirmAddCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureAddCapability","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},confirmCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureRemoveCapability","<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},siteNameText:function(){return i["Matomo"].helper.htmlEntities(this.siteName)},availableCapabilitiesGrouped:function(){var e=this,t=this.availableCapabilities.filter((function(t){return!e.capabilitiesSet[t.id]})).map((function(e){return{group:e.category,key:e.id,value:e.name,tooltip:e.description}}));return t.sort((function(e,t){return e.group===t.group?e.value===t.value?0:e.value<t.value?-1:1:e.group<t.group?-1:1})),t},capabilitiesSet:function(){var e=this,t={},n=this.theCapabilities;return(n||[]).forEach((function(e){t[e]=!0})),(this.availableCapabilities||[]).forEach((function(n){e.isIncludedInRole(n)&&(t[n.id]=!0)})),t},actualCapabilities:function(){var e=this.capabilitiesSet;return this.availableCapabilities.filter((function(t){return!!e[t.id]}))}}});y.render=g;var V=y,E=(Object(i["createAngularJsAdapter"])({component:V,scope:{idsite:{angularJsBind:"<"},siteName:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userRole:{angularJsBind:"<"},capabilities:{angularJsBind:"<"},onCapabilitiesChange:{angularJsBind:"&",vue:"change"}},directiveName:"piwikCapabilitiesEdit",restrict:"E",$inject:["$timeout"],events:{change:function(e,t,n,s,r,i,a){a((function(){n.onCapabilitiesChange&&n.onCapabilitiesChange.call({capabilities:e})}))}}}),{key:0,class:"row"}),k={class:"row to-all-websites"},A={class:"col s12"},w={style:{"margin-right":"3.5px"}},T={id:"all-sites-access-select",style:{"margin-right":"3.5px"}},B={style:{"margin-top":"18px"}},D={class:"filters row"},_={class:"col s12 m12 l8"},L={class:"input-field bulk-actions",style:{"margin-right":"3.5px"}},R={id:"user-permissions-edit-bulk-actions",class:"dropdown-content"},x={class:"dropdown-trigger","data-target":"user-permissions-bulk-set-access"},P={id:"user-permissions-bulk-set-access",class:"dropdown-content"},F=["onClick"],H={class:"input-field site-filter",style:{"margin-right":"3.5px"}},I=["value","placeholder"],J={class:"input-field access-filter",style:{"margin-right":"3.5px"}},q={key:0,class:"col s12 m12 l4 sites-for-permission-pagination-container"},G={class:"sites-for-permission-pagination"},$={class:"counter"},W=["textContent"],z={class:"roles-help-notification"},Y=["innerHTML"],X={class:"capabilities-help-notification"},K={id:"sitesForPermission"},Q={class:"select-cell"},Z={class:"checkbox-container"},ee=["checked"],te=Object(a["createElementVNode"])("span",null,null,-1),ne={class:"role_header"},se=["innerHTML"],re=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ie=[re],ae={class:"capabilities_header"},oe=["innerHTML"],le=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ce=[le],de={key:0,class:"select-all-row"},ue={colspan:"4"},me={key:0},be=["innerHTML"],pe=["innerHTML"],ge={key:1},he=["innerHTML"],fe=["innerHTML"],Oe={class:"select-cell"},je={class:"checkbox-container"},ve=["id","onUpdate:modelValue"],Ce=Object(a["createElementVNode"])("span",null,null,-1),Se={class:"role-select"},Ne={class:"delete-access-confirm-modal modal",ref:"deleteAccessConfirmModal"},Ue={class:"modal-content"},ye=["innerHTML"],Ve=["innerHTML"],Ee={class:"modal-footer"},ke={class:"change-access-confirm-modal modal",ref:"changeAccessConfirmModal"},Ae={class:"modal-content"},we=["innerHTML"],Te=["innerHTML"],Me={class:"modal-footer"},Be={class:"confirm-give-access-all-sites modal",ref:"confirmGiveAccessAllSitesModal"},De={class:"modal-content"},_e=["innerHTML"],Le={class:"modal-footer"};
+ */var C=function(){function e(){var t=this;f(this,e),v(this,"privateState",Object(a["reactive"])({isLoading:!1,capabilities:[]})),v(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),v(this,"capabilities",Object(a["computed"])((function(){return t.state.value.capabilities}))),v(this,"isLoading",Object(a["computed"])((function(){return t.state.value.isLoading}))),v(this,"fetchPromise",void 0)}return j(e,[{key:"init",value:function(){return this.fetchCapabilities()}},{key:"fetchCapabilities",value:function(){var e=this;return this.fetchPromise||(this.privateState.isLoading=!0,this.fetchPromise=i["AjaxHelper"].fetch({method:"UsersManager.getAvailableCapabilities"}).then((function(t){return e.privateState.capabilities=t,e.capabilities.value})).finally((function(){e.privateState.isLoading=!1}))),this.fetchPromise}}]),e}(),S=new C,N=window,U=N.$,y=Object(a["defineComponent"])({props:{idsite:[String,Number],siteName:{type:String,required:!0},userLogin:{type:String,required:!0},userRole:{type:String,required:!0},capabilities:Array},components:{Field:h["Field"]},data:function(){return{theCapabilities:this.capabilities||[],isBusy:!1,isAddingCapability:!1,capabilityToAddId:null,capabilityToRemoveId:null,capabilityToAddOrRemove:null}},emits:["change"],watch:{capabilities:function(e){e&&(this.theCapabilities=e)}},created:function(){var e=this;S.init(),this.capabilities?this.theCapabilities=this.capabilities:(this.isBusy=!0,i["AjaxHelper"].fetch({method:"UsersManager.getUsersPlusRole",limit:"1",filter_search:this.userLogin}).then((function(e){return e&&e.capabilities?e.capabilities:[]})).then((function(t){e.theCapabilities=t})).finally((function(){e.isBusy=!1})))},methods:{onToggleCapability:function(e){var t=this;this.isAddingCapability=e;var n=e?this.capabilityToAddId:this.capabilityToRemoveId;this.capabilityToAddOrRemove=null,this.availableCapabilities.forEach((function(e){e.id===n&&(t.capabilityToAddOrRemove=e)})),this.$refs.confirmCapabilityToggleModal&&U(this.$refs.confirmCapabilityToggleModal).modal({dismissible:!1,yes:function(){return null}}).modal("open")},toggleCapability:function(){this.isAddingCapability?this.addCapability(this.capabilityToAddOrRemove):this.removeCapability(this.capabilityToAddOrRemove)},isIncludedInRole:function(e){return-1!==(e.includedInRoles||[]).indexOf(this.userRole)},getCapabilitiesList:function(){var e=this,t=[];return this.availableCapabilities.forEach((function(n){e.isIncludedInRole(n)||e.capabilitiesSet[n.id]&&t.push(n.id)})),t},addCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.addCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))},removeCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.removeCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))}},computed:{availableCapabilities:function(){return S.capabilities.value},confirmAddCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureAddCapability","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},confirmCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureRemoveCapability","<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},siteNameText:function(){return i["Matomo"].helper.htmlEntities(this.siteName)},availableCapabilitiesGrouped:function(){var e=this,t=this.availableCapabilities.filter((function(t){return!e.capabilitiesSet[t.id]})).map((function(e){return{group:e.category,key:e.id,value:e.name,tooltip:e.description}}));return t.sort((function(e,t){return e.group===t.group?e.value===t.value?0:e.value<t.value?-1:1:e.group<t.group?-1:1})),t},capabilitiesSet:function(){var e=this,t={},n=this.theCapabilities;return(n||[]).forEach((function(e){t[e]=!0})),(this.availableCapabilities||[]).forEach((function(n){e.isIncludedInRole(n)&&(t[n.id]=!0)})),t},actualCapabilities:function(){var e=this.capabilitiesSet;return this.availableCapabilities.filter((function(t){return!!e[t.id]}))}}});y.render=g;var V=y,E=(Object(i["createAngularJsAdapter"])({component:V,scope:{idsite:{angularJsBind:"<"},siteName:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userRole:{angularJsBind:"<"},capabilities:{angularJsBind:"<"},onCapabilitiesChange:{angularJsBind:"&",vue:"change"}},directiveName:"piwikCapabilitiesEdit",restrict:"E",$inject:["$timeout"],events:{change:function(e,t,n,s,r,i,a){a((function(){n.onCapabilitiesChange&&n.onCapabilitiesChange.call({capabilities:e})}))}}}),{key:0,class:"row"}),k={class:"row to-all-websites"},A={class:"col s12"},w={style:{"margin-right":"3.5px"}},T={id:"all-sites-access-select",style:{"margin-right":"3.5px"}},B={style:{"margin-top":"18px"}},D={class:"filters row"},_={class:"col s12 m12 l8"},L={class:"input-field bulk-actions",style:{"margin-right":"3.5px"}},R={id:"user-permissions-edit-bulk-actions",class:"dropdown-content"},x={class:"dropdown-trigger","data-target":"user-permissions-bulk-set-access"},P={id:"user-permissions-bulk-set-access",class:"dropdown-content"},F=["onClick"],H={class:"input-field site-filter",style:{"margin-right":"3.5px"}},I=["value","placeholder"],J={class:"input-field access-filter",style:{"margin-right":"3.5px"}},q={key:0,class:"col s12 m12 l4 sites-for-permission-pagination-container"},G={class:"sites-for-permission-pagination"},$={class:"counter"},W=["textContent"],z={class:"roles-help-notification"},Y=["innerHTML"],X={class:"capabilities-help-notification"},K={id:"sitesForPermission"},Q={class:"select-cell"},Z={class:"checkbox-container"},ee=["checked"],te=Object(a["createElementVNode"])("span",null,null,-1),ne={class:"role_header"},se=["innerHTML"],re=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ie=[re],ae={class:"capabilities_header"},oe=["innerHTML"],le=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ce=[le],de={key:0,class:"select-all-row"},ue={colspan:"4"},me={key:0},be=["innerHTML"],pe=["innerHTML"],ge={key:1},he=["innerHTML"],fe=["innerHTML"],Oe={class:"select-cell"},je={class:"checkbox-container"},ve=["id","onUpdate:modelValue"],Ce=Object(a["createElementVNode"])("span",null,null,-1),Se={class:"role-select"},Ne={class:"delete-access-confirm-modal modal",ref:"deleteAccessConfirmModal"},Ue={class:"modal-content"},ye=["innerHTML"],Ve=["innerHTML"],Ee={class:"modal-footer"},ke={class:"change-access-confirm-modal modal",ref:"changeAccessConfirmModal"},Ae={class:"modal-content"},we=["innerHTML"],Te=["innerHTML"],Me={class:"modal-footer"},Be={class:"confirm-give-access-all-sites modal",ref:"confirmGiveAccessAllSitesModal"},De={class:"modal-content"},_e=["innerHTML"],Le={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
@@ -46,7 +46,7 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ks(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SiteSelector"),c=Object(a["resolveComponent"])("SaveButton"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{"content-title":e.title,feature:"true"},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("form",vs,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"text",name:"username",title:e.translate("General_Username"),disabled:!0,modelValue:e.username,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t}),"inline-help":e.translate("UsersManager_YourUsernameCannotBeChanged")},null,8,["title","modelValue","inline-help"])]),e.isUsersAdminEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cs,[Object(a["createVNode"])(o,{uicontrol:"text",name:"email","model-value":e.email,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.email=t,e.doesRequirePasswordConfirmation=!0}),maxlength:100,title:e.translate("UsersManager_Email")},null,8,["model-value","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Ss,[Object(a["createElementVNode"])("a",Ns,Object(a["toDisplayString"])(e.translate("LanguagesManager_AboutPiwikTranslations")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"language",modelValue:e.language,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.language=t}),title:e.translate("General_Language"),options:e.languageOptions,"inline-help":"#languageHelp"},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"timeformat",modelValue:e.timeformat,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.timeformat=t}),title:e.translate("General_TimeFormat"),options:e.timeFormats},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultReport",modelValue:e.theDefaultReport,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theDefaultReport=t}),introduction:e.translate("UsersManager_ReportToLoadByDefault"),title:e.translate("General_AllWebsitesDashboard"),options:e.defaultReportOptions},null,8,["modelValue","introduction","title","options"])]),Object(a["createElementVNode"])("div",Us,[Object(a["createVNode"])(l,{modelValue:e.site,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.site=t}),"show-selected-site":!0,"switch-site-on-select":!1,"show-all-sites-item":!1,showselectedsite:!0,id:"defaultReportSiteSelector"},null,8,["modelValue"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultDate",modelValue:e.theDefaultDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.theDefaultDate=t}),introduction:e.translate("UsersManager_ReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.loading},null,8,["saving"]),Object(a["createElementVNode"])("div",ys,[Object(a["createElementVNode"])("div",Vs,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"password",name:"currentPassword",autocomplete:!1,modelValue:e.passwordCurrent,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.passwordCurrent=t}),"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Es,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.save()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Ok")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.passwordCurrent=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512),[[u]])]})),_:1},8,["content-title"])}var As=window,ws=As.$,Ts=Object(a["defineComponent"])({props:{isUsersAdminEnabled:{type:Boolean,required:!0},title:{type:String,required:!0},userLogin:{type:String,required:!0},userEmail:{type:String,required:!0},currentLanguageCode:{type:String,required:!0},languageOptions:{type:Object,required:!0},currentTimeformat:{type:Number,required:!0},timeFormats:{type:Object,required:!0},defaultReport:{type:String,required:!0},defaultReportOptions:{type:Object,required:!0},defaultReportIdSite:{type:[String,Number],required:!0},defaultReportSiteName:{type:String,required:!0},defaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"],SiteSelector:i["SiteSelector"]},directives:{Form:h["Form"]},data:function(){return{doesRequirePasswordConfirmation:!1,username:this.userLogin,email:this.userEmail,language:this.currentLanguageCode,timeformat:this.currentTimeformat,theDefaultReport:this.defaultReport,site:{id:this.defaultReportIdSite,name:i["Matomo"].helper.htmlDecode(this.defaultReportSiteName)},theDefaultDate:this.defaultDate,loading:!1,passwordCurrent:""}},methods:{save:function(){var e=this;if(!this.doesRequirePasswordConfirmation||this.passwordCurrent){var t=M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);t&&t.close();var n={email:this.email,defaultReport:"MultiSites"===this.theDefaultReport?this.theDefaultReport:this.site.id,defaultDate:this.theDefaultDate,language:this.language,timeformat:this.timeformat};this.passwordCurrent&&(n.passwordConfirmation=this.passwordCurrent),this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordUserSettings",format:"json"},n,{withTokenInUrl:!0}).then((function(){var t=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"PersonalSettingsSuccess",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.doesRequirePasswordConfirmation=!1,e.passwordCurrent="",e.loading=!1})).catch((function(){e.loading=!1,e.passwordCurrent=""}))}else ws(this.$refs.confirmChangesWithPasswordModal).modal({dismissible:!1,ready:function(){ws(".modal.open #currentPassword").focus()}}).modal("open")}}});Ts.render=ks;var Ms=Ts;
+ */function ks(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SiteSelector"),c=Object(a["resolveComponent"])("SaveButton"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{"content-title":e.title,feature:"true"},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("form",vs,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"text",name:"username",title:e.translate("General_Username"),disabled:!0,modelValue:e.username,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t}),"inline-help":e.translate("UsersManager_YourUsernameCannotBeChanged")},null,8,["title","modelValue","inline-help"])]),e.isUsersAdminEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cs,[Object(a["createVNode"])(o,{uicontrol:"text",name:"email","model-value":e.email,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.email=t,e.doesRequirePasswordConfirmation=!0}),maxlength:100,title:e.translate("UsersManager_Email")},null,8,["model-value","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Ss,[Object(a["createElementVNode"])("a",Ns,Object(a["toDisplayString"])(e.translate("LanguagesManager_AboutPiwikTranslations")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"language",modelValue:e.language,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.language=t}),title:e.translate("General_Language"),options:e.languageOptions,"inline-help":"#languageHelp"},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"timeformat",modelValue:e.timeformat,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.timeformat=t}),title:e.translate("General_TimeFormat"),options:e.timeFormats},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultReport",modelValue:e.theDefaultReport,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theDefaultReport=t}),introduction:e.translate("UsersManager_ReportToLoadByDefault"),title:e.translate("General_AllWebsitesDashboard"),options:e.defaultReportOptions},null,8,["modelValue","introduction","title","options"])]),Object(a["createElementVNode"])("div",Us,[Object(a["createVNode"])(l,{modelValue:e.site,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.site=t}),"show-selected-site":!0,"switch-site-on-select":!1,"show-all-sites-item":!1,showselectedsite:!0,id:"defaultReportSiteSelector"},null,8,["modelValue"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultDate",modelValue:e.theDefaultDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.theDefaultDate=t}),introduction:e.translate("UsersManager_ReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.loading},null,8,["saving"]),Object(a["createElementVNode"])("div",ys,[Object(a["createElementVNode"])("div",Vs,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"password",name:"currentPassword",autocomplete:!1,modelValue:e.passwordCurrent,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.passwordCurrent=t}),"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Es,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.save()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Ok")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.passwordCurrent=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512),[[u]])]})),_:1},8,["content-title"])}var As=window,ws=As.$,Ts=Object(a["defineComponent"])({props:{isUsersAdminEnabled:{type:Boolean,required:!0},title:{type:String,required:!0},userLogin:{type:String,required:!0},userEmail:{type:String,required:!0},currentLanguageCode:{type:String,required:!0},languageOptions:{type:Object,required:!0},currentTimeformat:{type:Number,required:!0},timeFormats:{type:Object,required:!0},defaultReport:{type:[String,Number],required:!0},defaultReportOptions:{type:Object,required:!0},defaultReportIdSite:{type:[String,Number],required:!0},defaultReportSiteName:{type:String,required:!0},defaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"],SiteSelector:i["SiteSelector"]},directives:{Form:h["Form"]},data:function(){return{doesRequirePasswordConfirmation:!1,username:this.userLogin,email:this.userEmail,language:this.currentLanguageCode,timeformat:this.currentTimeformat,theDefaultReport:this.defaultReport,site:{id:this.defaultReportIdSite,name:i["Matomo"].helper.htmlDecode(this.defaultReportSiteName)},theDefaultDate:this.defaultDate,loading:!1,passwordCurrent:""}},methods:{save:function(){var e=this;if(!this.doesRequirePasswordConfirmation||this.passwordCurrent){var t=M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);t&&t.close();var n={email:this.email,defaultReport:"MultiSites"===this.theDefaultReport?this.theDefaultReport:this.site.id,defaultDate:this.theDefaultDate,language:this.language,timeformat:this.timeformat};this.passwordCurrent&&(n.passwordConfirmation=this.passwordCurrent),this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordUserSettings",format:"json"},n,{withTokenInUrl:!0}).then((function(){var t=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"PersonalSettingsSuccess",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.doesRequirePasswordConfirmation=!1,e.passwordCurrent="",e.loading=!1})).catch((function(){e.loading=!1,e.passwordCurrent=""}))}else ws(this.$refs.confirmChangesWithPasswordModal).modal({dismissible:!1,ready:function(){ws(".modal.open #currentPassword").focus()}}).modal("open")}}});Ts.render=ks;var Ms=Ts;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue b/plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue
index e1c226b56e..f1e638bbb4 100644
--- a/plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue
+++ b/plugins/UsersManager/vue/src/CapabilitiesEdit/CapabilitiesEdit.vue
@@ -135,6 +135,8 @@ export default defineComponent({
},
},
created() {
+ CapabilitiesStore.init();
+
if (!this.capabilities) {
this.isBusy = true;
diff --git a/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.adapter.ts b/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.adapter.ts
index dc3f08419f..beb6c0413b 100644
--- a/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.adapter.ts
+++ b/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.adapter.ts
@@ -7,7 +7,7 @@
import { DeepReadonly } from 'vue';
import Capability from './Capability';
-import CapabilitiesStore from "./CapabilitiesStore";
+import CapabilitiesStore from './CapabilitiesStore';
function permissionsMetadataServiceAdapter() {
return {
diff --git a/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.ts b/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.ts
index 36b3c8113f..667d90fa35 100644
--- a/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.ts
+++ b/plugins/UsersManager/vue/src/CapabilitiesStore/CapabilitiesStore.ts
@@ -11,7 +11,7 @@ import {
computed,
DeepReadonly,
} from 'vue';
-import { AjaxHelper, lazyInitSingleton } from 'CoreHome';
+import { AjaxHelper } from 'CoreHome';
import Capability from './Capability';
interface CapabilitiesStoreState {
@@ -33,8 +33,8 @@ class CapabilitiesStore {
private fetchPromise?: Promise<DeepReadonly<Capability[]>>;
- constructor() {
- this.fetchCapabilities();
+ init() {
+ return this.fetchCapabilities();
}
public fetchCapabilities(): Promise<DeepReadonly<Capability[]>> {
@@ -54,4 +54,4 @@ class CapabilitiesStore {
}
}
-export default lazyInitSingleton(CapabilitiesStore) as CapabilitiesStore;
+export default new CapabilitiesStore();
diff --git a/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue b/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue
index 927368a371..1780e05675 100644
--- a/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue
+++ b/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue
@@ -147,7 +147,7 @@ interface PersonalSettingsState {
email: string;
language: string;
timeformat: number;
- theDefaultReport: string;
+ theDefaultReport: string|number;
site: SiteRef;
theDefaultDate: string;
loading: boolean;
@@ -191,7 +191,7 @@ export default defineComponent({
required: true,
},
defaultReport: {
- type: String,
+ type: [String, Number],
required: true,
},
defaultReportOptions: {
diff --git a/plugins/VisitFrequency/API.php b/plugins/VisitFrequency/API.php
index a8119636a2..227de40ca6 100644
--- a/plugins/VisitFrequency/API.php
+++ b/plugins/VisitFrequency/API.php
@@ -13,7 +13,6 @@ use Piwik\DataTable;
use Piwik\Period;
use Piwik\Piwik;
use Piwik\Plugins\API\DataTable\MergeDataTables;
-use Piwik\Plugins\VisitsSummary\API as APIVisitsSummary;
use Piwik\Segment;
use Piwik\Segment\SegmentExpression;
diff --git a/plugins/VisitFrequency/Controller.php b/plugins/VisitFrequency/Controller.php
index 07ea4a7c62..7c6bb1c00c 100644
--- a/plugins/VisitFrequency/Controller.php
+++ b/plugins/VisitFrequency/Controller.php
@@ -14,7 +14,6 @@ use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
-use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
{
diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php
index c9709d2817..753f54f383 100644
--- a/plugins/VisitFrequency/VisitFrequency.php
+++ b/plugins/VisitFrequency/VisitFrequency.php
@@ -8,8 +8,6 @@
*/
namespace Piwik\Plugins\VisitFrequency;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
-use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
class VisitFrequency extends \Piwik\Plugin
{
diff --git a/plugins/VisitTime/Archiver.php b/plugins/VisitTime/Archiver.php
index e4d0357710..53372c644b 100644
--- a/plugins/VisitTime/Archiver.php
+++ b/plugins/VisitTime/Archiver.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\VisitTime;
use Piwik\DataArray;
-use Piwik\DataTable;
use Piwik\Date;
class Archiver extends \Piwik\Plugin\Archiver
diff --git a/plugins/VisitTime/Columns/DayOfTheWeek.php b/plugins/VisitTime/Columns/DayOfTheWeek.php
index c8a4a8361d..66531beb75 100644
--- a/plugins/VisitTime/Columns/DayOfTheWeek.php
+++ b/plugins/VisitTime/Columns/DayOfTheWeek.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitTime\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class DayOfTheWeek extends Dimension
{
diff --git a/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php b/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php
index a151430c5f..c0eb51c965 100644
--- a/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php
+++ b/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\VisitTime\Reports;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
diff --git a/plugins/VisitTime/lang/nb.json b/plugins/VisitTime/lang/nb.json
index 0b607f642e..4c7be7489c 100644
--- a/plugins/VisitTime/lang/nb.json
+++ b/plugins/VisitTime/lang/nb.json
@@ -14,6 +14,7 @@
"ColumnVisitEndServerMinute": "Tjenertid - minutt (tidspunkt for siste handling)",
"ColumnVisitEndServerMonth": "Tjenertidspunkt - måned (tidspunkt for siste handling)",
"ColumnVisitEndServerQuarter": "Tjenertid - kvartal (tidspunkt for siste handling)",
+ "ColumnVisitEndServerSecond": "Tjenertid - sekund (tidspunkt for siste interaksjon)",
"ColumnVisitEndServerWeekOfYear": "Tjenertid - uken i året (tidspunkt for siste handling)",
"ColumnVisitEndServerYear": "Tjenertid - år (tidspunkt for siste handling)",
"ColumnVisitStartServerHour": "Tjenertid - time (starten av besøket)",
@@ -24,6 +25,7 @@
"PluginDescription": "Rapporterer lokal tid og tjenertid når dine besøkere ser ditt nettsted eller app.",
"ServerTime": "Besøk pr. servertid",
"SubmenuTimes": "Tider",
+ "TimesSubcategoryHelp": "«Tider»-delen viser deg når folk besøker siden din. Du kan finne ut hva de mest populære lokale tidene dine brukere besøker er, slik at du forstår om din side passer deres liv. I tillegg vises de mest populære tjenertidene, som kan avsløre hvilke krav din teknologistabel har.",
"VisitsByDayOfWeek": "Besøk etter ukedag",
"WidgetByDayOfWeekDocumentation": "Denne grafen viser antall besøk nettstedet ditt mottatt på de ulike dagene i uken.",
"WidgetLocalTime": "Besøk etter lokaltid",
diff --git a/plugins/VisitorGenerator b/plugins/VisitorGenerator
-Subproject d05c401bc5a379cc36cf63b304b617b30d2da36
+Subproject 83eee2f109bf1d2c94d33fa7bb484ab5031d1e8
diff --git a/plugins/VisitorInterest/Columns/PagesPerVisit.php b/plugins/VisitorInterest/Columns/PagesPerVisit.php
index 1c2cfedd3b..8defd1f91f 100644
--- a/plugins/VisitorInterest/Columns/PagesPerVisit.php
+++ b/plugins/VisitorInterest/Columns/PagesPerVisit.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class PagesPerVisit extends Dimension
{
diff --git a/plugins/VisitorInterest/Columns/VisitDuration.php b/plugins/VisitorInterest/Columns/VisitDuration.php
index 3d42ddd2cd..f757347cd9 100644
--- a/plugins/VisitorInterest/Columns/VisitDuration.php
+++ b/plugins/VisitorInterest/Columns/VisitDuration.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class VisitDuration extends Dimension
{
diff --git a/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php b/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php
index e1f886dd8a..9a1d24de32 100644
--- a/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php
+++ b/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
class VisitorDaysSinceLast extends VisitDimension
{
diff --git a/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php b/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php
index ffc9787f7a..d75920d519 100644
--- a/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php
+++ b/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\Date;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php b/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php
index a49efaaada..4f4413d68f 100644
--- a/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php
+++ b/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class VisitsbyVisitNumber extends Dimension
{
diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php
index 3569a1ddb5..f2aa417f75 100644
--- a/plugins/VisitorInterest/VisitorInterest.php
+++ b/plugins/VisitorInterest/VisitorInterest.php
@@ -8,12 +8,8 @@
*/
namespace Piwik\Plugins\VisitorInterest;
-use Piwik\ArchiveProcessor;
use Piwik\FrontController;
-use Piwik\Metrics;
use Piwik\Piwik;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Cloud;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
class VisitorInterest extends \Piwik\Plugin
{
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index d360d4f3a0..8877bc9ff4 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\VisitsSummary;
use Piwik\Archive;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ReportsProvider;
use Piwik\SettingsPiwik;
diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php
index 97179241d8..f160b068f6 100644
--- a/plugins/VisitsSummary/Controller.php
+++ b/plugins/VisitsSummary/Controller.php
@@ -11,14 +11,12 @@ namespace Piwik\Plugins\VisitsSummary;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\FrontController;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Translation\Translator;
-use Piwik\View;
/**
*
diff --git a/plugins/VisitsSummary/Reports/Get.php b/plugins/VisitsSummary/Reports/Get.php
index 3c5f703ec1..1ee4492817 100644
--- a/plugins/VisitsSummary/Reports/Get.php
+++ b/plugins/VisitsSummary/Reports/Get.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\VisitsSummary\Reports;
use Piwik\Common;
-use Piwik\Container\StaticContainer;
use Piwik\DataTable;
use Piwik\DbHelper;
-use Piwik\Metrics\Formatter;
-use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreHome\Columns\Metrics\ActionsPerVisit;
diff --git a/plugins/VisitsSummary/Widgets/Index.php b/plugins/VisitsSummary/Widgets/Index.php
index 06358aa73e..fc691c7a37 100644
--- a/plugins/VisitsSummary/Widgets/Index.php
+++ b/plugins/VisitsSummary/Widgets/Index.php
@@ -8,9 +8,6 @@
*/
namespace Piwik\Plugins\VisitsSummary\Widgets;
-use Piwik\Plugin\Report;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
diff --git a/plugins/VisitsSummary/lang/id.json b/plugins/VisitsSummary/lang/id.json
index bbb31b57bd..50f425a32c 100644
--- a/plugins/VisitsSummary/lang/id.json
+++ b/plugins/VisitsSummary/lang/id.json
@@ -6,18 +6,23 @@
"GenerateTime": "%s detik untuk menghasilkan halaman",
"MaxNbActions": "aksi maksimal dalam satu kunjungan",
"NbActionsDescription": "%s tindakan (menampilkan halaman, mengunduh, dan tautan keluar)",
+ "NbActionsPerVisit": "tindakan (tampilan halaman, unduhan, tautan keluar, dan pencarian situs internal) per kunjungan",
"NbDownloadsDescription": "unduhan",
"NbKeywordsDescription": "kata kunci unik",
"NbOutlinksDescription": "tautan luar",
"NbPageviewsDescription": "tampilan halaman",
+ "NbSearchesDescription": "total pencarian di situs web Anda",
"NbUniqueDownloadsDescription": "unduhan unik",
"NbUniqueOutlinksDescription": "tautan luar unik",
"NbUniquePageviewsDescription": "tampilan halaman unik",
"NbUniqueVisitors": "pengunjung unik",
"NbUsersDescription": "pengguna",
+ "NbVisitsBounced": "kunjungan telah terpental (meninggalkan situs web setelah satu halaman)",
"NbVisitsDescription": "kunjungan",
+ "PluginDescription": "Melaporkan metrik analitik umum: kunjungan, pengunjung unik, jumlah tindakan, rasio pentalan, dll.",
"VisitsSummary": "Rangkuman Kunjungan",
"VisitsSummaryDocumentation": "Ini merupakan iktisar perkembangan kunjungan.",
+ "VisitsSummaryReportDocumentation": "Laporan ini memberikan gambaran yang sangat umum tentang bagaimana pengunjung Anda berperilaku.",
"WidgetLastVisits": "Grafik kunjungan terakhir",
"WidgetOverviewGraph": "Iktisar dengan grafik",
"WidgetVisits": "Iktisar kunjungan"
diff --git a/plugins/VisitsSummary/lang/nb.json b/plugins/VisitsSummary/lang/nb.json
index bd0f0217e1..b3be31e9d4 100644
--- a/plugins/VisitsSummary/lang/nb.json
+++ b/plugins/VisitsSummary/lang/nb.json
@@ -17,10 +17,12 @@
"NbUniquePageviewsDescription": "unike sidevisninger",
"NbUniqueVisitors": "unike besøkende",
"NbUsersDescription": "brukere",
+ "NbVisitsBounced": "besøk har takket for seg (forlot nettstedet etter én side)",
"NbVisitsDescription": "besøk",
"PluginDescription": "Rapporterer generelle analysetall: besøk, unike besøkere, antall handlinger, sprettfrekvens, etc.",
"VisitsSummary": "Besøksammendrag",
"VisitsSummaryDocumentation": "Dette er en oversikt over besøksutvikling.",
+ "VisitsSummaryReportDocumentation": "Denne rapporten gir en veldig generell oversikt over hvordan dine besøkende oppfører seg.",
"WidgetLastVisits": "Graf over siste besøk",
"WidgetOverviewGraph": "Oversikt med grafikk",
"WidgetVisits": "Besøksoversikt"
diff --git a/plugins/WebsiteMeasurable/Settings/Urls.php b/plugins/WebsiteMeasurable/Settings/Urls.php
index e37d9e19af..b61834a6ae 100644
--- a/plugins/WebsiteMeasurable/Settings/Urls.php
+++ b/plugins/WebsiteMeasurable/Settings/Urls.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\WebsiteMeasurable\Settings;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugin;
use Piwik\Settings\FieldConfig;
-use Piwik\Plugins\SitesManager;
use Exception;
use Piwik\UrlHelper;
diff --git a/plugins/Widgetize/Controller.php b/plugins/Widgetize/Controller.php
index e7f5aae299..12cd0b8203 100644
--- a/plugins/Widgetize/Controller.php
+++ b/plugins/Widgetize/Controller.php
@@ -8,14 +8,10 @@
*/
namespace Piwik\Plugins\Widgetize;
-use Piwik\Access;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Container\StaticContainer;
use Piwik\FrontController;
use Piwik\Piwik;
-use Piwik\Session\SessionInitializer;
-use Piwik\Url;
use Piwik\View;
/**
diff --git a/plugins/Widgetize/lang/id.json b/plugins/Widgetize/lang/id.json
index 149c8ae574..d3c81c720b 100644
--- a/plugins/Widgetize/lang/id.json
+++ b/plugins/Widgetize/lang/id.json
@@ -1,6 +1,9 @@
{
"Widgetize": {
"OpenInNewWindow": "Buka di jendela baru",
- "TopLinkTooltip": "Ekspor Laporan Matomo sebagai gawit dan sematkan dalam Penel Kendali di aplikasi Anda sebagai binkai pendam."
+ "PluginDescription": "Tampilkan laporan Matomo apa pun di situs web atau aplikasi Anda dengan tag HTML \"sematkan\" sederhana.",
+ "TooHighAccessLevel": "Pengguna ini memiliki akses super-user. Menyematkan widget dengan autentikasi token super-user tidak diperbolehkan. %1$sPeriksa FAQ untuk melihat info lebih lanjut.%2$s",
+ "TopLinkTooltip": "Ekspor laporan Matomo sebagai widget dan sematkan dalam dasbor di aplikasi Anda sebagai iframe.",
+ "ViewAccessRequired": "Pengguna ini memiliki setidaknya beberapa akses tulis. Hanya token pengguna yang hanya memiliki akses lihat yang dapat digunakan. Periksa %1$s untuk melihat info lebih lanjut."
}
-} \ No newline at end of file
+}
diff --git a/tests/PHPUnit/Fixtures/DisablePluginArchive.php b/tests/PHPUnit/Fixtures/DisablePluginArchive.php
index 4c96561b62..48791f0fce 100644
--- a/tests/PHPUnit/Fixtures/DisablePluginArchive.php
+++ b/tests/PHPUnit/Fixtures/DisablePluginArchive.php
@@ -7,12 +7,10 @@
*/
namespace Piwik\Tests\Fixtures;
-use MatomoTracker;
use Piwik\Date;
use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Tests\Framework\Fixture;
-use Exception;
use Piwik\Tracker\Cache;
/**
diff --git a/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php b/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php
index 77b4f74758..46dc8c32ef 100644
--- a/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php
+++ b/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php
@@ -10,7 +10,6 @@
namespace Piwik\Tests\Fixtures;
use Piwik\Container\StaticContainer;
-use Piwik\Plugins\CustomJsTracker\TrackerUpdater;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2\Php;
use Piwik\Plugins\PrivacyManager\IPAnonymizer;
use Piwik\Plugins\UserCountry\LocationProvider;
diff --git a/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php b/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php
index 78d691438e..34f2cc0917 100644
--- a/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php
+++ b/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Cache;
use Piwik\Date;
use Piwik\Plugins\Annotations\API as APIAnnotations;
use Piwik\Plugins\Goals\API as APIGoals;
diff --git a/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php b/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
index d5c00ffc27..ab2715ba54 100644
--- a/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
+++ b/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Fixtures;
use Piwik\Cache;
-use Piwik\Common;
use Piwik\Date;
use Piwik\Option;
use Piwik\Plugins\Goals\API;
diff --git a/tests/PHPUnit/Fixtures/OmniFixture.php b/tests/PHPUnit/Fixtures/OmniFixture.php
index ab9aa32a0c..c6e36aa67b 100644
--- a/tests/PHPUnit/Fixtures/OmniFixture.php
+++ b/tests/PHPUnit/Fixtures/OmniFixture.php
@@ -8,9 +8,7 @@
namespace Piwik\Tests\Fixtures;
use Piwik\API\Request;
-use Piwik\Common;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Option;
use Piwik\Plugins\UsersManager\Model;
use ReflectionClass;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
index 4c09c290b1..e00a9b452a 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
@@ -9,7 +9,6 @@ namespace Piwik\Tests\Fixtures;
use Piwik\Date;
use Piwik\Tests\Framework\Fixture;
-use MatomoTracker;
/**
* Adds one site and tracks a couple visits with many pageviews. The
diff --git a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
index f72a2061f8..37c94284b1 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
@@ -7,11 +7,9 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Access;
use Piwik\Date;
use Piwik\Plugins\Annotations\API;
use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\FakeAccess;
/**
* A fixture that adds two websites and annotations for each website.
diff --git a/tests/PHPUnit/Fixtures/UITestFixture.php b/tests/PHPUnit/Fixtures/UITestFixture.php
index 724953f8c0..dcb6bd2c64 100644
--- a/tests/PHPUnit/Fixtures/UITestFixture.php
+++ b/tests/PHPUnit/Fixtures/UITestFixture.php
@@ -21,11 +21,9 @@ use Piwik\DbHelper;
use Piwik\Filesystem;
use Piwik\FrontController;
use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugin\ProcessedMetric;
use Piwik\Plugin\Report;
-use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\API\API;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
use Piwik\Plugins\Monolog\Handler\WebNotificationHandler;
@@ -36,11 +34,9 @@ use Piwik\Plugins\SegmentEditor\API as APISegmentEditor;
use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\Plugins\UsersManager\API as UsersManagerAPI;
use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
-use Piwik\Plugins\UsersManager\Model;
use Piwik\Plugins\UsersManager\UserUpdater;
use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI;
use Piwik\ReportRenderer;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Framework\XssTesting;
use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
use Psr\Container\ContainerInterface;
diff --git a/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php b/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php
index b77c361dbb..9c70c0adbe 100644
--- a/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php
+++ b/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php
@@ -7,13 +7,7 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Common;
-use Piwik\Date;
-use Piwik\Db;
-use Piwik\Plugins\Goals\API as APIGoals;
-use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Tests\Framework\Fixture;
-use Piwik\Tracker\Cache;
/**
* This fixture adds one website and tracks two visits by one visitor.
diff --git a/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php b/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php
index ecf6d8a6d2..0bac3b7db8 100644
--- a/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php
+++ b/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Date;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/tests/PHPUnit/Framework/Fixture.php b/tests/PHPUnit/Framework/Fixture.php
index 4c275477d5..86680ea6b4 100644
--- a/tests/PHPUnit/Framework/Fixture.php
+++ b/tests/PHPUnit/Framework/Fixture.php
@@ -40,7 +40,6 @@ use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
use Piwik\Plugins\ScheduledReports\ScheduledReports;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Plugins\UserCountry\LocationProvider;
-use Piwik\Plugins\UsersManager\API as APIUsersManager;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\ReportRenderer;
use Piwik\Session\SaveHandler\DbTable;
@@ -48,7 +47,6 @@ use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Singleton;
use Piwik\Site;
-use Piwik\Tests;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\Mock\File as MockFileMethods;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/tests/PHPUnit/Framework/Mock/FakeAccess.php b/tests/PHPUnit/Framework/Mock/FakeAccess.php
index aa649fed1b..140b59bbd2 100644
--- a/tests/PHPUnit/Framework/Mock/FakeAccess.php
+++ b/tests/PHPUnit/Framework/Mock/FakeAccess.php
@@ -9,7 +9,6 @@ namespace Piwik\Tests\Framework\Mock;
use Piwik\Access;
use Piwik\Auth;
-use Piwik\Container\StaticContainer;
use Piwik\NoAccessException;
use Piwik\Piwik;
use Piwik\Plugins\SitesManager\API;
diff --git a/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php b/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php
index bb305deb05..60d2bcceba 100644
--- a/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php
+++ b/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Framework\Mock\Settings;
-use Piwik\Settings\Setting;
class FakeMeasurableSettings extends \Piwik\Plugins\ExampleSettingsPlugin\MeasurableSettings {
protected $pluginName = 'ExampleSettingsPlugin';
diff --git a/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php b/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php
index 2b00ad12f6..12954260ba 100644
--- a/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php
+++ b/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Framework\Mock\Settings;
-use Piwik\Settings\Setting;
class FakeSystemSettings extends \Piwik\Plugins\ExampleSettingsPlugin\SystemSettings {
protected $pluginName = 'ExampleSettingsPlugin';
diff --git a/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php b/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php
index 1a331ad6cb..318ff38bbd 100644
--- a/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php
+++ b/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Framework\Mock\Settings;
-use Piwik\Settings\Setting;
class FakeUserSettings extends \Piwik\Plugins\ExampleSettingsPlugin\UserSettings {
protected $pluginName = 'ExampleSettingsPlugin';
diff --git a/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php b/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php
index 0de5377265..073d3f7352 100644
--- a/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php
+++ b/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework\Mock\Tracker;
use Exception;
-use Piwik\Tracker;
class RequestSet extends \Piwik\Tracker\RequestSet
{
diff --git a/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php b/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php
index d0f60d1e09..71dc059b61 100644
--- a/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework\TestCase;
use Piwik\Console;
-use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Tester\ApplicationTester;
diff --git a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
index 0dcbf83e03..88cc297690 100644
--- a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
@@ -24,8 +24,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
use Piwik\ReportRenderer;
use Piwik\Site;
-use Piwik\Tests\Framework\Constraint\ResponseCode;
-use Piwik\Tests\Framework\Constraint\HttpResponseText;
use Piwik\Tests\Framework\Mock\File as MockFileMethods;
use Piwik\Tests\Framework\TestRequest\ApiTestConfig;
use Piwik\Tests\Framework\TestRequest\Collection;
diff --git a/tests/PHPUnit/Framework/TestCase/UnitTestCase.php b/tests/PHPUnit/Framework/TestCase/UnitTestCase.php
index db29202b10..1bbe090a6c 100644
--- a/tests/PHPUnit/Framework/TestCase/UnitTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/UnitTestCase.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework\TestCase;
use Piwik\Application\Environment;
-use Piwik\Container\StaticContainer;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\File;
diff --git a/tests/PHPUnit/Framework/TestRequest/Collection.php b/tests/PHPUnit/Framework/TestRequest/Collection.php
index 1a7310f78b..aa5cf2410d 100644
--- a/tests/PHPUnit/Framework/TestRequest/Collection.php
+++ b/tests/PHPUnit/Framework/TestRequest/Collection.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Framework\TestRequest;
use Piwik\API\DocumentationGenerator;
use Piwik\API\Proxy;
use Piwik\API\Request;
-use Piwik\Date;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php b/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php
index a7c36567cb..ceb721bcc0 100644
--- a/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php
+++ b/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework;
use Psr\Container\ContainerInterface;
-use Piwik\Application\Environment;
use Piwik\Application\EnvironmentManipulator;
use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Application\Kernel\PluginList;
diff --git a/tests/PHPUnit/Integration/.gitignore b/tests/PHPUnit/Integration/.gitignore
new file mode 100644
index 0000000000..bcbf044114
--- /dev/null
+++ b/tests/PHPUnit/Integration/.gitignore
@@ -0,0 +1 @@
+/plugins \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/AccessTest.php b/tests/PHPUnit/Integration/AccessTest.php
index 232581ffb6..886ddb5f9b 100644
--- a/tests/PHPUnit/Integration/AccessTest.php
+++ b/tests/PHPUnit/Integration/AccessTest.php
@@ -11,8 +11,6 @@ namespace Piwik\Tests\Integration;
use Exception;
use Piwik\Access;
use Piwik\AuthResult;
-use Matomo\Cache\Cache;
-use Piwik\Db;
use Piwik\NoAccessException;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\API as UsersManagerAPI;
diff --git a/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php b/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php
index 6f735e64f4..d640d805bf 100644
--- a/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php
+++ b/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php
@@ -8,11 +8,8 @@
namespace Piwik\Tests\Integration\Archive;
-use Piwik\Archive;
-use Piwik\ArchiveProcessor;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Db;
use Piwik\Period;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Segment;
diff --git a/tests/PHPUnit/Integration/ArchiveProcessingTest.php b/tests/PHPUnit/Integration/ArchiveProcessingTest.php
index b5fad41104..3058797448 100644
--- a/tests/PHPUnit/Integration/ArchiveProcessingTest.php
+++ b/tests/PHPUnit/Integration/ArchiveProcessingTest.php
@@ -9,8 +9,6 @@
namespace Piwik\Tests\Integration;
use Exception;
-use Piwik\Access;
-use Piwik\Archive;
use Piwik\ArchiveProcessor;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
@@ -21,10 +19,8 @@ use Piwik\DataTable;
use Piwik\Date;
use Piwik\Db;
use Piwik\Db\BatchInsert;
-use Piwik\DbHelper;
use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\API;
use Piwik\Segment;
use Piwik\SettingsServer;
use Piwik\Site;
diff --git a/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php b/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php
index eed521a1d1..a373b5c362 100644
--- a/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php
+++ b/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Integration\ArchiveProcessor;
use Piwik\ArchiveProcessor\LoaderLock;
use Piwik\Common;
-use Piwik\Db;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
class LoaderLockTest extends IntegrationTestCase
diff --git a/tests/PHPUnit/Integration/ArchiveWebTest.php b/tests/PHPUnit/Integration/ArchiveWebTest.php
index 802c3194a1..d4a0178122 100644
--- a/tests/PHPUnit/Integration/ArchiveWebTest.php
+++ b/tests/PHPUnit/Integration/ArchiveWebTest.php
@@ -10,9 +10,7 @@ namespace Piwik\Tests\Integration;
use Piwik\Option;
use Piwik\Http;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
-use Piwik\Tests\Fixtures\ManySitesImportedLogs;
use Piwik\Tests\Framework\Fixture;
-use Exception;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php b/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php
index f14708ba49..3cb43fe326 100644
--- a/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php
+++ b/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php
@@ -37,6 +37,9 @@ class PluginUmdAssetFetcherTest extends UnitTestCase
'TestPlugin5' => ['TestPlugin1', 'TestPlugin3'],
];
+ private $oldPluginDirsEnvVar;
+ private $oldPluginDirsGlobal;
+
public static function setUpBeforeClass(): void
{
parent::setUpBeforeClass();
@@ -84,6 +87,9 @@ class PluginUmdAssetFetcherTest extends UnitTestCase
public function setUp(): void
{
+ $this->oldPluginDirsEnvVar = getenv('MATOMO_PLUGIN_DIRS');
+ $this->oldPluginDirsGlobal = $GLOBALS['MATOMO_PLUGIN_DIRS'];
+
parent::setUp();
clearstatcache(true);
@@ -100,8 +106,8 @@ class PluginUmdAssetFetcherTest extends UnitTestCase
clearstatcache(true);
- putenv("MATOMO_PLUGIN_DIRS=");
- unset($GLOBALS['MATOMO_PLUGIN_DIRS']);
+ putenv("MATOMO_PLUGIN_DIRS={$this->oldPluginDirsEnvVar}");
+ $GLOBALS['MATOMO_PLUGIN_DIRS'] = $this->oldPluginDirsGlobal;
Manager::initPluginDirectories();
}
diff --git a/tests/PHPUnit/Integration/AssetManagerTest.php b/tests/PHPUnit/Integration/AssetManagerTest.php
index 360d4352aa..b08bcdc9a5 100644
--- a/tests/PHPUnit/Integration/AssetManagerTest.php
+++ b/tests/PHPUnit/Integration/AssetManagerTest.php
@@ -13,6 +13,7 @@ use Piwik\AssetManager\UIAsset;
use Piwik\AssetManager;
use Piwik\AssetManager\UIAssetFetcher\StaticUIAssetFetcher;
use Piwik\Config;
+use Piwik\Filesystem;
use Piwik\Plugin;
use Piwik\Plugin\Manager;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
@@ -28,6 +29,8 @@ class AssetManagerTest extends IntegrationTestCase
{
// todo Theme->rewriteAssetPathIfOverridesFound is not tested
+ const TEST_PLUGINS_DIR = __DIR__ . '/plugins';
+
const ASSET_MANAGER_TEST_DIR = 'tests/PHPUnit/Unit/AssetManager/';
const FIRST_CACHE_BUSTER_JS = 'first-cache-buster-js';
@@ -40,6 +43,11 @@ class AssetManagerTest extends IntegrationTestCase
const NON_CORE_PLUGIN_NAME = 'MockNonCorePlugin';
const CORE_THEME_PLUGIN_NAME = 'CoreThemePlugin';
const NON_CORE_THEME_PLUGIN_NAME = 'NonCoreThemePlugin';
+ const CORE_PLUGIN_WITH_ONLY_UMD_NAME = 'MockCorePluginOnlyUmd';
+ const NON_CORE_PLUGIN_WITH_ONLY_UMD_NAME = 'MockNonCorePluginOnlyUmd';
+
+ private $oldPluginDirsEnvVar;
+ private $oldPluginDirsGlobal;
/**
* @var AssetManager
@@ -65,6 +73,8 @@ class AssetManagerTest extends IntegrationTestCase
{
parent::setUp();
+ $this->setUpPluginsDirectory();
+
$this->setUpConfig();
$this->activateMergedAssets();
@@ -82,6 +92,8 @@ class AssetManagerTest extends IntegrationTestCase
public function tearDown(): void
{
+ $this->removePluginsDirectory();
+
if ($this->assetManager !== null) {
$this->assetManager->removeMergedAssets();
}
@@ -96,6 +108,62 @@ class AssetManagerTest extends IntegrationTestCase
);
}
+ private function setUpPluginsDirectory()
+ {
+ $this->oldPluginDirsEnvVar = getenv('MATOMO_PLUGIN_DIRS');
+ $this->oldPluginDirsGlobal = $GLOBALS['MATOMO_PLUGIN_DIRS'];
+
+ parent::setUpBeforeClass();
+
+ $pluginsWithUmds = [
+ self::CORE_PLUGIN_NAME,
+ self::NON_CORE_PLUGIN_NAME,
+ self::CORE_PLUGIN_WITH_ONLY_UMD_NAME,
+ self::NON_CORE_PLUGIN_WITH_ONLY_UMD_NAME,
+ ];
+
+ // setup plugin test directories
+ Filesystem::unlinkRecursive(self::TEST_PLUGINS_DIR, true);
+ foreach ($pluginsWithUmds as $pluginName) {
+ $vueDir = self::TEST_PLUGINS_DIR . '/' . $pluginName . '/vue/dist';
+ $vueSrcDir = self::TEST_PLUGINS_DIR . '/' . $pluginName . '/vue/src';
+
+ Filesystem::mkdir($vueDir);
+ Filesystem::mkdir($vueSrcDir);
+
+ $umdDependencies = [
+ "dependsOn" => [],
+ ];
+ $umdDependenciesPath = $vueDir . '/umd.metadata.json';
+
+ file_put_contents($umdDependenciesPath, json_encode($umdDependencies));
+
+ $umdPath = $vueDir . '/' . $pluginName . '.umd.min.js';
+ $umdContent = "// begin $pluginName\n";
+ $umdContent .= "// end $pluginName\n";
+
+ file_put_contents($umdPath, $umdContent);
+ }
+
+ clearstatcache(true);
+
+ putenv("MATOMO_PLUGIN_DIRS=" . self::TEST_PLUGINS_DIR . ';'
+ . str_replace(PIWIK_INCLUDE_PATH, '', self::TEST_PLUGINS_DIR));
+ unset($GLOBALS['MATOMO_PLUGIN_DIRS']);
+ Manager::initPluginDirectories();
+ }
+
+ private function removePluginsDirectory()
+ {
+ Filesystem::unlinkRecursive(self::TEST_PLUGINS_DIR, true);
+
+ clearstatcache(true);
+
+ putenv("MATOMO_PLUGIN_DIRS={$this->oldPluginDirsEnvVar}");
+ $GLOBALS['MATOMO_PLUGIN_DIRS'] = $this->oldPluginDirsGlobal;
+ Manager::initPluginDirectories();
+ }
+
private function activateMergedAssets()
{
Config::getInstance()->Development['disable_merged_assets'] = 0;
@@ -142,7 +210,9 @@ class AssetManagerTest extends IntegrationTestCase
$this->getNonCoreTheme()->getPlugin(),
$this->getCorePlugin(),
$this->getCorePluginWithoutUIAssets(),
- $this->getNonCorePlugin()
+ $this->getNonCorePlugin(),
+ $this->getCorePluginWithOnlyUmd(),
+ $this->getNonCorePluginWithOnlyUmd(),
)
);
@@ -179,6 +249,16 @@ class AssetManagerTest extends IntegrationTestCase
return $corePlugin;
}
+ private function getCorePluginWithOnlyUmd()
+ {
+ return new PluginMock(self::CORE_PLUGIN_WITH_ONLY_UMD_NAME);
+ }
+
+ private function getNonCorePluginWithOnlyUmd()
+ {
+ return new PluginMock(self::NON_CORE_PLUGIN_WITH_ONLY_UMD_NAME);
+ }
+
/**
* @return Plugin
*/
@@ -279,6 +359,15 @@ class AssetManagerTest extends IntegrationTestCase
$this->mergedAsset = $this->assetManager->getMergedNonCoreJavaScript();
}
+ private function triggerGetMergedChunkJavaScript()
+ {
+ $chunks = [];
+ for ($i = 0; $i < AssetManager\UIAssetFetcher\PluginUmdAssetFetcher::getDefaultChunkCount(); ++$i) {
+ $chunks[] = $this->assetManager->getMergedJavaScriptChunk($i);
+ }
+ return $chunks;
+ }
+
private function triggerGetMergedStylesheet()
{
$this->mergedAsset = $this->assetManager->getMergedStylesheet();
@@ -413,7 +502,7 @@ class AssetManagerTest extends IntegrationTestCase
}
/**
- * @return UIAsset[]
+ * @return array
*/
private function generateAllMergedAssets()
{
@@ -430,7 +519,13 @@ class AssetManagerTest extends IntegrationTestCase
$this->assertTrue($coreJsAsset->exists());
$this->assertTrue($nonCoreJsAsset->exists());
- return array($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset);
+ $chunks = $this->triggerGetMergedChunkJavaScript();
+ $this->assertCount(3, $chunks);
+ $this->assertTrue($chunks[0]->exists());
+ $this->assertTrue($chunks[1]->exists());
+ $this->assertTrue($chunks[2]->exists());
+
+ return array($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset, $chunks);
}
/**
@@ -611,7 +706,11 @@ class AssetManagerTest extends IntegrationTestCase
'<script type="text/javascript" src="tests/PHPUnit/Unit/AssetManager/scripts/SimpleObject.js"></script>' . "\n" .
'<script type="text/javascript" src="tests/PHPUnit/Unit/AssetManager/scripts/SimpleArray.js"></script>' . "\n" .
'<script type="text/javascript" src="tests/PHPUnit/Unit/AssetManager/scripts/SimpleComments.js"></script>' . "\n" .
- '<script type="text/javascript" src="tests/PHPUnit/Unit/AssetManager/scripts/SimpleAlert.js"></script>' . "\n";
+ '<script type="text/javascript" src="tests/PHPUnit/Unit/AssetManager/scripts/SimpleAlert.js"></script>' . "\n" .
+ '<script type="text/javascript" src="tests/PHPUnit/Integration/plugins/MockCorePlugin/vue/dist/MockCorePlugin.umd.min.js"></script>' . "\n" .
+ '<script type="text/javascript" src="tests/PHPUnit/Integration/plugins/MockNonCorePlugin/vue/dist/MockNonCorePlugin.umd.min.js"></script>' . "\n" .
+ '<script type="text/javascript" src="tests/PHPUnit/Integration/plugins/MockCorePluginOnlyUmd/vue/dist/MockCorePluginOnlyUmd.umd.min.js"></script>' . "\n" .
+ '<script type="text/javascript" src="tests/PHPUnit/Integration/plugins/MockNonCorePluginOnlyUmd/vue/dist/MockNonCorePluginOnlyUmd.umd.min.js"></script>' . "\n";
$this->assertEquals($expectedJsInclusionDirective, $this->assetManager->getJsInclusionDirective());
}
@@ -624,7 +723,10 @@ class AssetManagerTest extends IntegrationTestCase
$expectedJsInclusionDirective =
$this->getJsTranslationScript() .
'<script type="text/javascript" src="index.php?module=Proxy&action=getCoreJs"></script>' . "\n" .
- '<script type="text/javascript" src="index.php?module=Proxy&action=getNonCoreJs"></script>' . "\n";
+ '<script type="text/javascript" src="index.php?module=Proxy&action=getNonCoreJs"></script>' . "\n" .
+ '<script type="text/javascript" src="index.php?module=Proxy&action=getUmdJs&chunk=0" defer></script>' . "\n" .
+ '<script type="text/javascript" src="index.php?module=Proxy&action=getUmdJs&chunk=1" defer></script>' . "\n" .
+ '<script type="text/javascript" src="index.php?module=Proxy&action=getUmdJs&chunk=2" defer></script>' . "\n";
$this->assertEquals($expectedJsInclusionDirective, $this->assetManager->getJsInclusionDirective());
}
@@ -656,13 +758,18 @@ class AssetManagerTest extends IntegrationTestCase
*/
public function test_removeMergedAssets()
{
- list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset) = $this->generateAllMergedAssets();
+ list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset, $chunks) = $this->generateAllMergedAssets();
$this->assetManager->removeMergedAssets();
$this->assertFalse($stylesheetAsset->exists());
$this->assertFalse($coreJsAsset->exists());
$this->assertFalse($nonCoreJsAsset->exists());
+
+ $this->assertCount(3, $chunks);
+ $this->assertFalse($chunks[0]->exists());
+ $this->assertFalse($chunks[1]->exists());
+ $this->assertFalse($chunks[2]->exists());
}
/**
@@ -670,13 +777,18 @@ class AssetManagerTest extends IntegrationTestCase
*/
public function test_removeMergedAssets_PluginNameSpecified_PluginWithoutAssets()
{
- list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset) = $this->generateAllMergedAssets();
+ list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset, $chunks) = $this->generateAllMergedAssets();
$this->assetManager->removeMergedAssets(self::CORE_PLUGIN_WITHOUT_ASSETS_NAME);
$this->assertFalse($stylesheetAsset->exists());
$this->assertTrue($coreJsAsset->exists());
$this->assertTrue($nonCoreJsAsset->exists());
+
+ $this->assertCount(3, $chunks);
+ $this->assertTrue($chunks[0]->exists());
+ $this->assertTrue($chunks[1]->exists());
+ $this->assertTrue($chunks[2]->exists());
}
/**
@@ -684,13 +796,18 @@ class AssetManagerTest extends IntegrationTestCase
*/
public function test_removeMergedAssets_PluginNameSpecified_CorePlugin()
{
- list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset) = $this->generateAllMergedAssets();
+ list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset, $chunks) = $this->generateAllMergedAssets();
$this->assetManager->removeMergedAssets(self::CORE_PLUGIN_NAME);
$this->assertFalse($stylesheetAsset->exists());
$this->assertFalse($coreJsAsset->exists());
$this->assertTrue($nonCoreJsAsset->exists());
+
+ $this->assertCount(3, $chunks);
+ $this->assertFalse($chunks[0]->exists());
+ $this->assertTrue($chunks[1]->exists());
+ $this->assertTrue($chunks[2]->exists());
}
/**
@@ -698,12 +815,17 @@ class AssetManagerTest extends IntegrationTestCase
*/
public function test_removeMergedAssets_PluginNameSpecified_NonCoreThemeWithAssets()
{
- list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset) = $this->generateAllMergedAssets();
+ list($stylesheetAsset, $coreJsAsset, $nonCoreJsAsset, $chunks) = $this->generateAllMergedAssets();
$this->assetManager->removeMergedAssets(self::NON_CORE_THEME_PLUGIN_NAME);
$this->assertFalse($stylesheetAsset->exists());
$this->assertTrue($coreJsAsset->exists());
$this->assertFalse($nonCoreJsAsset->exists());
+
+ $this->assertCount(3, $chunks);
+ $this->assertTrue($chunks[0]->exists());
+ $this->assertTrue($chunks[1]->exists());
+ $this->assertTrue($chunks[2]->exists());
}
} \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/Columns/UpdaterTest.php b/tests/PHPUnit/Integration/Columns/UpdaterTest.php
index 2b7e982cfd..a23e34c752 100644
--- a/tests/PHPUnit/Integration/Columns/UpdaterTest.php
+++ b/tests/PHPUnit/Integration/Columns/UpdaterTest.php
@@ -15,7 +15,6 @@ use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Plugin\Dimension\ConversionDimension;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Updater;
use Piwik\Updater\Migration;
// NOTE: we can't use PHPUnit mock framework since we have to set columnName/columnType. reflection will set it, but
diff --git a/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php b/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php
index cd5ac86bdf..52261c4db1 100644
--- a/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php
+++ b/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php
@@ -16,7 +16,7 @@ use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
class MysqlLockBackendTest extends IntegrationTestCase
{
/**
- * @var MySQLLockBackend
+ * @var MySqlLockBackend
*/
private $backend;
private $key = 'testKeyValueKey';
@@ -43,7 +43,7 @@ class MysqlLockBackendTest extends IntegrationTestCase
protected function createMysqlBackend()
{
- return new MySQLLockBackend();
+ return new MySqlLockBackend();
}
public function test_deleteIfKeyHasValue_ShouldNotWork_IfKeyDoesNotExist()
diff --git a/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php b/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php
index ac88ba9b8e..e1ab674d81 100644
--- a/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php
+++ b/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php
@@ -27,7 +27,6 @@ use Piwik\Date;
use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugins\SegmentEditor\API;
-use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Segment;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php b/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php
index d178f9661c..efd5c12797 100644
--- a/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php
+++ b/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php
@@ -9,11 +9,8 @@
namespace Piwik\Tests\Integration\CronArchive;
use Piwik\Config;
-use Piwik\CronArchive;
use Piwik\Date;
use Piwik\CronArchive\SegmentArchiving;
-use Piwik\Option;
-use Piwik\Site;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php b/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php
index 2752244c04..ffd62b4ef0 100644
--- a/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php
+++ b/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php
@@ -16,7 +16,6 @@ use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeLogger;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Plugins\SegmentEditor\API as SegmentAPI;
-use Piwik\Version;
/**
* @group Archiver
diff --git a/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php b/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php
index c149ef918d..cf32511fd9 100644
--- a/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php
@@ -10,9 +10,7 @@
namespace Piwik\Tests\Integration\DataAccess;
-use Piwik\ArchiveProcessor\Parameters;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Config;
use Piwik\DataAccess\ArchiveSelector;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
diff --git a/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php b/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php
index 1e4d77c80d..79ca3e286c 100644
--- a/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\DataAccess;
use Piwik\Access;
use Piwik\ArchiveProcessor\Parameters;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataAccess\ArchiveWriter;
@@ -18,7 +17,6 @@ use Piwik\Date;
use Piwik\Db;
use Piwik\Period\Day;
use Piwik\Period\Factory as PeriodFactory;
-use Piwik\Plugins\SegmentEditor\API;
use Piwik\Segment;
use Piwik\Sequence;
use Piwik\Site;
diff --git a/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php b/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
index a8311bdd09..5a53b5f92e 100644
--- a/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
@@ -13,7 +13,6 @@ use Piwik\Config;
use Piwik\Common;
use Piwik\DataAccess\LogAggregator;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Period;
use Piwik\Segment;
use Piwik\Site;
diff --git a/tests/PHPUnit/Integration/EmailValidatorTest.php b/tests/PHPUnit/Integration/EmailValidatorTest.php
index bb34778aff..3ee1b3aa92 100644
--- a/tests/PHPUnit/Integration/EmailValidatorTest.php
+++ b/tests/PHPUnit/Integration/EmailValidatorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration;
-use Piwik\Http;
use Piwik\Piwik;
/**
diff --git a/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php b/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php
index 45da6a6aff..1907a6c81f 100644
--- a/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php
+++ b/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Measurable;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Measurable\MeasurableSetting;
-use Piwik\Settings\Storage\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php b/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php
index 5ee12b23cd..1110ebba04 100644
--- a/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php
+++ b/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Measurable;
-use Piwik\Access;
-use Piwik\Db;
use Piwik\Plugin;
use Piwik\Plugins\WebsiteMeasurable\Type as WebsiteType;
use Piwik\Plugins\WebsiteMeasurable\MeasurableSettings;
diff --git a/tests/PHPUnit/Integration/Plugin/CategoriesTest.php b/tests/PHPUnit/Integration/Plugin/CategoriesTest.php
index b550fcd2f5..f12ded6f57 100644
--- a/tests/PHPUnit/Integration/Plugin/CategoriesTest.php
+++ b/tests/PHPUnit/Integration/Plugin/CategoriesTest.php
@@ -12,7 +12,6 @@ use Piwik\Category\Category;
use Piwik\Category\Subcategory;
use Piwik\Container\StaticContainer;
use Piwik\Plugin\Categories;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Plugin/ManagerTest.php b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
index 8dadd20646..d2bbcef0b1 100644
--- a/tests/PHPUnit/Integration/Plugin/ManagerTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
@@ -10,13 +10,10 @@ namespace Piwik\Tests\Integration\Plugin;
use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Http\ControllerResolver;
use Piwik\Plugin;
-use Piwik\Settings\Storage;
use Piwik\Cache as PiwikCache;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
-use Piwik\Widget\WidgetsList;
/**
* @group Plugin
diff --git a/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php b/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php
index afdecc243d..af123afef0 100644
--- a/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php
@@ -8,12 +8,8 @@
namespace Piwik\Tests\Integration\Plugin;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Plugin;
-use Piwik\Settings\Storage;
-use Piwik\Cache as PiwikCache;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\UpdateCheck\ReleaseChannel;
diff --git a/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php b/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php
index 2915033e38..7ee397823a 100644
--- a/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php
+++ b/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php
@@ -9,13 +9,11 @@
namespace Piwik\Tests\Integration\Plugin;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Plugin;
use Piwik\Plugin\SettingsProvider;
use Piwik\Settings\Measurable\MeasurableSettings;
use Piwik\Settings\Plugin\SystemSettings;
use Piwik\Settings\Plugin\UserSettings;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php b/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php
index 46993ab135..88c16ae34b 100644
--- a/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php
+++ b/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php
@@ -9,9 +9,7 @@
namespace Piwik\Tests\Integration\Plugin;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Plugin\WidgetsProvider;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Widget\WidgetConfig;
diff --git a/tests/PHPUnit/Integration/PluginTest.php b/tests/PHPUnit/Integration/PluginTest.php
index 7ab46a8945..430cde0719 100644
--- a/tests/PHPUnit/Integration/PluginTest.php
+++ b/tests/PHPUnit/Integration/PluginTest.php
@@ -9,11 +9,9 @@
namespace PHPUnit\Integration;
-use Piwik\Common;
use Piwik\CronArchive;
use Piwik\CronArchive\ReArchiveList;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Option;
use Piwik\Plugin;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/ReleaseCheckListTest.php b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
index 8b875b922d..f11f977ed6 100644
--- a/tests/PHPUnit/Integration/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
@@ -15,8 +15,6 @@ use Piwik\AssetManager\UIAssetFetcher;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Filesystem;
-use Piwik\Http;
-use Piwik\Plugin;
use Piwik\Plugin\Manager;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tracker;
@@ -1099,7 +1097,7 @@ class ReleaseCheckListTest extends \PHPUnit\Framework\TestCase
$countFileChecked++;
}
- $this->assertGreaterThan(20, $countFileChecked, "expected to test at least 20 files, but tested only " . $countFileChecked);
+ $this->assertGreaterThan(1, $countFileChecked, "expected to test at least one file, but tested only " . $countFileChecked);
if (!empty($errors)) {
throw new Exception(implode(",\n\n ", $errors));
diff --git a/tests/PHPUnit/Integration/SegmentTest.php b/tests/PHPUnit/Integration/SegmentTest.php
index 9e9662aefe..eab2877df8 100644
--- a/tests/PHPUnit/Integration/SegmentTest.php
+++ b/tests/PHPUnit/Integration/SegmentTest.php
@@ -15,7 +15,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Http;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Segment;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/SequenceTest.php b/tests/PHPUnit/Integration/SequenceTest.php
index d7e84ffaab..2db27a093e 100644
--- a/tests/PHPUnit/Integration/SequenceTest.php
+++ b/tests/PHPUnit/Integration/SequenceTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration;
-use Piwik\Db;
use Piwik\Sequence;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/SessionTest.php b/tests/PHPUnit/Integration/SessionTest.php
index ae4ff2ecfd..60f0e4c0f6 100644
--- a/tests/PHPUnit/Integration/SessionTest.php
+++ b/tests/PHPUnit/Integration/SessionTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Integration;
use Piwik\Http;
-use Piwik\Piwik;
use Piwik\Session;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php b/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php
index ad4272deb1..ce0e15ca0d 100644
--- a/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php
+++ b/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Integration\Settings;
use PHPUnit\Framework\Constraint\IsType;
use Piwik\Db;
use Piwik\Settings\Setting;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\Mock\Settings\FakeSystemSettings;
diff --git a/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php b/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php
index b057162632..beae8b033b 100644
--- a/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php
+++ b/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php
@@ -8,11 +8,9 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Measurable\MeasurableProperty;
-use Piwik\Settings\Measurable\MeasurableSetting;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\Settings\FakeMeasurableSettings;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php b/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php
index 7bc95322a2..c7bdbcc6b4 100644
--- a/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Measurable\MeasurableSetting;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php b/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php
index 40769e641a..209e927059 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php
@@ -9,10 +9,8 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Plugin\SystemConfigSetting;
-use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
/**
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php
index d3580d9e73..6abc8ffc92 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php
index c7e89c9b6c..80a88c4eec 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Db;
use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Settings\Plugin\SystemSettings;
use Piwik\Tests\Integration\Settings\BaseSettingsTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php
index 6732d12eea..120ade8833 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php
@@ -11,9 +11,7 @@ namespace Piwik\Tests\Integration\Settings\Plugin;
use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Plugin\UserSetting;
-use Piwik\Settings\Storage\Storage;
use Piwik\Tests\Framework\Mock\FakeAccess;
-use Piwik\Tests\Framework\Mock\Settings\FakeBackend;
use Piwik\Tests\Framework\Mock\Settings\FakeUserSettings;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php
index 00d5e455b0..fcb3eec238 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Db;
use Piwik\Settings\Plugin\UserSetting;
use Piwik\Settings\Plugin\UserSettings;
use Piwik\Tests\Framework\Mock\Settings\FakeUserSettings;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php
index 1d557684f5..add4765bbc 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\MeasurableSettingsTable;
use Piwik\Settings\Storage\Backend\Config;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php
index e0b5edcef3..27c33d4de8 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\MeasurableSettingsTable;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php
index 00617f3771..5048f75c47 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\PluginSettingsTable;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php
index 8c077a2869..ff462b812d 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\SitesTable;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/SupportedBrowserTest.php b/tests/PHPUnit/Integration/SupportedBrowserTest.php
index 631df4f111..a8ecc4aa23 100644
--- a/tests/PHPUnit/Integration/SupportedBrowserTest.php
+++ b/tests/PHPUnit/Integration/SupportedBrowserTest.php
@@ -7,12 +7,7 @@
*/
namespace Piwik\Tests\Integration;
-use Piwik\Http;
-use Piwik\Site;
-use Piwik\Piwik;
use Piwik\SupportedBrowser;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Plugins\SitesManager\API;
use Piwik\Exception\NotSupportedBrowserException;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Tracker/DbTest.php b/tests/PHPUnit/Integration/Tracker/DbTest.php
index 9260abd4a2..f4a63d7352 100644
--- a/tests/PHPUnit/Integration/Tracker/DbTest.php
+++ b/tests/PHPUnit/Integration/Tracker/DbTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Tracker;
use Piwik\Common;
use Piwik\Config;
-use Piwik\Db;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Timer;
diff --git a/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php b/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php
index 687595f6d2..1e63e3cc7e 100644
--- a/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php
+++ b/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php
@@ -8,16 +8,8 @@
namespace Piwik\Tests\Integration\Tracker;
-use Piwik\Config;
use Piwik\Date;
-use Piwik\Plugins\SitesManager\API;
-use Piwik\Tests\Framework\Mock\FakeAccess;
-use Piwik\Tracker\Action;
use Piwik\Tracker\FingerprintSalt;
-use Piwik\Tracker\PageUrl;
-use Piwik\Tracker\Request;
-use Piwik\Translate;
-use Piwik\Plugin\Manager as PluginManager;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
diff --git a/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php b/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php
index d3a5d98b94..0a3046f24e 100644
--- a/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php
+++ b/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Tracker\Handler;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker;
diff --git a/tests/PHPUnit/Integration/Tracker/RequestSetTest.php b/tests/PHPUnit/Integration/Tracker/RequestSetTest.php
index b0448e45dc..d0f7010281 100644
--- a/tests/PHPUnit/Integration/Tracker/RequestSetTest.php
+++ b/tests/PHPUnit/Integration/Tracker/RequestSetTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Tracker;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tracker\Request;
diff --git a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
index be93db0811..be50c3e5f2 100644
--- a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
+++ b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Tracker;
use Piwik\Config;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Tests\Framework\Mock\Plugin\Manager;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\TrackerCodeGenerator;
diff --git a/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php b/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php
index b9b8c1c15f..336854da3e 100644
--- a/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php
+++ b/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Tracker\Visit;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker;
diff --git a/tests/PHPUnit/Integration/Tracker/VisitTest.php b/tests/PHPUnit/Integration/Tracker/VisitTest.php
index 8ca50e386a..e9251249d7 100644
--- a/tests/PHPUnit/Integration/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Integration/Tracker/VisitTest.php
@@ -8,10 +8,8 @@
namespace Piwik\Tests\Integration\Tracker;
-use Piwik\Cache;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Matomo\Network\IPUtils;
use Piwik\Plugin\Manager;
use Piwik\Plugins\SitesManager\API;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php b/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
index 20a45a1a4d..f456dcfcff 100644
--- a/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
+++ b/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Tracker;
use Matomo\Network\IP;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
use Piwik\EventDispatcher;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php b/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php
index f817b1f1a0..9bd6b4fa7f 100644
--- a/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php
+++ b/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php
@@ -9,10 +9,7 @@
namespace Piwik\Tests\Integration\Updater\Migration\Db;
use Piwik\Common;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Updater\Migration\Config\Set;
use Piwik\Updater\Migration\Db\AddColumn;
use Piwik\Updater\Migration\Db\AddColumns;
use Piwik\Updater\Migration\Db\AddIndex;
diff --git a/tests/PHPUnit/System/ApiGetReportMetadataTest.php b/tests/PHPUnit/System/ApiGetReportMetadataTest.php
index 2a07d24148..22ba6cfbd6 100644
--- a/tests/PHPUnit/System/ApiGetReportMetadataTest.php
+++ b/tests/PHPUnit/System/ApiGetReportMetadataTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\System;
use Piwik\API\Proxy;
-use Piwik\Cache;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\ThreeGoalsOnePageview;
diff --git a/tests/PHPUnit/System/ArchiveInvalidationTest.php b/tests/PHPUnit/System/ArchiveInvalidationTest.php
index 63c23b47a5..7e50a9cec5 100644
--- a/tests/PHPUnit/System/ArchiveInvalidationTest.php
+++ b/tests/PHPUnit/System/ArchiveInvalidationTest.php
@@ -9,10 +9,7 @@ namespace Piwik\Tests\System;
use Piwik\API\Request;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Common;
use Piwik\Config;
-use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Tests\Fixtures\VisitsTwoWebsitesWithAdditionalVisits;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/tests/PHPUnit/System/BlobReportLimitingTest.php b/tests/PHPUnit/System/BlobReportLimitingTest.php
index 8d8a055b5e..0cacc3e832 100644
--- a/tests/PHPUnit/System/BlobReportLimitingTest.php
+++ b/tests/PHPUnit/System/BlobReportLimitingTest.php
@@ -7,13 +7,9 @@
*/
namespace Piwik\Tests\System;
-use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Cache;
use Piwik\Config;
-use Piwik\Date;
use Piwik\Plugins\Actions\ArchivingHelper;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\TestConfig;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\ManyVisitsWithMockLocationProvider;
diff --git a/tests/PHPUnit/System/ConsoleTest.php b/tests/PHPUnit/System/ConsoleTest.php
index a82d31ecfb..3ae12f7b6d 100644
--- a/tests/PHPUnit/System/ConsoleTest.php
+++ b/tests/PHPUnit/System/ConsoleTest.php
@@ -9,9 +9,7 @@
namespace Piwik\Tests\System;
use Piwik\CliMulti\CliPhp;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Development;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\Monolog\Handler\FailureLogMessageDetector;
use Piwik\Tests\Framework\Fixture;
@@ -166,17 +164,17 @@ class ConsoleTest extends ConsoleCommandTestCase
$output = $this->normalizeOutput($output);
$expected = <<<END
-PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 85
+PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 83
-Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 85
+Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 83
*** IN SAFEMODE ***
Matomo encountered an error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) (which lead to: Error: array (
'type' => 1,
'message' => 'Allowed memory size of X bytes exhausted (tried to allocate X bytes)',
'file' => '/tests/PHPUnit/System/ConsoleTest.php',
- 'line' => 85,
- 'backtrace' => ' on /tests/PHPUnit/System/ConsoleTest.php(85)
-#0 /tests/PHPUnit/System/ConsoleTest.php(72): Piwik\\\\Tests\\\\System\\\\TestCommandWithFatalError->executeImpl()
+ 'line' => 83,
+ 'backtrace' => ' on /tests/PHPUnit/System/ConsoleTest.php(83)
+#0 /tests/PHPUnit/System/ConsoleTest.php(70): Piwik\\\\Tests\\\\System\\\\TestCommandWithFatalError->executeImpl()
#1 /vendor/symfony/console/Symfony/Component/Console/Command/Command.php(257): Piwik\\\\Tests\\\\System\\\\TestCommandWithFatalError->execute()
',
))
diff --git a/tests/PHPUnit/System/FlattenReportsTest.php b/tests/PHPUnit/System/FlattenReportsTest.php
index 0785639de1..ecef5caf1a 100644
--- a/tests/PHPUnit/System/FlattenReportsTest.php
+++ b/tests/PHPUnit/System/FlattenReportsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\System;
use Piwik\EventDispatcher;
-use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\Referrers\Reports\GetWebsites;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php b/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php
index cfa386718d..7afcdc86f4 100644
--- a/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php
+++ b/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\System;
-use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\TwoVisitsNoKeywordWithBot;
diff --git a/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php b/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php
index 6a3af0d3fd..baf0fd2fb5 100644
--- a/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php
+++ b/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
-use Piwik\DbHelper;
use Piwik\Piwik;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\VisitsOverSeveralDays;
diff --git a/tests/PHPUnit/System/TrackerTest.php b/tests/PHPUnit/System/TrackerTest.php
index 592b65c75c..1eb3650e4f 100644
--- a/tests/PHPUnit/System/TrackerTest.php
+++ b/tests/PHPUnit/System/TrackerTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\System;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Option;
use Piwik\Plugins\UserCountry\LocationProvider;
@@ -19,7 +18,6 @@ use Piwik\Scheduler\Timetable;
use Piwik\SettingsPiwik;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Tracker;
/**
* @group Core
@@ -125,6 +123,26 @@ class TrackerTest extends IntegrationTestCase
$this->assertActionEquals('scary <> movies', $conversionItems[0]['idaction_category']);
}
+ public function test_trackingEcommerceOrder_WithNameAndSKUArrays()
+ {
+ // item sku, item name, item category, item price, item quantity
+ $ecItems = array(array(["sku1", "sku2"], ["name1", "name2"], 'category1', 12.99, 1));
+
+ $urlToTest = $this->getEcommerceItemsUrl($ecItems);
+
+ $response = $this->sendTrackingRequestByCurl($urlToTest);
+ Fixture::checkResponse($response);
+
+ $this->assertEquals(1, $this->getCountOfConversions());
+
+ $conversionItems = $this->getConversionItems();
+ $this->assertEquals(1, count($conversionItems));
+
+ $this->assertActionEquals('sku1,sku2', $conversionItems[0]['idaction_sku']);
+ $this->assertActionEquals('name1,name2', $conversionItems[0]['idaction_name']);
+ $this->assertActionEquals('category1', $conversionItems[0]['idaction_category']);
+ }
+
public function test_trackingEcommerceOrder_DoesNotFail_WhenEmptyEcommerceItemsParamUsed()
{
// item sku, item name, item category, item price, item quantity
diff --git a/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php b/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php
index 4708ba7013..0df58a06c5 100644
--- a/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php
+++ b/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php
@@ -8,11 +8,6 @@
namespace Piwik\Tests\System;
use Piwik\Archive;
-use Piwik\Archive\ArchivePurger;
-use Piwik\Cache;
-use Piwik\Container\StaticContainer;
-use Piwik\Date;
-use Piwik\Segment;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\TwoSitesTwoVisitorsDifferentDays;
diff --git a/tests/PHPUnit/System/Utf8mb4Test.php b/tests/PHPUnit/System/Utf8mb4Test.php
index 1fb18bae3d..09c7eba365 100644
--- a/tests/PHPUnit/System/Utf8mb4Test.php
+++ b/tests/PHPUnit/System/Utf8mb4Test.php
@@ -7,13 +7,8 @@
*/
namespace Piwik\Tests\System;
-use Piwik\Common;
-use Piwik\Db;
use Piwik\Tests\Fixtures\Utf8mb4;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Tracker\Action;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
-use Piwik\Tests\Fixtures\OneVisitWithAbnormalPageviewUrls;
/**
* Tests for tracking parameters containing 4 byte UTF8 chars.
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
index 81afafa469..f5149f4afd 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
@@ -118,6 +118,19 @@
<logo>plugins/Morpheus/icons/dist/browsers/FF.png</logo>
</row>
<row>
+ <label>Apache HTTP Client 4.2</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>0</sum_daily_nb_users>
+ <segment>browserCode==Apache+HTTP+Client;browserVersion==4.2</segment>
+ <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
+ </row>
+ <row>
<label>Chrome 11.0</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
@@ -221,17 +234,4 @@
<segment>browserCode==IE;browserVersion==8.0</segment>
<logo>plugins/Morpheus/icons/dist/browsers/IE.png</logo>
</row>
- <row>
- <label>Java</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- <max_actions>1</max_actions>
- <sum_visit_length>0</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>0</nb_visits_converted>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_nb_users>0</sum_daily_nb_users>
- <segment>browserCode==Java;browserVersion==</segment>
- <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
- </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
index 33534d587e..6d10bd3adf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
@@ -155,6 +155,18 @@
<segment>browserCode==FF</segment>
</row>
<row>
+ <label>Apache HTTP Client</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>0</sum_daily_nb_users>
+ <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
+ </row>
+ <row>
<label>Chrome Mobile</label>
<nb_visits>1</nb_visits>
<nb_actions>3</nb_actions>
@@ -197,16 +209,4 @@
<sum_daily_nb_users>0</sum_daily_nb_users>
<logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
</row>
- <row>
- <label>Java</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- <max_actions>1</max_actions>
- <sum_visit_length>0</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>0</nb_visits_converted>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_nb_users>0</sum_daily_nb_users>
- <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
- </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
index 9eca61909c..3b75dec8b1 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
@@ -5259,11 +5259,11 @@
<operatingSystemVersion>UNK</operatingSystemVersion>
<browserFamily />
<browserFamilyDescription>Unknown</browserFamilyDescription>
- <browser>Java</browser>
- <browserName>Java</browserName>
+ <browser>Apache HTTP Client 4.2</browser>
+ <browserName>Apache HTTP Client</browserName>
<browserIcon>plugins/Morpheus/icons/dist/browsers/UNK.png</browserIcon>
- <browserCode>Java</browserCode>
- <browserVersion />
+ <browserCode>Apache HTTP Client</browserCode>
+ <browserVersion>4.2</browserVersion>
<totalEcommerceRevenue>0</totalEcommerceRevenue>
<totalEcommerceConversions>0</totalEcommerceConversions>
<totalEcommerceItems>0</totalEcommerceItems>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
index f01834cdbc..5814fe42c4 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
@@ -144,7 +144,7 @@
<sum_daily_nb_users>0</sum_daily_nb_users>
</row>
<row>
- <label>Unknown / Java / unknown</label>
+ <label>Unknown / Apache HTTP Client / unknown</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
index 895b1c510d..4ee05d3286 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
@@ -576,7 +576,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1280,7 +1280,7 @@
<id>Live_VisitorLog</id>
<name>Visits Log</name>
<order>5</order>
- <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" target="_blank" rel="noreferrer noopener"&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1347,7 +1347,7 @@
<id>CustomVariables_CustomVariables</id>
<name>Custom Variables</name>
<order>45</order>
- <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/custom-variables/" rel="noreferrer noopener" target="_blank"&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/custom-variables/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -4087,7 +4087,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal’s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal&#x2019;s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Goals guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -4939,7 +4939,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store’s performance. At a glance, you can see how many sales you’re making, how much revenue you are generating, and your website’s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store&#x2019;s performance. At a glance, you can see how many sales you&#x2019;re making, how much revenue you are generating, and your website&#x2019;s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Ecommerce guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index e498b90145..2033a7f476 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -124,7 +124,7 @@
<category>Visitors</category>
<name>Device brand</name>
<segment>deviceBrand</segment>
- <acceptedValues>2E, 3GNET, 3GO, 3Q, 4Good, 4ife, 7 Mobile, 360, 8848, A1, Accent, Ace, Acer, Acteck, Adronix, Advan, Advance, AfriOne, AGM, AG Mobile, AIDATA, Ainol, Airness, AIRON, Airties, AIS, Aiuto, Aiwa, Akai, AKIRA, Alba, Alcatel, Alcor, ALDI NORD, ALDI SÜD, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Alps, Altech UEC, Altice, altron, Amazon, AMCV, AMGOO, Amigoo, Amino, Amoi, Andowl, Anker, Anry, ANS, AOC, Aocos, AOpen, Aoson, AOYODKG, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Artizlee, ArtLine, Asano, Asanzo, Ask, Aspera, Assistant, Astro, Asus, AT&amp;T, Atmaca Elektronik, Atom, Atvio, Audiovox, AURIS, Avenzo, AVH, Avvio, Awow, Axioo, Axxion, Azumi Mobile, b2m, BangOlufsen, Barnes &amp; Noble, BBK, BB Mobile, BDF, BDQ, Becker, Beeline, Beelink, Beetel, Beista, Bellphone, Benco, BenQ, BenQ-Siemens, Benzo, Beyond, Bezkam, BGH, Bigben, BIHEE, BilimLand, Billion, BioRugged, Bird, Bitel, Bitmore, Bkav, Black Bear, Black Fox, Blackview, Blaupunkt, Bleck, Blloc, Blow, Blu, Bluboo, Bluebird, Bluedot, Bluegood, Bluewave, BMAX, Bmobile, Bobarry, bogo, Boway, bq, Brandt, Bravis, BrightSign, Brondi, BS Mobile, Bubblegum, Bundy, Bush, CAGI, Camfone, Canal Digital, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Cavion, Celcus, Celkon, Cell-C, CellAllure, Cellution, Centric, CG Mobile, CGV, Changhong, Cherry Mobile, Chico Mobile, China Mobile, Chuwi, Claresta, Clarmin, Clementoni, Cloud, Cloudfone, Cloudpad, Clout, CnM, Cobalt, Coby Kyros, Colors, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Connectce, Connex, Conquest, Contixo, Coolpad, CORN, Cosmote, Covia, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Crown, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datalogic, Datamini, Datang, Datawind, Datsun, Dazen, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, DF, Dialog, Dicam, Digi, Digicel, DIGIFORS, Digihome, Digiland, Digma, DING DING, DISH, Ditecma, Diva, Divisat, DIXON, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Dragon Touch, Dreamgate, Droxio, Dune HD, DUNNS Mobile, E-Boda, E-Ceros, E-tel, Eagle, Easypix, EBEST, Echo Mobiles, ECON, ECS, EE, Einstein, EKO, Eks Mobility, EKT, ELARI, Electroneum, ELECTRONIA, Elekta, Element, Elenberg, Elephone, Eltex, Ematic, Energizer, Energy Sistem, Engel, Enot, Epik One, Epson, Ergo, Ericsson, Ericy, Erisson, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurocase, Eurostar, Evercoss, Evertek, Evolio, Evolveo, Evoo, EVPAD, EvroMedia, EWIS, EXCEED, Exmart, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, F&amp;U, F2 Mobile, F150, Facebook, Fairphone, Famoco, Fantec, FaRao Pro, FarEasTone, Fengxiang, FEONAL, Fero, FiGi, FiGO, FiiO, FinePower, Finlux, FireFly Mobile, FISE, Fly, FLYCAT, FMT, FNB, FNF, Fondi, Fonos, FORME, Formuler, Forstar, Fortis, Fourel, Four Mobile, Foxconn, Freetel, Fuego, Fujitsu, Funai, Fusion5, G-TiDE, G-Touch, Galaxy Innovations, Garmin-Asus, Gateway, Gemini, General Mobile, Genesis, GEOFOX, Geotel, Geotex, GFive, Ghia, Ghong, Ghost, Gigabyte, Gigaset, Gini, Ginzzu, Gionee, Globex, Glofiish, GLONYX, GLX, GOCLEVER, Gocomma, GoGEN, Gol Mobile, Goly, Gome, GoMobile, Google, Goophone, Gooweel, Gplus, Gradiente, Grape, Gree, Greentel, Gresso, Gretel, Grundig, Gtel, H96, Hafury, Haier, HannSpree, Hardkernel, Hasee, Helio, HERO, Hezire, Hi, Hi-Level, High Q, Highscreen, HiMax, Hipstreet, Hisense, Hitachi, Hitech, HKPro, Hoffmann, Hometech, Homtom, Honeywell, Hoozo, Horizon, Horizont, Hosin, Hotel, Hot Pepper, Hotwav, How, HP, HTC, Huadoo, Huavi, Huawei, Humax, Hurricane, Huskee, Hyrican, Hyundai, Hyve, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iData, iDroid, iGet, iHunt, Ikea, IKI Mobile, iKoMo, iKon, IKU Mobile, iLA, iLife, iMan, iMars, IMO Mobile, Impression, INCAR, Inch, Inco, iNew, Infinix, InFocus, InfoKit, Inkti, InnJoo, Innos, Innostream, Inoi, INQ, Insignia, INSYS, Intek, Intex, Invens, Inverto, Invin, iOcean, iOutdoor, iPro, iQ&amp;T, IQM, IRA, Irbis, Iris, iRola, iRulu, iSafe Mobile, iSWAG, IT, iTel, iTruck, IUNI, iVA, iView, iVooMi, ivvi, iZotron, JAY-Tech, Jedi, Jeka, Jesy, JFone, Jiake, Jiayu, Jinga, Jivi, JKL, Jolla, Juniper Systems, Just5, JVC, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, Kata, KATV1, Kazam, Kazuna, KDDI, Kempler &amp; Strauss, Keneksi, Kenxinda, Kiano, Kingbox, Kingsun, KINGZONE, Kiowa, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Koolnee, Kooper, KOPO, Koridy, Koslam, KREZ, KRIP, KRONO, Krüger&amp;Matz, KT-Tech, KUBO, Kuliao, Kult, Kumai, Kurio, Kvant, Kyocera, Kyowon, Kzen, L-Max, LAIQ, Land Rover, Landvo, Lanix, Lark, Laurus, Lava, LCT, Leader Phone, Leagoo, Leben, Ledstar, LeEco, Leff, LEMFO, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Liberton, Lifemaxx, Lingwin, Linnex, Linsar, Loewe, Logic, Logicom, Loview, LT Mobile, Lumigon, Lumus, Luna, Luxor, LYF, M-Horse, M-Tech, M.T.T., M4tel, MAC AUDIO, Macoox, Mafe, Magicsee, Magnus, Majestic, Malata, Manhattan, Mann, Manta Multimedia, Mantra, Mara, Massgo, Masstel, Mastertech, Matrix, Maxcom, Maximus, Maxtron, MAXVI, Maxwest, Maze, Maze Speed, MBOX, MDC Store, MDTV, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Microtech, Minix, Mintt, Mio, Mione, Miray, Mito, Mitsubishi, Mitsui, MIVO, MIXC, MiXzo, MLLED, MLS, MMI, Mobicel, MobiIoT, Mobiistar, Mobiola, Mobistel, MobiWire, Mobo, Modecom, Mofut, Motorola, Movic, mPhone, Mpman, MSI, MStar, MTC, MTN, Multilaser, MYFON, MyGica, Mymaga, MyPhone, Myria, Myros, Mystery, MyTab, MyWigo, Nabi, Naomi Phone, National, Navcity, Navitech, Navitel, Navon, NavRoad, NEC, Necnot, Neffos, Neo, Neomi, Neon IQ, Netgear, NeuImage, New Balance, Newgen, Newland, Newman, Newsday, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, NOBUX, NOGA, Nokia, Nomi, Nomu, Nordmende, NorthTech, Nos, Nous, Novex, NuAns, Nubia, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Oale, OASYS, Obabox, Obi, Oculus, Odys, OINOM, Ok, Okapia, OKSI, OKWU, OMIX, Onda, OnePlus, Onix, ONN, ONYX BOOX, Ookee, OpelMobile, Openbox, OPPO, Opsson, Orange, Orbic, Orbita, Ordissimo, Orion, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Packard Bell, Paladin, Palm, Panacom, Panasonic, Pantech, Parrot Mobile, PCBOX, PCD, PCD Argentina, PEAQ, Pendoo, Pentagram, Perfeo, Phicomm, Philco, Philips, Phonemax, phoneOne, Pico, Pioneer, PiPO, Pixela, Pixelphone, Pixus, Planet Computers, Ployer, Plum, Pluzz, PocketBook, POCO, Point of View, Polar, PolarLine, Polaroid, Polestar, PolyPad, Polytron, Pomp, Poppox, POPTEL, Porsche, Positivo, Positivo BGH, PPTV, Premio, Prestigio, Primepad, Primux, Prixton, PROFiLO, Proline, Prology, ProScan, Protruly, ProVision, PULID, Q-Box, Q-Touch, Q.Bell, Qilive, QMobile, Qnet Mobile, QTECH, Qtek, Quantum, Qubo, Quechua, Qumo, R-TV, Rakuten, Ramos, Raspberry, Ravoz, Razer, RCA Tablets, Reach, Readboy, Realme, RED, Redfox, Reeder, REGAL, Remdun, Retroid Pocket, Revo, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Rivo, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, RoyQueen, RT Project, RugGear, Ruio, Runbo, Ryte, S-TELL, S2Tel, Saba, Safaricom, Sagem, Saiet, Salora, Samsung, Sanei, Sansui, Santin, Sanyo, Savio, SCBC, Schneider, Seatel, Seeken, SEG, Sega, Selecline, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, Seuic, SFR, Sharp, Shift Phones, Shivaki, Shtrikh-M, Shuttle, Sico, Siemens, Sigma, Silelis, Silent Circle, Simbans, Simply, Singtech, Siragon, Sirin labs, SK Broadband, SKG, Sky, Skyworth, Smadl, Smailo, Smart, Smartab, SmartBook, SMARTEC, Smart Electronic, Smartfren, Smartisan, Smarty, Smooth Mobile, Smotreshka, Softbank, Soho Style, SOLE, SOLO, Solone, Sonim, SONOS, Sony, Sony Ericsson, Soundmax, Soyes, Spark, SPC, Spectralink, Spectrum, Spice, Sprint, SQOOL, Star, Starlight, Starmobile, Starway, Starwind, STF Mobile, STG Telecom, STK, Stonex, Storex, StrawBerry, STRONG, Stylo, Subor, Sugar, Sumvision, Sunmi, Sunny, Sunstech, SunVan, Sunvell, SUNWIND, SuperSonic, SuperTab, Supra, Suzuki, Swipe, SWISSMOBILITY, Swisstone, SWTV, Symphony, Syrox, T-Mobile, TAG Tech, Taiga System, Takara, Tambo, Tanix, TB Touch, TCL, TD Systems, Technicolor, Technika, TechniSat, Technopc, TechnoTrend, TechPad, Techwood, Teclast, Tecno Mobile, TEENO, Teknosa, Tele2, Telefunken, Telego, Telenor, Telia, Telit, Telpo, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, Thuraya, TIANYU, Tigers, Time2, Timovi, Tinai, Tinmo, TiPhone, TiVo, TOKYO, Tolino, Tone, Tooky, Topelotek, Top House, Toplux, Topway, Torex, TOSCIDO, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Trident, Trifone, Trio, Tronsmart, True, True Slim, TTEC, TuCEL, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TurboPad, Turkcell, TVC, TWM, Twoe, TWZ, Tymes, Türk Telekom, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, UNIWA, Unknown, Unnecto, Unonu, Unowhy, Urovo, UTime, UTOK, UTStarcom, UZ Mobile, v-mobile, VAIO, Vankyo, Vargo, Vastking, VAVA, VC, Vega, Venso, Venturer, VEON, Verico, Verizon, Vernee, Verssed, Vertex, Vertu, Verykool, Vesta, Vestel, Vexia, VGO TEL, Videocon, Videoweb, ViewSonic, Vinabox, Vinga, Vinsoc, Vipro, Virzo, Vision Touch, Vitelcom, Viumee, Vivax, Vivo, VIWA, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, VOX, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, WE, Web TV, Weimei, WellcoM, WELLINGTON, Western Digital, Westpoint, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Winmax, Winnovo, Wintouch, Wiseasy, WIWA, Wizz, Wolder, Wolfgang, Wolki, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, X.Vision, XGIMI, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Xtratech, Yandex, Yarvik, YASIN, Yes, Yezz, Yoka TV, Yota, YOTOPT, Ytone, Yu, Yuandao, YUHO, Yuno, Yusun, Yxtel, Zaith, Zatec, Zebra, Zeemi, Zen, Zenek, Zentality, Zfiner, ZH&amp;K, Zidoo, ZIFRO, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, Zyrex, öwn</acceptedValues>
+ <acceptedValues>2E, 3GNET, 3GO, 3Q, 4Good, 4ife, 7 Mobile, 360, 8848, A1, Accent, Ace, Acer, Acteck, Adronix, Advan, Advance, AfriOne, AGM, AG Mobile, AIDATA, Ainol, Airness, AIRON, Airties, AIS, Aiuto, Aiwa, Akai, AKIRA, Alba, Alcatel, Alcor, ALDI NORD, ALDI SÜD, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Alps, Altech UEC, Altice, altron, Amazon, AMCV, AMGOO, Amigoo, Amino, Amoi, Andowl, Angelcare, Anker, Anry, ANS, AOC, Aocos, AOpen, Aoson, AOYODKG, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Artizlee, ArtLine, Asano, Asanzo, Ask, Aspera, Assistant, Astro, Asus, AT&amp;T, Atmaca Elektronik, Atom, Atvio, Audiovox, AURIS, Autan, Avenzo, AVH, Avvio, Awow, Axioo, Axxion, Azumi Mobile, b2m, BangOlufsen, Barnes &amp; Noble, BBK, BB Mobile, BDF, BDQ, Becker, Beeline, Beelink, Beetel, Beista, Bellphone, Benco, BenQ, BenQ-Siemens, Benzo, Beyond, Bezkam, BGH, Bigben, BIHEE, BilimLand, Billion, BioRugged, Bird, Bitel, Bitmore, Bkav, Black Bear, Black Fox, Blackview, Blaupunkt, Bleck, Blloc, Blow, Blu, Bluboo, Bluebird, Bluedot, Bluegood, Bluewave, BMAX, Bmobile, Bobarry, bogo, Boway, bq, Brandt, Bravis, BrightSign, Brondi, BS Mobile, Bubblegum, Bundy, Bush, CAGI, Camfone, Canal Digital, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Cavion, Celcus, Celkon, Cell-C, CellAllure, Cellution, Centric, CG Mobile, CGV, Changhong, Cherry Mobile, Chico Mobile, China Mobile, China Telecom, Chuwi, Claresta, Clarmin, ClearPHONE, Clementoni, Cloud, Cloudfone, Cloudpad, Clout, CnM, Cobalt, Coby Kyros, Colors, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Connectce, Connex, Conquest, Contixo, Coolpad, CORN, Cosmote, Covia, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Crown, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datalogic, Datamini, Datang, Datawind, Datsun, Dazen, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, DF, Dialog, Dicam, Digi, Digicel, DIGIFORS, Digihome, Digiland, Digma, DING DING, DISH, Ditecma, Diva, Divisat, DIXON, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doppio, DORLAND, Doro, Dragon Touch, Dreamgate, Droxio, Dune HD, DUNNS Mobile, E-Boda, E-Ceros, E-tel, Eagle, Easypix, EBEST, Echo Mobiles, ecom, ECON, ECS, EE, Einstein, EKO, Eks Mobility, EKT, ELARI, Electroneum, ELECTRONIA, Elekta, Element, Elenberg, Elephone, Eltex, Ematic, Energizer, Energy Sistem, Engel, Enot, Epik One, Epson, Ergo, Ericsson, Ericy, Erisson, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurocase, Eurostar, Evercoss, Evertek, Evolio, Evolveo, Evoo, EVPAD, EvroMedia, EWIS, EXCEED, Exmart, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, F&amp;U, F2 Mobile, F150, Facebook, Fairphone, Famoco, Fantec, FaRao Pro, FarEasTone, Fengxiang, FEONAL, Fero, FiGi, FiGO, FiiO, FinePower, Finlux, FireFly Mobile, FISE, Fly, FLYCAT, FMT, FNB, FNF, Fondi, Fonos, FORME, Formuler, Forstar, Fortis, Fourel, Four Mobile, Foxconn, Freetel, Fuego, Fujitsu, Funai, Fusion5, G-TiDE, G-Touch, Galaxy Innovations, Garmin-Asus, Gateway, Gemini, General Mobile, Genesis, GEOFOX, Geotel, Geotex, GFive, Ghia, Ghong, Ghost, Gigabyte, Gigaset, Gini, Ginzzu, Gionee, Globex, Glofiish, GLONYX, GLX, GOCLEVER, Gocomma, GoGEN, Gol Mobile, Goly, Gome, GoMobile, Google, Goophone, Gooweel, Gplus, Gradiente, Grape, Gree, Greentel, Gresso, Gretel, Grundig, Gtel, H96, Hafury, Haier, Hamlet, HannSpree, Hardkernel, Hasee, Helio, HERO, Hezire, Hi, Hi-Level, High Q, Highscreen, HiMax, Hi Nova, Hipstreet, Hisense, Hitachi, Hitech, HKPro, Hoffmann, Hometech, Homtom, Honeywell, Hoozo, Horizon, Horizont, Hosin, Hotel, Hot Pepper, Hotwav, How, HP, HTC, Huadoo, Huavi, Huawei, Humax, Hurricane, Huskee, Hyrican, Hyundai, Hyve, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iData, iDroid, iGet, iHunt, Ikea, IKI Mobile, iKoMo, iKon, IKU Mobile, iLA, iLife, iMan, iMars, IMO Mobile, Impression, INCAR, Inch, Inco, iNew, Infinix, InFocus, InfoKit, Inkti, InnJoo, Innos, Innostream, Inoi, INQ, Insignia, INSYS, Intek, Intex, Invens, Inverto, Invin, iOcean, iOutdoor, iPEGTOP, iPro, iQ&amp;T, IQM, IRA, Irbis, Iris, iRola, iRulu, iSafe Mobile, iSWAG, IT, iTel, iTruck, IUNI, iVA, iView, iVooMi, ivvi, iZotron, JAY-Tech, Jedi, Jeka, Jesy, JFone, Jiake, Jiayu, Jinga, Jio, Jivi, JKL, Jolla, Jumper, Juniper Systems, Just5, JVC, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, Kata, KATV1, Kazam, Kazuna, KDDI, Kempler &amp; Strauss, Keneksi, Kenxinda, Kiano, Kingbox, Kingsun, KINGZONE, Kiowa, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Koolnee, Kooper, KOPO, Koridy, Koslam, KREZ, KRIP, KRONO, Krüger&amp;Matz, KT-Tech, KUBO, Kuliao, Kult, Kumai, Kurio, Kvant, Kyocera, Kyowon, Kzen, L-Max, LAIQ, Land Rover, Landvo, Lanix, Lark, Laurus, Lava, LCT, Leader Phone, Leagoo, Leben, Ledstar, LeEco, Leff, LEMFO, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Liberton, Lifemaxx, Lingwin, Linnex, Linsar, Loewe, Logic, Logicom, Loview, LT Mobile, Lumigon, Lumus, Luna, Luxor, LYF, M-Horse, M-Tech, M.T.T., M4tel, MAC AUDIO, Macoox, Mafe, Magicsee, Magnus, Majestic, Malata, Manhattan, Mann, Manta Multimedia, Mantra, Mara, Massgo, Masstel, Mastertech, Matrix, Maxcom, Maximus, Maxtron, MAXVI, Maxwest, Maze, Maze Speed, MBOX, MDC Store, MDTV, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Microtech, Minix, Mintt, Mio, Mione, Miray, Mito, Mitsubishi, Mitsui, MIVO, MIXC, MiXzo, MLLED, MLS, MMI, Mobicel, MobiIoT, Mobiistar, Mobiola, Mobistel, MobiWire, Mobo, Modecom, Mofut, Motorola, Movic, mPhone, Mpman, MSI, MStar, MTC, MTN, Multilaser, MYFON, MyGica, Mymaga, MyPhone, Myria, Myros, Mystery, MyTab, MyWigo, Nabi, Naomi Phone, National, Navcity, Navitech, Navitel, Navon, NavRoad, NEC, Necnot, Neffos, Neo, Neomi, Neon IQ, Netgear, NeuImage, New Balance, Newgen, Newland, Newman, Newsday, NewsMy, Nexa, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, NOBUX, NOGA, Nokia, Nomi, Nomu, Noontec, Nordmende, NorthTech, Nos, Nous, Novex, NuAns, Nubia, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Oale, OASYS, Obabox, Obi, Oculus, Odys, OINOM, Ok, Okapia, OKSI, OKWU, OMIX, Onda, OnePlus, Onix, Onkyo, ONN, ONYX BOOX, Ookee, OpelMobile, Openbox, OPPO, Opsson, Orange, Orbic, Orbita, Ordissimo, Orion, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Packard Bell, Paladin, Palm, Panacom, Panasonic, Pantech, Parrot Mobile, PCBOX, PCD, PCD Argentina, PEAQ, Pendoo, Pentagram, Perfeo, Phicomm, Philco, Philips, Phonemax, phoneOne, Pico, Pioneer, PiPO, Pixela, Pixelphone, Pixus, Planet Computers, Ployer, Plum, Pluzz, PocketBook, POCO, Point Mobile, Point of View, Polar, PolarLine, Polaroid, Polestar, PolyPad, Polytron, Pomp, Poppox, POPTEL, Porsche, Positivo, Positivo BGH, PPTV, Premio, Prestigio, Primepad, Primux, Prixton, PROFiLO, Proline, Prology, ProScan, Protruly, ProVision, PULID, Purism, Q-Box, Q-Touch, Q.Bell, Qilive, QMobile, Qnet Mobile, QTECH, Qtek, Quantum, Qubo, Quechua, Qumo, R-TV, Rakuten, Ramos, Raspberry, Ravoz, Razer, RCA Tablets, Reach, Readboy, Realme, RED, Redfox, Reeder, REGAL, Remdun, Retroid Pocket, Revo, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Rivo, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, Royole, RoyQueen, RT Project, RugGear, Ruio, Runbo, Ryte, S-TELL, S2Tel, Saba, Safaricom, Sagem, Saiet, Salora, Samsung, Sanei, Sansui, Santin, Sanyo, Savio, SCBC, Schneider, Schok, Seatel, Seeken, SEG, Sega, Selecline, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, Seuic, SFR, Shanling, Sharp, Shift Phones, Shivaki, Shtrikh-M, Shuttle, Sico, Siemens, Sigma, Silelis, Silent Circle, Simbans, Simply, Singtech, Siragon, Sirin labs, SK Broadband, SKG, Sky, Skyworth, Smadl, Smailo, Smart, Smartab, SmartBook, SMARTEC, Smart Electronic, Smartfren, Smartisan, Smarty, Smooth Mobile, Smotreshka, Softbank, Soho Style, SOLE, SOLO, Solone, Sonim, SONOS, Sony, Sony Ericsson, Soundmax, Soyes, Spark, SPC, Spectralink, Spectrum, Spice, Sprint, SQOOL, Star, Starlight, Starmobile, Starway, Starwind, STF Mobile, STG Telecom, STK, Stonex, Storex, StrawBerry, STRONG, Stylo, Subor, Sugar, Sumvision, Sunmi, Sunny, Sunstech, SunVan, Sunvell, SUNWIND, SuperSonic, SuperTab, Supra, Suzuki, Swipe, SWISSMOBILITY, Swisstone, SWTV, Symphony, Syrox, T-Mobile, TAG Tech, Taiga System, Takara, Tambo, Tanix, TB Touch, TCL, TD Systems, Technicolor, Technika, TechniSat, Technopc, TechnoTrend, TechPad, Techwood, Teclast, Tecno Mobile, TEENO, Teknosa, Tele2, Telefunken, Telego, Telenor, Telia, Telit, Telpo, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, Thuraya, TIANYU, Tigers, Time2, Timovi, Tinai, Tinmo, TiPhone, TiVo, TOKYO, Tolino, Tone, Tooky, Topelotek, Top House, Toplux, Topway, Torex, TOSCIDO, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Trident, Trifone, Trio, Tronsmart, True, True Slim, TTEC, TuCEL, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TurboPad, Turkcell, TVC, TWM, Twoe, TWZ, Tymes, Türk Telekom, U-Magic, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, UNIWA, Unknown, Unnecto, UNNO, Unonu, Unowhy, Urovo, UTime, UTOK, UTStarcom, UZ Mobile, v-mobile, VAIO, Vankyo, Vargo, Vastking, VAVA, VC, VDVD, Vega, Venso, Venturer, VEON, Verico, Verizon, Vernee, Verssed, Vertex, Vertu, Verykool, Vesta, Vestel, Vexia, VGO TEL, Videocon, Videoweb, ViewSonic, Vinabox, Vinga, Vinsoc, Vios, Vipro, Virzo, Vision Touch, Vitelcom, Viumee, Vivax, Vivo, VIWA, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorcom, Vorke, Voto, VOX, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, WE, Web TV, Weimei, WellcoM, WELLINGTON, Western Digital, Westpoint, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Winmax, Winnovo, Wintouch, Wiseasy, WIWA, Wizz, Wolder, Wolfgang, Wolki, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, X.Vision, XGIMI, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Xtratech, Yandex, Yarvik, YASIN, Yes, Yezz, Yoka TV, Yota, YOTOPT, Ytone, Yu, Yuandao, YUHO, Yuno, Yusun, Yxtel, Zaith, Zatec, Zebra, Zeemi, Zen, Zenek, Zentality, Zfiner, ZH&amp;K, Zidoo, ZIFRO, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, Zyrex, öwn</acceptedValues>
</row>
<row>
<type>dimension</type>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 8229275817..6193b364cb 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -217,7 +217,7 @@
<id>Live_VisitorLog</id>
<name>Visits Log</name>
<order>5</order>
- <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" target="_blank" rel="noreferrer noopener"&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Live</module>
<action>getLastVisitsDetails</action>
@@ -862,7 +862,7 @@
<id>UserId_UserReportTitle</id>
<name>User IDs</name>
<order>40</order>
- <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="noopener noreferrer" href="https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides"&gt;&lt;span class="icon-info"&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>UserId</module>
<action>getUsers</action>
@@ -889,7 +889,7 @@
<id>CustomVariables_CustomVariables</id>
<name>Custom Variables</name>
<order>45</order>
- <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/custom-variables/" rel="noreferrer noopener" target="_blank"&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/custom-variables/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>CustomVariables</module>
<action>getCustomVariables</action>
@@ -1078,7 +1078,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can&#x2019;t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getPageTitlesFollowingSiteSearch</action>
@@ -1105,7 +1105,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can&#x2019;t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getPageUrlsFollowingSiteSearch</action>
@@ -1132,7 +1132,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can&#x2019;t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getSiteSearchCategories</action>
@@ -1159,7 +1159,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can&#x2019;t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getSiteSearchKeywords</action>
@@ -1186,7 +1186,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can&#x2019;t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getSiteSearchNoResultKeywords</action>
@@ -1267,7 +1267,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getAction</action>
@@ -1295,7 +1295,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getAction</action>
@@ -1323,7 +1323,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getCategory</action>
@@ -1351,7 +1351,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getCategory</action>
@@ -1379,7 +1379,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getName</action>
@@ -1407,7 +1407,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getName</action>
@@ -1435,7 +1435,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentNames</action>
@@ -1462,7 +1462,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentNames</action>
@@ -1489,7 +1489,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentPieces</action>
@@ -1516,7 +1516,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentPieces</action>
@@ -1543,7 +1543,7 @@
<id>Transitions_Transitions</id>
<name>Transitions</name>
<order>46</order>
- <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Transitions</module>
<action>getTransitions</action>
@@ -1977,7 +1977,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store’s performance. At a glance, you can see how many sales you’re making, how much revenue you are generating, and your website’s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store&#x2019;s performance. At a glance, you can see how many sales you&#x2019;re making, how much revenue you are generating, and your website&#x2019;s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Ecommerce guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2959,7 +2959,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal’s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal&#x2019;s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Goals guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
diff --git a/tests/PHPUnit/Unit/AssetManagerTest.php b/tests/PHPUnit/Unit/AssetManagerTest.php
index ed34623130..406739bc8f 100644
--- a/tests/PHPUnit/Unit/AssetManagerTest.php
+++ b/tests/PHPUnit/Unit/AssetManagerTest.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\Unit;
-use Piwik\Cache;
use Piwik\AssetManager;
use Piwik\Config;
diff --git a/tests/PHPUnit/Unit/Category/CategoryTest.php b/tests/PHPUnit/Unit/Category/CategoryTest.php
index 8304375483..d9d550b494 100644
--- a/tests/PHPUnit/Unit/Category/CategoryTest.php
+++ b/tests/PHPUnit/Unit/Category/CategoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Unit\Category;
-use Piwik\Cache;
use Piwik\Category\Category;
use Piwik\Category\Subcategory;
diff --git a/tests/PHPUnit/Unit/Category/SubcategoryTest.php b/tests/PHPUnit/Unit/Category/SubcategoryTest.php
index 1cc42e0948..f04fb78ede 100644
--- a/tests/PHPUnit/Unit/Category/SubcategoryTest.php
+++ b/tests/PHPUnit/Unit/Category/SubcategoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Unit\Category;
-use Piwik\Cache;
use Piwik\Category\Subcategory;
/**
diff --git a/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php b/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php
index 883dfe922a..0219d546e5 100644
--- a/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php
+++ b/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php
@@ -10,7 +10,6 @@
namespace PHPUnit\Unit\CliMulti;
use PHPUnit\Framework\TestCase;
-use Piwik\API\Request;
use Piwik\CliMulti\RequestParser;
class RequestParserTest extends TestCase
diff --git a/tests/PHPUnit/Unit/Config/IniFileChainTest.php b/tests/PHPUnit/Unit/Config/IniFileChainTest.php
index 0274d12fba..886f214f48 100644
--- a/tests/PHPUnit/Unit/Config/IniFileChainTest.php
+++ b/tests/PHPUnit/Unit/Config/IniFileChainTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Unit\Config;
use PHPUnit\Framework\TestCase;
-use Piwik\Config;
use Piwik\Config\IniFileChain;
/**
diff --git a/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php b/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php
index b358e23e90..600078aecd 100644
--- a/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php
+++ b/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php
@@ -10,8 +10,6 @@ namespace Piwik\Tests\Unit;
use Piwik\Archive\Chunk;
use Piwik\DataAccess\ArchiveWriter;
-use Piwik\DataTable;
-use Piwik\Segment;
/**
* @group ArchiveWriterTest
diff --git a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php
index f315da52fd..4f80c779b8 100644
--- a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php
+++ b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Unit\DataAccess;
use Piwik\DataAccess\LogQueryBuilder\JoinGenerator;
use Piwik\DataAccess\LogQueryBuilder\JoinTables;
use Piwik\Tests\Framework\Mock\Plugin\LogTablesProvider;
-use Piwik\Tracker\Visit;
/**
* @group Core
diff --git a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php
index e2bc31f960..e4d9ce5da8 100644
--- a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php
+++ b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php
@@ -10,10 +10,8 @@ namespace Piwik\Tests\Core\DataTable\Filter;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Plugins\Actions\Reports\GetOutlinks;
use Piwik\Plugins\DevicePlugins\Reports\GetPlugin;
use Piwik\Plugins\UserCountry\Reports\GetCity;
-use Piwik\Plugins\UserCountry\Reports\GetCountry;
use Piwik\Plugins\VisitsSummary\Reports\Get;
/**
diff --git a/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php b/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php
index 93c7e927a1..29d99d7a38 100644
--- a/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php
+++ b/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Unit\DataTable\Filter;
use Piwik\DataTable\Filter\RangeCheck;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Plugins\CoreHome\Columns\Metrics\VisitsPercent;
/**
* @group DataTableTest
diff --git a/tests/PHPUnit/Unit/DataTable/ManagerTest.php b/tests/PHPUnit/Unit/DataTable/ManagerTest.php
index 7c482a585d..5a5a82f74d 100644
--- a/tests/PHPUnit/Unit/DataTable/ManagerTest.php
+++ b/tests/PHPUnit/Unit/DataTable/ManagerTest.php
@@ -2,10 +2,8 @@
namespace Piwik\Tests\Unit\DataTable;
-use Piwik\Config;
use Piwik\DataTable\Manager;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
/**
* @group DataTable
diff --git a/tests/PHPUnit/Unit/DataTable/MapTest.php b/tests/PHPUnit/Unit/DataTable/MapTest.php
index e21147f240..03639f24f7 100644
--- a/tests/PHPUnit/Unit/DataTable/MapTest.php
+++ b/tests/PHPUnit/Unit/DataTable/MapTest.php
@@ -2,11 +2,9 @@
namespace Piwik\Tests\Unit\DataTable;
-use Piwik\Config;
use Piwik\DataTable\Manager;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Tests\Framework\Mock\TestConfig;
/**
* @group DataTableTest
diff --git a/tests/PHPUnit/Unit/DataTableTest.php b/tests/PHPUnit/Unit/DataTableTest.php
index 57b5297910..e0fc18b7f4 100644
--- a/tests/PHPUnit/Unit/DataTableTest.php
+++ b/tests/PHPUnit/Unit/DataTableTest.php
@@ -14,7 +14,6 @@ use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Date;
use Piwik\Timer;
-use Symfony\Component\VarDumper\Cloner\Data;
/**
* @group DataTableTest
diff --git a/tests/PHPUnit/Unit/FilesystemTest.php b/tests/PHPUnit/Unit/FilesystemTest.php
index 4913ee0844..3c27985b83 100644
--- a/tests/PHPUnit/Unit/FilesystemTest.php
+++ b/tests/PHPUnit/Unit/FilesystemTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Unit;
use Piwik\Filesystem;
use Piwik\Tests\Framework\Mock\File;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* @group Core
diff --git a/tests/PHPUnit/Unit/Period/RangeTest.php b/tests/PHPUnit/Unit/Period/RangeTest.php
index e817f1bd7e..bbb0873b87 100644
--- a/tests/PHPUnit/Unit/Period/RangeTest.php
+++ b/tests/PHPUnit/Unit/Period/RangeTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Unit\Period;
use Exception;
use Piwik\Date;
-use Piwik\Period;
use Piwik\Period\Month;
use Piwik\Period\Range;
use Piwik\Period\Week;
diff --git a/tests/PHPUnit/Unit/Period/WeekTest.php b/tests/PHPUnit/Unit/Period/WeekTest.php
index 771a407440..5e5ff54ef7 100644
--- a/tests/PHPUnit/Unit/Period/WeekTest.php
+++ b/tests/PHPUnit/Unit/Period/WeekTest.php
@@ -155,7 +155,7 @@ class WeekTest extends BasePeriodTest
{
return array(
array('en', array('week October 7 – 13, 2024', 'week November 25 – December 1, 2024', 'week December 30, 2024 – January 5, 2025')),
- array('es', array('semana 7–13 de octubre de 2024', 'semana 25 de noviembre–1 de diciembre de 2024', 'semana 30 de diciembre de 2024–5 de enero de 2025')),
+ array('es', array('semana 7–13 de octubre de 2024', 'semana 25 de noviembre – 1 de diciembre de 2024', 'semana 30 de diciembre de 2024 – 5 de enero de 2025')),
array('lt', array('savaitė 2024 spalio 7–13', 'savaitė 2024 lapkričio 25 – gruodžio 1', 'savaitė 2024 gruodžio 30 – 2025 sausio 5')),
array('zh-cn', array('周 2024年10月7日至13日', '周 2024年11月25日至12月1日', '周 2024年12月30日至2025年01月5日')),
);
diff --git a/tests/PHPUnit/Unit/PeriodTest.php b/tests/PHPUnit/Unit/PeriodTest.php
index 2b7f4c6275..dae057c732 100644
--- a/tests/PHPUnit/Unit/PeriodTest.php
+++ b/tests/PHPUnit/Unit/PeriodTest.php
@@ -14,7 +14,6 @@ use Piwik\Period;
use Piwik\Period\Month;
use Piwik\Period\Week;
use Piwik\Period\Year;
-use Piwik\Translation\Translator;
/**
* @group Core
diff --git a/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php b/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php
index 6d4b41dfd6..a59d204dc3 100644
--- a/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php
+++ b/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Unit\Report;
use Piwik\Plugin\Report;
use Piwik\Report\ReportWidgetConfig;
use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetConfig;
use Piwik\Widget\WidgetContainerConfig;
class GetBasicReport extends Report
diff --git a/tests/PHPUnit/Unit/Scheduler/TimetableTest.php b/tests/PHPUnit/Unit/Scheduler/TimetableTest.php
index 2d930b0d06..62aeb71a63 100644
--- a/tests/PHPUnit/Unit/Scheduler/TimetableTest.php
+++ b/tests/PHPUnit/Unit/Scheduler/TimetableTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Unit\Scheduler;
use Piwik\Date;
-use Piwik\Plugin;
use Piwik\Scheduler\Task;
use Piwik\Scheduler\Timetable;
use Piwik\Tests\Framework\Mock\PiwikOption;
diff --git a/tests/PHPUnit/Unit/Translation/FilesTest.php b/tests/PHPUnit/Unit/Translation/FilesTest.php
index ad41a3fba4..e9687c3a9a 100644
--- a/tests/PHPUnit/Unit/Translation/FilesTest.php
+++ b/tests/PHPUnit/Unit/Translation/FilesTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Unit\Translation\Loader;
-use Piwik\Translation\Loader\JsonFileLoader;
-use Piwik\Translation\Translator;
/**
* @group Translation
diff --git a/tests/PHPUnit/bootstrap.php b/tests/PHPUnit/bootstrap.php
index 961627e5ac..589606864f 100644
--- a/tests/PHPUnit/bootstrap.php
+++ b/tests/PHPUnit/bootstrap.php
@@ -1,8 +1,6 @@
<?php
use Piwik\Application\Environment;
-use Piwik\Container\StaticContainer;
-use Piwik\Http;
use Piwik\Intl\Locale;
use Piwik\Config;
use Piwik\SettingsPiwik;
diff --git a/tests/UI/expected-screenshots/Menus_mobile_top.png b/tests/UI/expected-screenshots/Menus_mobile_top.png
index a173dc3054..d805ea9e7b 100644
--- a/tests/UI/expected-screenshots/Menus_mobile_top.png
+++ b/tests/UI/expected-screenshots/Menus_mobile_top.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d5b18d38809efa5cf2049e16bbfbb678881935a2989ef6520e1536017803f4c4
-size 175268
+oid sha256:3934ce1630db57efd1094686bf0776b21ebe87789040b58e6fcbbfa363c28734
+size 176190
diff --git a/tests/UI/expected-screenshots/QuickAccess_initially.png b/tests/UI/expected-screenshots/QuickAccess_initially.png
index aec4519b98..dc99ba2caa 100644
--- a/tests/UI/expected-screenshots/QuickAccess_initially.png
+++ b/tests/UI/expected-screenshots/QuickAccess_initially.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e3e6e666388d6f4f88c6d1fb2e7fddc2a29db1d71c21e90da3ac87a5f2babd11
-size 708
+oid sha256:f4127486c81e6f48be2c5fe849fa78d1ba3a72b67f1773e92d3f5fe28da2e18c
+size 1385
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_1.png b/tests/UI/expected-screenshots/QuickAccess_search_1.png
index 895191d38f..16471eafbe 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_1.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_1.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a04a68423308765304ca4305beac97456fd0ae1481275c195df0beb54e2439d8
-size 98090
+oid sha256:c421277982a6862b7719b827f831e4c79578dc85963ad8927f598b11b25468d9
+size 100341
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_2.png b/tests/UI/expected-screenshots/QuickAccess_search_2.png
index 1c1e32984f..b647a5e2a1 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_2.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_2.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e106c8d8150e62cecfa5a44c46811c29cc3f4fc1c1146368868cbfcc4afb64af
-size 13595
+oid sha256:44504ae03c9470306183fc2b73adee22effd6a558586ccf3e15b6f0c6e0af98f
+size 14265
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_category.png b/tests/UI/expected-screenshots/QuickAccess_search_category.png
index cf82eca9ef..31c68e362d 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_category.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_category.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2e18787f8044686c830662062f3b86994d5783624c67cff1ab2f7c66f9a759d3
-size 11629
+oid sha256:d7bf23a727546c9423716b115eb1298809af3a9f8847ae62cdd9b7d8f9351627
+size 12374
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_no_result.png b/tests/UI/expected-screenshots/QuickAccess_search_no_result.png
index 7716088e1e..ea6c2f1a97 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_no_result.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_no_result.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5a461afcaa44b183d08c5336ca4d73d4233e029a2f3aebdd24c82d890627a3f9
-size 5999
+oid sha256:dea96d2219942c19366ca2721cc47c1fc647186623940a5d1cd1cfe2d5d452b2
+size 6528
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_sites.png b/tests/UI/expected-screenshots/QuickAccess_search_sites.png
index efad6f5af0..3278ba5b73 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_sites.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_sites.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b2e877ec9f6ae4a090de1396ff0949a7f541293d94895b1a850beee28d6501f2
-size 43175
+oid sha256:8716ccc51577dcecbd4c365028882cadc666e66cb4cfc529d40bdd090511258d
+size 43962
diff --git a/tests/UI/expected-screenshots/QuickAccess_shortcut.png b/tests/UI/expected-screenshots/QuickAccess_shortcut.png
index 319a5927a7..13684e9191 100644
--- a/tests/UI/expected-screenshots/QuickAccess_shortcut.png
+++ b/tests/UI/expected-screenshots/QuickAccess_shortcut.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6a8a5bd4e5aaf37be790e29288a8972ced4810a8387bd66d75bc7a73d36b1156
-size 238
+oid sha256:35927bf1857ee6e310d17b8f7e1d80889bbefb93cc3b8aceedcea099b51c421b
+size 1358
diff --git a/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png b/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png
index 4102c19458..203522fc17 100644
--- a/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png
+++ b/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:aea6ac0c372c37fa405a7a99e83e270baffa5c5afda8d02ec83380647d7d6e28
-size 222709
+oid sha256:ddaeeef12593c9bcdc21f8872391a0452a1eaeaad41275f35af974d17042e940
+size 223432
diff --git a/tests/UI/expected-screenshots/Theme_home.png b/tests/UI/expected-screenshots/Theme_home.png
index 1b9b03d4cd..6c204bb0fb 100644
--- a/tests/UI/expected-screenshots/Theme_home.png
+++ b/tests/UI/expected-screenshots/Theme_home.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6e485e5fecb31825071259af175a969ad027b9c459a91a1339173e406d8890f6
-size 735341
+oid sha256:8f35431c0bfbbc58ac1568b26cb34458fc5704e15f415edb76300b58655ed388
+size 736134
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
index 089edb3f4a..93cf2651a4 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4ae113cdc5851cd0bf1edb88cb1d1a5fcc2f55e329ae5dd58b033498e3823561
-size 5247563
+oid sha256:fb0a9ad37e3436aabee498313256316efc8f2d567688f447b2821b811799c5d4
+size 5255902
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard5_mobile.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard5_mobile.png
index 830fb14b42..7b571d1805 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard5_mobile.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard5_mobile.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:016ea334e800778ab3b918bc1bfde7109d954029abbfaf1254bfd99d07a29839
-size 28288
+oid sha256:0449f3e15348d9b2d13988a4b3aac47d223a53cf55f667a50f7c59879bcf4e61
+size 28964
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png b/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png
index ce92fa62e6..326750797b 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:138f85c40e777ba2b9e4033fb208f24dacfb22269027be347b0fac445a52fa92
-size 78672
+oid sha256:e76c06924a9f9ad5c65ea00efb2d431e36aab88bb4945098b825fcdbe8cf70cc
+size 79529
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png
index f346d77b15..95762e14e4 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d67324ecbecb2899725e16967b6906dd0d47408560596bf09e345c167859867d
-size 108253
+oid sha256:e824fad61f4707ad74d1cd160b5d2a71d2270b99903c415151a23b06bab93fd3
+size 108970
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_allwebsites.png b/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_allwebsites.png
index 0d06f31a16..a9d9e4f81c 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_allwebsites.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_allwebsites.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0853cfabdeff88b1e366f6f225457ff773b4aebdf91c09dc2d7637e440661e31
-size 69405
+oid sha256:4a29d1d90e9e5d4df2ef4fbf2df7a651302293885c8514078efda500f73ed096
+size 69516
diff --git a/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png b/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png
index 267b226055..40d66b2512 100644
--- a/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png
+++ b/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:24b09d471463370f8639b563e03990ec3cae30f9e3dff63606a67246883bb976
-size 233087
+oid sha256:933b72fb6f7bcd912977611444628bb615730b48a735dc907838f048d1f13458
+size 233877
diff --git a/vue.config.js b/vue.config.js
index 3077d83415..2ec902126e 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -23,6 +23,7 @@ if (!process.env.MATOMO_CURRENT_PLUGIN) {
console.log("The MATOMO_CURRENT_PLUGIN environment variable is not set!");
}
+const srcPath = `plugins/${process.env.MATOMO_CURRENT_PLUGIN}/vue/src/`;
const publicPath = `plugins/${process.env.MATOMO_CURRENT_PLUGIN}/vue/dist/`;
// hack to get publicPath working for lib build target (see https://github.com/vuejs/vue-cli/issues/4896#issuecomment-569001811)
@@ -54,8 +55,10 @@ OutputDetectedDependentPluginsPlugin.prototype.apply = function (compiler) {
const metadata = {
dependsOn: detectedDependentPlugins,
};
- fs.mkdirSync(path.dirname(metadataPath), { recursive: true });
- fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
+ if (fs.existsSync(path.join(srcPath))) {
+ fs.mkdirSync(path.dirname(metadataPath), {recursive: true});
+ fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
+ }
});
};